kubectl scale操作中replicas字段的管理字段异常问题问询
Kubernetes Deployment replicas字段所有权问题分析
版本信息
客户端:"v1.25.13" 服务端:"v1.26.8" 同时在以下版本中测试: 客户端:v1.29.1 服务端:v1.28.4
操作背景
我创建了一个Deployment,按指定顺序执行kubectl scale和kubectl edit操作,所有观察结果与问题均针对replicas字段。
操作步骤与观察结果
- apply操作:yaml中未指定
replicas,采用默认值1;该字段仍为被kubectl-client-side-apply和kube-controller-manager管理的托管字段 - 从1扩缩容至3:由
kube-controller-manager和kubectl的scale子资源管理 - 从3扩缩容至0:无所有权,处于非托管状态
- 从0扩缩容至1:仅由
kube-controller-manager拥有所有权 - edit操作从1修改至0:仅由
kubectl-edit拥有所有权 - 从0扩缩容至1:由
kube-controller-manager和kubectl的scale子资源拥有所有权 - 从1扩缩容至0:无所有权,处于非托管状态
- edit操作从0修改至1:由
kube-controller-manager和kubectl-edit拥有所有权
问题
Q1. 在步骤(2)中,为何kubectl-client-side-apply的所有权会被撤销?
Q2. 步骤(3)的行为看似异常,是否意味着replicas=0时不应被拥有所有权?replicas=0有何特殊之处?
Q3. 在步骤(4)中,为何该字段未同时被带有scale子资源的kubectl拥有所有权?
Q4. 与步骤(3)中使用kubectl scale将replicas设为0时无所有权的情况不同,步骤(5)中使用kubectl edit设为0时为何仅由kubectl-edit拥有所有权?
Q5. 与步骤(4)相比,步骤(6)中kubectl edit和kubectl scale操作有何差异导致结果不同?
参考YAML配置
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: demo-pvc-claim namespace: demo labels: app: nginx spec: storageClassName: nutanix-volume accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: clear-nginx-deployment namespace: demo spec: selector: matchLabels: app: clear-nginx template: metadata: labels: app: clear-nginx spec: containers: - name: clear-nginx image: clearlinux/nginx volumeMounts: - mountPath: /var/www/html name: site-data ports: - containerPort: 80 volumes: - name: site-data persistentVolumeClaim: claimName: demo-pvc-claim
内容的提问来源于stack exchange,提问作者subtleseeker
相关产品推荐
相关产品推荐

