kubectl 命令修补 kubernetes 存储类中的特定属性

Ash*_*ley 3 kubernetes

我有以下 Kubernetes 存储类

Name:            encrypted-gp2
IsDefaultClass:  No
Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"encrypted-gp2"},"parameters":{"encrypted":"true","fsType":"ext4","type":"gp2"},"provisioner":"kubernetes.io/aws-ebs","volumeBindingMode":"WaitForFirstConsumer"}

Provisioner:           kubernetes.io/aws-ebs
Parameters:            encrypted=true,fsType=ext4,type=gp2
AllowVolumeExpansion:  True
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     WaitForFirstConsumer
Events:                <none>
Run Code Online (Sandbox Code Playgroud)

现在我只想为 ReclaimPolicy 属性修补这个存储类,以便 ReclaimPolicy 切换到 Retain

在这种情况下,我正在寻找特定的补丁命令。

Ric*_*ico 5

这将是简短而简单的:

kubectl patch sc encrypted-gp2 -p '{"ReclaimPolicy":"Retain"}'
Run Code Online (Sandbox Code Playgroud)

但是 StorageClass 是不可变的,因此您必须创建一个新的:

$ kubectl get sc encrypted-gp2 -o=yaml > sc.yaml
Run Code Online (Sandbox Code Playgroud)

编辑sc.yaml并更改回收策略 ?。然后:

$ kubectl replace -f sc.yaml --force 
Run Code Online (Sandbox Code Playgroud)