我在使用 kubectl 和 --dry-run 时遇到了奇怪的问题。
为了简化,假设我有以下的 yaml 文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: nginx
name: nginx
spec:
replicas: 3
selector:
matchLabels:
run: nginx
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
containers:
- image: nginxsdf
imagePullPolicy: Always
name: nginx
例如,修改图像或副本数量:
kubectl apply -f Deployment.yaml -o yaml --dry-run
输出具有旧规格的资源kubectl apply -f Deployment.yaml -o yaml
输出具有新规格的资源
根据文档:
--dry-run=false:如果为 true,则仅打印将发送而不发送的对象。
但是,打印的对象是旧对象,而不是将要发送到 ApiServer 的对象。
已在 minikube、gke v1.10.0 上测试。
同时我在 GitHub 上开了一个新问题:
create
方法时不会出现这种行为,输出结果也是预期的。我已经在 GitHub 上创建了一个问题报告。 - GalloCedroneapply
的三路合并语义在这里会产生奇怪的副作用,但我们拭目以待 ;) - Michael Hausenblas