我试图在Azure Kubernetes服务中设置一个新的默认存储类。(1.15.10)。我试过几件事,但这种行为对我来说很奇怪。
我已经创建了一个新的存储类custom,将其设置为默认存储类,然后从default存储库中删除is- default类。
默认存储-class.yml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: custom
parameters:
cachingmode: ReadOnly
kind: Managed
storageaccounttype: Standard_LRS
provisioner: kubernetes.io/azure-disk
reclaimPolicy: Delete
volumeBindingMode: Immediate以及命令:
# create new storage class "custom"
kubectl apply -f ./default-storage-class.yml
# set storageclass as new default
kubectl patch storageclass custom -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
# remove default storage class from default
kubectl patch storageclass default -p '{"metadata": {"annotations":{"storageclass.beta.kubernetes.io/is-default-class":"false"}}}'一开始,它似乎运转良好:
$kubectl get sc
custom (default) kubernetes.io/azure-disk 6d23h
default kubernetes.io/azure-disk 14m但在一分钟内,没有改变任何东西:
$kubectl get sc
custom (default) kubernetes.io/azure-disk 6d23h
default (default) kubernetes.io/azure-disk 16m我可能漏掉了什么,但不知道是什么。
如果我在一分钟内做了一个kubectl describe sc default,它不会变回来:
storageclass.beta.kubernetes.io/is-default-class=false,storageclass.kubernetes.io/is-default-class=false过了一会儿:
storageclass.beta.kubernetes.io/is-default-class=true,storageclass.kubernetes.io/is-default-class=false发布于 2020-06-25 03:54:08
经过大量的测试后,发现使默认为非默认的唯一方法是不仅更新storageclass.beta.kubernetes.io/is-default-class注释,还更新kubectl.kubernetes.io/last-applied-configuration注释。
kubectl patch storageclass default -p '{"metadata": {"annotations":{"storageclass.beta.kubernetes.io/is-default-class":"false", "kubectl.kubernetes.io/last-applied-configuration": "{\"allowVolumeExpansion\":true,\"apiVersion\":\"storage.k8s.io/v1beta1\",\"kind\":\"StorageClass\",\"metadata\":{\"annotations\":{\"storageclass.beta.kubernetes.io/is-default-class\":\"false\"},\"labels\":{\"kubernetes.io/cluster-service\":\"true\"},\"name\":\"default\"},\"parameters\":{\"cachingmode\":\"ReadOnly\",\"kind\":\"Managed\",\"storageaccounttype\":\"StandardSSD_LRS\"},\"provisioner\":\"kubernetes.io/azure-disk\"}"}}}'应用此方法后,默认StorageClass将保持非默认状态。
发布于 2020-05-26 15:56:09
遵循以下步骤
YAML中的
kubectl get sc default > default-sc.yaml只需确保步骤3和步骤4之间没有太大的时间间隔,否则在执行步骤4之前,将再次创建默认存储类。
https://stackoverflow.com/questions/62025294
复制相似问题