Kubernetes YAML 文件中名称键的区别

huangapple go评论58阅读模式
英文:

Difference between name keys in kubernetes yaml file

问题

metadata字段和spec字段中的name值在Kubernetes中有不同的含义:

  1. metadata字段中的name: echo-job

    • 这是Job对象的元数据(metadata)字段的一部分。
    • 该字段定义了Job对象的元数据,例如名称(name)和其他描述性信息。
    • 在这种情况下,name字段的值是"echo-job",表示该Job对象的名称是"echo-job"。
  2. spec字段中的template字段中的metadata字段中的name: echo

    • 这是Job对象规范(spec)的一部分。
    • 该字段定义了Job对象所要创建的Pod的模板(template)。
    • 在这种情况下,name字段的值是"echo",表示该Job对象创建的Pod的名称将是"echo"。

简而言之,metadata字段中的name用于定义Job对象本身的名称,而spec字段中的template字段中的metadata字段中的name用于定义Job对象创建的Pod的名称。这两个名称可以不同,允许在Kubernetes中为Job对象和其创建的Pod分别指定不同的名称。

英文:
apiVersion: batch/v1
kind: Job
metadata:
  name: echo-job
spec:
  template:
    metadata:
      name: echo
    spec:
      containers:
      - name: echo
        image: busybox
        command: ['echo', 'Hello Kubernetes Jobs!']
      restartPolicy: Never
  backoffLimit: 4

Can someone please explain to me what is the difference between the following two fields:
metadata:
name: echo-job

and
spec:
template:
metadata:
name: echo

What do these two different values represent?

答案1

得分: 3

metadata.name 是工作的名称。

spec.template.metadata.name 是由工作创建的 Pod 的名称(还会附加一个随机后缀)。

如果我提交您的清单,我们会看到工作:

$ kubectl get job
名称        完成数   持续时间   年龄
echo-job   1/1      4秒       14秒

然后我们会看到用于运行工作的 Pod:

$ kubectl get pod
名称             就绪    状态        重启次数   年龄
echo-job-q9jxq   0/1    已完成      0          51秒

如果工作失败,单个工作可能会创建多个 Pod。例如,如果我们将您的 echo 命令替换为 ["sh", "-c", "exit 1"],我们可能会看到:

名称             就绪    状态    重启次数   年龄
echo-job-2n9qt   0/1    错误    0          2秒
echo-job-hw5wj   0/1    错误    0          22秒
echo-job-n44ql   0/1    错误    0          33秒
英文:

metadata.name is the name of the job.

spec.template.metadata.name is the name of the pod created by the job (which will also have a random suffix appended).

If I submit your manifest, we see the Job:

$ kubectl get job
NAME       COMPLETIONS   DURATION   AGE
echo-job   1/1           4s         14s

And we see the Pod created to run the Job:

$ kubectl get pod
NAME             READY   STATUS      RESTARTS   AGE
echo-job-q9jxq   0/1     Completed   0          51s

A single Job may end up creating multiple Pods if the Job fails. For example, if we replace your echo command with ["sh", "-c", "exit 1"], we might see:

NAME             READY   STATUS   RESTARTS   AGE
echo-job-2n9qt   0/1     Error    0          2s
echo-job-hw5wj   0/1     Error    0          22s
echo-job-n44ql   0/1     Error    0          33s

huangapple
  • 本文由 发表于 2023年6月5日 19:05:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/76405807.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定