其他分享
首页 > 其他分享> > 使用 kubectl patch 修改 Kubernetes objects

使用 kubectl patch 修改 Kubernetes objects

作者:互联网

为了能够修改Kubernetes对象,我们可以使用kubectl edit以交互方式进行修改。如果我们需要测试值,它可以派上用场,但它使自动化变得更加困难。如果我们需要一种使用非交互式命令更改Kubernetes对象的方法,kubectl patch是我们的最佳选择。

为了能够在脚本模式下修改Kubernetes对象,我们需要告诉kubectl我们要设置哪些字段。例如,如果我们想添加一个顶级条目,例如allowVolumeExpansion,以便能够调整EBS支持的PVC的大小:

$ kubectl get sc gp2 -o yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  (...)
  name: gp2
parameters:
  fsType: ext4
  type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

使用-p 选项定义 需要添加的对象

$ kubectl patch sc gp2 -p '{"allowVolumeExpansion": true}'
storageclass.storage.k8s.io/gp2 patched

如果需要修改具有更多级别的值,则必须将所有级别都包含到补丁中。例如,以下定义使用不同的spec.resources.requests.storage:

$ kubectl get pvc demopvc -o yaml
(...)
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
(...)

我们必须定义整个路径以达到我们想要更改的值:

$ kubectl patch pvc demopvc -p '{"spec": {"resources": {"requests": {"storage": "20Gi"}}}}'
persistentvolumeclaim/demopvc patched

再次使用kubectl get pvc检查对象,我们将能够看到它是如何成功修补的:

$ kubectl get pvc demopvc -o yaml
(...)
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
(...)

标签:kubectl,Kubernetes,...,storage,patch,spec,gp2
来源: https://www.cnblogs.com/faberbeta/p/16646362.html