来自 运行 pod 的 kubernetes,通过 -o yaml 仅获取必需的元素
kubernetes from a running pod, get only required elements via -o yaml
一般在kubernetes中我们可以创建定义文件。对于非 运行 和 运行 pods、名称空间、部署等。如果我们为非 运行 和不存在的 pods 生成 yaml 文件,它会创建所需的定义文件.但是,如果我们必须从 运行 pod 获取定义文件,它也会生成很多实时环境的标签。
如何在我们从 运行 pod
生成 yaml 定义时仅获取必需的元素
在我们从 运行 pod
生成 pod yaml 文件后,有什么办法可以避免获取以下详细信息
例如,如果我们看到在下面的命令 运行 之后,它还会生成很多不需要的元素。
k get po nginxs14 -n=devs14 -o yaml>pod1.yaml
like:
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"creationTimestamp":null,"labels":{"run":"nginx"},"name":"nginxs14","namespace":"devs14"},"
creationTimestamp: "2021-04-24T11:09:56Z"
labels:
run: nginx
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:run: {}
f:spec:
f:containers:
k:{"name":"nginx"}:
.: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":9080,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:protocol: {}
f:readinessProbe:
.: {}
f:failureThreshold: {}
f:httpGet:
.: {}
f:path: {}
f:port: {}
f:scheme: {}
f:periodSeconds: {}
f:successThreshold: {}
f:timeoutSeconds: {}
f:resources: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:enableServiceLinks: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
manager: kubectl-client-side-apply
operation: Update
time: "2021-04-24T11:09:56Z"
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:conditions:
k:{"type":"ContainersReady"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Initialized"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:status: {}
f:type: {}
k:{"type":"Ready"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:containerStatuses: {}
f:hostIP: {}
f:phase: {}
f:podIP: {}
f:podIPs:
.: {}
after running below command it also generates lot of not required elements
您描述的问题很大一部分是managedFields:
。我同意这是非常冗长且最烦人的输出。
不过,这个问题现在已经解决了。如果您升级到 kubectl
版本 1.21+,则为 not shown as default。现在您需要添加 --show-managed-fields
来显示这些字段。
一般在kubernetes中我们可以创建定义文件。对于非 运行 和 运行 pods、名称空间、部署等。如果我们为非 运行 和不存在的 pods 生成 yaml 文件,它会创建所需的定义文件.但是,如果我们必须从 运行 pod 获取定义文件,它也会生成很多实时环境的标签。
如何在我们从 运行 pod
生成 yaml 定义时仅获取必需的元素在我们从 运行 pod
生成 pod yaml 文件后,有什么办法可以避免获取以下详细信息例如,如果我们看到在下面的命令 运行 之后,它还会生成很多不需要的元素。
k get po nginxs14 -n=devs14 -o yaml>pod1.yaml
like:
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"creationTimestamp":null,"labels":{"run":"nginx"},"name":"nginxs14","namespace":"devs14"},"
creationTimestamp: "2021-04-24T11:09:56Z"
labels:
run: nginx
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:run: {}
f:spec:
f:containers:
k:{"name":"nginx"}:
.: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":9080,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:protocol: {}
f:readinessProbe:
.: {}
f:failureThreshold: {}
f:httpGet:
.: {}
f:path: {}
f:port: {}
f:scheme: {}
f:periodSeconds: {}
f:successThreshold: {}
f:timeoutSeconds: {}
f:resources: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:enableServiceLinks: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
manager: kubectl-client-side-apply
operation: Update
time: "2021-04-24T11:09:56Z"
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:conditions:
k:{"type":"ContainersReady"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Initialized"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:status: {}
f:type: {}
k:{"type":"Ready"}:
.: {}
f:lastProbeTime: {}
f:lastTransitionTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:containerStatuses: {}
f:hostIP: {}
f:phase: {}
f:podIP: {}
f:podIPs:
.: {}
after running below command it also generates lot of not required elements
您描述的问题很大一部分是managedFields:
。我同意这是非常冗长且最烦人的输出。
不过,这个问题现在已经解决了。如果您升级到 kubectl
版本 1.21+,则为 not shown as default。现在您需要添加 --show-managed-fields
来显示这些字段。