【发布时间】:2021-05-25 20:07:45
【问题描述】:
您好,我一直在学习 Kubernetes,但是在 YAML 文件中,我发现 k8s-app 作为标签,但是在寻找答案时,我真的没有找到准确的答案。 如果有人知道 YAML 文件帮助中的 k8s-app 代表什么。
【问题讨论】:
标签: kubernetes yaml
您好,我一直在学习 Kubernetes,但是在 YAML 文件中,我发现 k8s-app 作为标签,但是在寻找答案时,我真的没有找到准确的答案。 如果有人知道 YAML 文件帮助中的 k8s-app 代表什么。
【问题讨论】:
标签: kubernetes yaml
它不代表任何东西;这只是一个较旧的约定,已被 new app.kubernetes.io/ nomenclature 取代
旧样式很可能被新的“命名空间”样式所取代,以允许用户拥有自己的 k8s-app: 或 instance: 或其他“通用”名称,而不会与部署控制器用于管理的标签发生冲突Pod 生命周期
tl;dr = 文本是什么并不重要,重要的是文本在引用它的多个位置匹配,因为这些标签是几个移动部分之间的合同
【讨论】:
基本上,标签是我们可以赋予 k8s 对象的键/值对。通过使用标签,我们可以识别对象的属性,也可以通过选择器选择这些对象。例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
另一方面,您基本上可以在标签中设置 6 个字段,字段是:
apiVersion:
kind:
metadata:
labels:
app.kubernetes.io/name:
app.kubernetes.io/instance:
app.kubernetes.io/version:
app.kubernetes.io/managed-by:
app.kubernetes.io/component:
app.kubernetes.io/part-of:
每个对象都应该有一个由app.kubernetes.io/name表示的唯一名称,它还可以有一个instance标签、一个version、一个who manages the object、一个component type和一个part of what对象.这些标签以前用过,现在不常用了。
来自k8s官方doc,WordPress使用如下Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: wordpress
app.kubernetes.io/instance: wordpress-abcxzy
app.kubernetes.io/version: "4.9.4"
app.kubernetes.io/managed-by: helm
app.kubernetes.io/component: server
app.kubernetes.io/part-of: wordpress
【讨论】: