【发布时间】:2022-01-03 20:03:03
【问题描述】:
在 Kubernetes 中,将正在运行的 pod manifest 转换为具有 x 个副本的 Deployment 的简单方法是什么?
我尝试获取清单
k get po xyz -o yaml>po1.yaml
然后编辑 yaml 并与部署清单匹配,但似乎并不容易。我在转换时不断出错。
【问题讨论】:
标签: kubernetes kubectl
在 Kubernetes 中,将正在运行的 pod manifest 转换为具有 x 个副本的 Deployment 的简单方法是什么?
我尝试获取清单
k get po xyz -o yaml>po1.yaml
然后编辑 yaml 并与部署清单匹配,但似乎并不容易。我在转换时不断出错。
【问题讨论】:
标签: kubernetes kubectl
dit 不能自动进行,它们是在 pod 提交时计算的几个字段。
但您可以使用yq 来提取 pod 的规范:
k get pod/xyz -o yaml | yq .spec -y > pod-spec.yml
然后您只需将其添加到部署中:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: deployment
name: deployment
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: deployment
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: deployment
spec: <here>
不要忘记从 pod 规范中删除:
volumeMounts 和volume
nodeName还有很多默认字段可以删除。
【讨论】: