定义Kubernetes命名空间和标签的最佳实践

时间:2018-03-06 13:56:49

标签: kubernetes

我正在寻找一些关于在Kubernetes集群中构造名称空间的好例子,以及一种标记我的pod以实现长期可维护性的适当方法。

您能否推荐一些资源,或者来自实际应用程序的示例,这些应用程序遵循一些可靠的实践?

2 个答案:

答案 0 :(得分:4)

一个很好的起点是Ahmet Alp Balkan的资源" kubernetes-network-policy-recipes"。

https://github.com/ahmetb/kubernetes-network-policy-recipes/raw/master/img/1.gif

您可以看到examples of labels就像只允许流量到应用程序端口的那个:

https://github.com/ahmetb/kubernetes-network-policy-recipes/raw/712388dccdf9f9cbb6b9683c4e7564b6569d5060/img/9.gif

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: api-allow-5000
spec:
  podSelector:
    matchLabels:
      app: apiserver
  ingress:
  - ports:
    - port: 5000
    from:
    - podSelector:
        matchLabels:
          role: monitoring

这有助于说明一个好的标签政策,即帮助您使用案例的政策(即:您尝试做的网络政策)

答案 1 :(得分:2)

命名空间:

  • 我建议按名称空间对“可以完全删除的资源”进行资源分组。

  • 最值得注意的是,Kubernetes策略对象(如RBAC,PodSecurityPolicy,NetworkPolicy,ResourceQuota)是每个命名空间。因此,“命名空间”通常用于组织/团队边界。

标签:

  • 这些可以应用于任何类型的对象(包括名称空间)
  • 考虑表示对象逻辑分组的标签。
  • 例如,您可以为启用此应用的所有功能({Pod,Service,Secret)拥有一个app=paymentservice标签
  • 您还可以使用标签来表示:
    • 版本/提交编号:gitcommit=235ab3f
    • 目的(在测试名称空间等时特别有用)purpose=testing
    • 组织边界(同样,对于命名空间)team=payments