k8s-app 标签代表什么?以及如何使用它?

nes*_*Haf 5 yaml kubernetes

您好,我一直在学习 Kubernetes,但在 YAML 文件中我发现 k8s-app 作为标签,但在寻找答案时我确实没有找到准确的答案。如果有人有 k8s-app 在 YAML 文件中代表什么的帮助,请帮忙。

mda*_*iel 6

它不代表任何东西;这只是一个旧的约定,已被新的app.kubernetes.io/术语所取代

旧样式可能被新的“命名空间”样式所取代,以允许用户拥有自己的k8s-app:instance:其他“通用”名称,而不会与部署控制器用于管理 Pod 生命周期的标签发生冲突

tl;dr = 文本是什么并不重要,重要的是文本在引用它的多个位置匹配,因为这些标签是几个移动部分之间的合同


Sah*_*ain 2

基本上,标签是我们可以赋予 k8s 对象的键/值对。通过使用标签,我们可以识别对象的属性,也可以通过选择器选择这些对象。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
Run Code Online (Sandbox Code Playgroud)

另一方面,您基本上可以在标签中设置 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:
Run Code Online (Sandbox Code Playgroud)

每个对象都应该有一个唯一的名称,用 表示,app.kubernetes.io/name它还可以有一个instance标签, a version, a who manages the object, a component type,并且一个part of what对象是。这些标签以前用过,但现在不常用了。

从 k8s 官方文档来看,以下 Deployment 用于 WordPress:

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
Run Code Online (Sandbox Code Playgroud)