Gal*_*one 6 kubernetes kubectl minikube kubernetes-apiserver
我正在使用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
Run Code Online (Sandbox Code Playgroud)
修改例如图像或副本数:
kubectl apply -f Deployment.yaml -o yaml --dry-run向我输出具有OLD规范的资源
kubectl apply -f Deployment.yaml -o yaml向我输出具有新规范的资源
根据文档:
--dry-run = false:如果为true,则仅打印将要发送的对象,而不发送它。
但是,打印的对象是旧对象,而不是将被发送到ApiServer的对象。
在minikube,gke v1.10.0上测试
同时,我为此打开了一个新的gitHub问题:
我在 kubernetes 问题页面中得到了以下答案:
更新现有对象时,kubectl apply 不会发送整个对象,只是一个补丁。在试运行模式下打印现有对象或新对象并不完全正确……合并的结果是应该打印的结果。
为了让 kubectl 能够准确地反映应用的结果,它需要有服务器端应用逻辑客户端,这是一个非目标。
当前的努力旨在将应用逻辑移至服务器。作为其中的一部分,增加了试运行服务器端的能力。
kubectl apply --server-dry-run会做你想做的事,打印应用合并的结果,而不实际坚持它。@apelisse 我们可能应该更新应用的标志帮助,并可能在通过应用更新对象时使用 --dry-run 时打印警告以记录 --dry-run 的限制并指导人们使用 --server-dry-跑
小智 6
最新版本的客户端使用:
kubectl apply -f Deployment.yaml --dry-run=server
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |