Kubectl 获取部署 yaml 文件

问题描述 投票:0回答:2

我知道如何列出特定命名空间的 pod,如下所示:

kubectl get pods -n mynamespace

清单上有一个我感兴趣的

POD
。我希望能够看到使用什么
yaml
部署文件来创建该 pod 及其内容。此外,编辑此类
kubectl
文件的
yaml
命令是什么?

kubernetes kubectl
2个回答
4
投票

要获取用于生成 pod 的部署,必须查看 pod yaml 或描述 pod:

kubectl get pod -n {namespace} {pod-name} -o yaml

查找“

ownerReferences
”部分。这将告诉您什么“拥有”该 Pod。这可能是一个 ReplicaSet(由 Deployment 生成)。例如,这是我的 canonical-service-controller-manager pod 中的一个:

$ kubectl get  pod -n asm-system canonical-service-controller-manager-67c8f5fff5-dzd4t -o yaml
apiVersion: v1
kind: Pod
metadata:
  ...
  namespace: asm-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: canonical-service-controller-manager-67c8f5fff5
    uid: 2504c96b-9ef7-45fa-b5d2-2a20f09486e1
  resourceVersion: "13507"
  uid: 54748cf7-26f8-4e8a-996a-725dbc89c66b
...

然后您可以找到副本集并执行相同的操作。在我的示例中,副本集称为“

canonical-service-controller-manager-67c8f5fff5

$ kubectl get replicaset -n asm-system canonical-service-controller-manager-67c8f5fff5 -o yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  annotations:
    ...
  generation: 1
  labels:
    ...
  name: canonical-service-controller-manager-67c8f5fff5
  namespace: asm-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: Deployment
    name: canonical-service-controller-manager
    uid: eafe2590-5005-492f-9673-0f02ac74a4d5
spec:
  replicas: 1
  ...

所以你可以在这里看到,创建副本集的部署,进而创建了我的 pod 是

canonical-service-controller-manager

现在我可以使用

获取部署yaml
$ kubectl get deployment -n asm-system canonical-service-controller-manager -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    ...
  creationTimestamp: "2022-06-14T06:35:58Z"
  generation: 1
  labels:
    ...
  name: canonical-service-controller-manager
  namespace: asm-system
spec:
  ...

如果我想编辑部署,我可以使用以下命令:

kubectl edit deployment -n asm-system canonical-service-controller-manager

请记住,编辑部署将循环部署中的所有 Pod,因为它们都是副本。


1
投票

要获取 yaml 文件,请尝试

kubectl get deploy deploymentname -o yaml
要使用新的 yaml 文件更新 pod,请首先查找并编辑 yaml 文件,或者复制内容并进行所需的更改,然后运行:
kubectl apply -f newDeployment.yaml
使用您的更改更新集群。

© www.soinside.com 2019 - 2024. All rights reserved.