CentOS Stream 8
Sponsored Link

MicroK8s : Storage を有効にする2021/04/07

 
MicroK8s ビルトイン の Storage を有効にする場合は以下のように設定します。
[1] プライマリーノードで、ビルトイン Storage を有効にします。
[root@dlp ~]#
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/lib64"

[root@dlp ~]#
microk8s enable storage

Enabling default storage class
deployment.apps/hostpath-provisioner created
storageclass.storage.k8s.io/microk8s-hostpath created
serviceaccount/microk8s-hostpath created
clusterrole.rbac.authorization.k8s.io/microk8s-hostpath created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-hostpath created
Storage will be available soon

# [hostpath-provisioner] pod が起動する

[root@dlp ~]#
microk8s kubectl -n kube-system get pods

NAME                                         READY   STATUS    RESTARTS   AGE
metrics-server-8bbfb4bdb-h6hsr               1/1     Running   0          21m
calico-kube-controllers-847c8c99d-cglw5      1/1     Running   1          144m
calico-node-nlzz4                            1/1     Running   0          41m
coredns-86f78bb79c-nvfqr                     1/1     Running   0          21m
kubernetes-dashboard-7ffd448895-hp574        1/1     Running   0          21m
dashboard-metrics-scraper-6c4568dc68-fzngj   1/1     Running   0          21m
hostpath-provisioner-5c65fbdb4f-7kxjw        1/1     Running   0          41s
[2] PVC (Persistent Volume Claim) オブジェクトを定義しての、Pod からのストレージ利用例です。
[root@dlp ~]#
vi my-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  # 任意の PVC 名
  name: my-pvc
spec:
  # アクセスモード:
  # - ReadWriteMany (複数ノード RW)
  # - ReadWriteOnce (単一ノード RW)
  # - ReadOnlyMany (複数ノード R)
  accessModes:
    - ReadWriteOnce
  # microk8s-hostpath を指定
  storageClassName: microk8s-hostpath
  resources:
    requests:
      # 利用したいストレージのサイズ
      storage: 1Gi

[root@dlp ~]#
microk8s kubectl create -f my-pvc.yml

persistentvolumeclaim/my-pvc created
[root@dlp ~]#
microk8s kubectl get pv

NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS        REASON   AGE
pvc-573d1393-6721-45e2-af2f-24d4ccd047ff   1Gi        RWO            Delete           Bound    default/my-pvc   microk8s-hostpath            2s

[root@dlp ~]#
microk8s kubectl get pvc

NAME     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
my-pvc   Bound    pvc-573d1393-6721-45e2-af2f-24d4ccd047ff   1Gi        RWO            microk8s-hostpath   32s

# 例として nginx pod 作成

[root@dlp ~]#
vi nginx-mypv.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-mypv
  labels:
    name: nginx-mypv
spec:
  containers:
    - name: nginx-mypv
      image: fedora/nginx
      ports:
        - name: web
          containerPort: 80
      volumeMounts:
        - name: my-persistent-volume
          mountPath: /usr/share/nginx/html
  volumes:
    - name: my-persistent-volume
      persistentVolumeClaim:
        # 事前に定義した PVC 名を指定
        claimName: my-pvc

[root@dlp ~]#
microk8s kubectl create -f nginx-mypv.yml

pod/nginx-mypv created
[root@dlp ~]#
microk8s kubectl get pods -o wide

NAME         READY   STATUS    RESTARTS   AGE   IP            NODE            NOMINATED NODE   READINESS GATES
nginx-mypv   1/1     Running   0          22s   10.1.142.78   dlp.srv.world   <none>           <none>

# PVC の Path 確認

[root@dlp ~]#
microk8s kubectl describe -n kube-system pod/hostpath-provisioner-5c65fbdb4f-7kxjw | grep PV_DIR

      PV_DIR:     /var/snap/microk8s/common/default-storage
[root@dlp ~]#
microk8s kubectl describe pvc/my-pvc | grep ^Volume:

Volume:        pvc-573d1393-6721-45e2-af2f-24d4ccd047ff

# テストページ作成

[root@dlp ~]#
echo "Hello MicroK8s external Storage" > /var/snap/microk8s/common/default-storage/default-my-pvc-pvc-573d1393-6721-45e2-af2f-24d4ccd047ff/index.html
# アクセスして確認

[root@dlp ~]#
curl 10.1.142.78

Hello MicroK8s external Storage
関連コンテンツ