kubectl 描述结果中未显示 terminationGracePeriodSeconds

terminationGracePeriodSeconds not shown in kubectl describe result

创建指定规范 terminationGracePeriodSeconds 的 Pod,我无法使用 kubectl describe 检查此规范是否已成功应用。如何检查 terminationGracePeriodSeconds 选项是否已成功应用?我是 运行 kubernetes 版本 1.19.

apiVersion: v1
kind: Pod
metadata:
  name: mysql-client
spec:
  serviceAccountName: test
  terminationGracePeriodSeconds: 60
  containers:
  - name: mysql-cli
    image: blah
    command: ["/bin/sh", "-c"]
    args:
      - sleep 2000
  restartPolicy: OnFailure

假设 pod 运行 成功。您应该能够在清单中看到设置。

terminationGracePeriodSeconds 在 v1.19 中可用,如下页所示。在此处搜索“terminationGracePeriodSeconds”。 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/

现在试试这个命令:

kubectl get pod mysql-client -o yaml | grep terminationGracePeriodSeconds -a10 -b10

How can I check whether terminationGracePeriodSeconds option has been successfully applied?

首先,您需要确保您的广告连播已正确创建。我将通过示例向您展示。我已经按照 yaml:

部署了非常简单的 pod
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  terminationGracePeriodSeconds: 60
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

然后我 运行 命令 kubectl get pods:

NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          9m1s

一切都很好。

I can't check whether this spec has been applied successfully using kubectl describe.

这也是正确的,因为此命令不会 return 我们提供有关终止宽限期的信息。要查找此信息,您需要 运行 kubectl get pod <your pod name> 命令。结果将类似于以下内容:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx","ports":[{"containerPort":80}]}],"terminationGracePeriodSeconds":60}}
  creationTimestamp: "2022-01-11T11:34:58Z"
  name: nginx
  namespace: default
  resourceVersion: "57260566"
  uid: <MY-UID>
spec:
  containers:
  - image: nginx:1.14.2
    imagePullPolicy: IfNotPresent
    name: nginx
    ports:
    - containerPort: 80
      protocol: TCP
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: <name>
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: <my-node-name>
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 60
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-nj88r
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2022-01-11T11:35:01Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2022-01-11T11:35:07Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2022-01-11T11:35:07Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2022-01-11T11:35:01Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://<ID>
    image: docker.io/library/nginx:1.14.2
    imageID: docker.io/library/nginx@sha256:<sha256>
    lastState: {}
    name: nginx
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2022-01-11T11:35:06Z"
  hostIP: <IP>
  phase: Running
  podIP: <IP>
  podIPs:
  - ip: <IP>
  qosClass: BestEffort
  startTime: "2022-01-11T11:35:01Z"

最重要的部分在这里:

{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx","ports":[{"containerPort":80}]}],"terminationGracePeriodSeconds":60}}

这里

  terminationGracePeriodSeconds: 60

此时您确定terminationGracePeriodSeconds应用成功。