StorageClassのデフォルトを変更

KubernetesでPersistent Volumeを作成する場合,マニフェストでPersistent VolumeのStorage Classを指定しないとデフォルトのStorage Classが選択される.この記事では新たにStorage Classを導入し,デフォルトのStorage Classを変更する.

環境

$ kubectl get nodes
NAME         STATUS   ROLES                       AGE    VERSION
kushida001   Ready    control-plane,etcd,master   384d   v1.22.6+rke2r1
kushida002   Ready    control-plane,etcd,master   384d   v1.22.6+rke2r1
kushida003   Ready    control-plane,etcd,master   384d   v1.22.6+rke2r1

手順

Storge Classの一覧を取得する.現状のデフォルトはlonghornである.これをlocal-pathへ変更する.

$ kubectl get storageclass
NAME                 PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path           rancher.io/local-path   Delete          WaitForFirstConsumer   false                  6m
longhorn (default)   driver.longhorn.io      Delete          Immediate              true                   108d

longhornのデフォルトを解除する.

$ kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
storageclass.storage.k8s.io/longhorn patched

local-pathへデフォルトを設定する.

$ kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/local-path patched

設定を確認する.適切にStorage Classのデフォルトがlonghornからlocal-pathへ変更された.

$ kubectl get storageclass
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  19m
longhorn               driver.longhorn.io      Delete          Immediate              true                   108d

参考資料