U1.30 Ubuntu Quick Start (QS): Kubespray on premises StorageClass - chempkovsky/CS2WPF-and-CS2XAMARIN GitHub Wiki

Starting with

Click to show hosts.yaml
all:
  hosts:
    u2004d01:
      ansible_host: 192.168.100.2
      ip: 192.168.100.2
      access_ip: 192.168.100.2
    u2004d02:
      ansible_host: 192.168.100.9
      ip: 192.168.100.9
      access_ip: 192.168.100.9
    u2004d03:
      ansible_host: 192.168.100.13
      ip: 192.168.100.13
      access_ip: 192.168.100.13
  children:
    kube_control_plane:
      hosts:
        u2004d01:
        u2004d02:
    kube_node:
      hosts:
        u2004d01:
        u2004d02:
        u2004d03:
    etcd:
      hosts:
        u2004d01:
        u2004d02:
        u2004d03:
    k8s_cluster:
      children:
        kube_control_plane:
        kube_node:
    calico_rr:
      hosts: {}

StorageClass immediately after installation is complete

for u2004d01

  • first run the command to make sure our cluster is ready
sudo kubectl get nodes -o wide
Click to show the response
NAME       STATUS   ROLES                  AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
u2004d01   Ready    control-plane,master   19h   v1.22.3   192.168.100.2    <none>        Ubuntu 20.04.3 LTS   5.11.0-40-generic   containerd://1.4.11
u2004d02   Ready    control-plane,master   19h   v1.22.3   192.168.100.9    <none>        Ubuntu 20.04.3 LTS   5.11.0-40-generic   containerd://1.4.11
u2004d03   Ready    <none>                 19h   v1.22.3   192.168.100.13   <none>        Ubuntu 20.04.3 LTS   5.11.0-40-generic   containerd://1.4.11

for u2004d01

sudo kubectl get storageClass
  • responce
No resources found

for u2004d01

sudo kubectl get pvc -o wide
  • responce
No resources found in default namespace.

for u2004d01

sudo kubectl get pv -o wide
  • responce
No resources found

PersistentVolume Creation

for u2004d01

  • run the commands (no sudo prefix)
cd Documents
nano lpv01.yaml
  • paste the following content into the file and save
Click to show the content
apiVersion: v1
kind: PersistentVolume
metadata:
  name: lpv001
spec:
  storageClassName: ""
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data001"

for u2004d01

  • run the commands (no sudo prefix)
cd Documents
nano lpv02.yaml
  • paste the following content into the file and save
Click to show the content
apiVersion: v1
kind: PersistentVolume
metadata:
  name: lpv002
spec:
  storageClassName: ""
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data002"

for u2004d01

  • run the commands
sudo kubectl apply -f lpvc01.yaml
sudo kubectl apply -f lpvc02.yaml
sudo kubectl get pv -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpv01.yaml
persistentvolume/lpv01 created
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpv02.yaml
persistentvolume/lpv02 created
yury@u2004d01:~/Documents$ sudo kubectl get pv -o wide
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE   VOLUMEMODE
lpv01   1Gi        RWO            Retain           Available                                   28s   Filesystem
lpv02   1Gi        RWO            Retain           Available                                   17s   Filesystem

Removing PersistentVolume

for u2004d01

  • run the commands
sudo kubectl get pv -o wide
sudo kubectl delete pv lpv02
sudo kubectl delete pv lpv01
sudo kubectl get pv -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl get pv -o wide
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE     VOLUMEMODE
lpv01   1Gi        RWO            Retain           Available                                   5m18s   Filesystem
lpv02   1Gi        RWO            Retain           Available                                   5m7s    Filesystem
yury@u2004d01:~/Documents$ sudo kubectl delete pv lpv02
persistentvolume "lpv02" deleted
yury@u2004d01:~/Documents$ sudo kubectl delete pv lpv01
persistentvolume "lpv01" deleted
yury@u2004d01:~/Documents$ sudo kubectl get pv -o wide
No resources found
yury@u2004d01:~/Documents$

PersistentVolumeClaim Creation

for u2004d01

  • run the commands (no sudo prefix)
cd Documents
nano lpvc01.yaml
  • paste the following content into the file and save
Click to show the content
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: lpvc01
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

for u2004d01

  • run the commands (no sudo prefix)
cd Documents
nano lpvc02.yaml
  • paste the following content into the file and save
Click to show the content
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: lpvc02
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

for u2004d01

  • run the commands
    • note: both claims will be created with Pending status
sudo kubectl apply -f lpvc01.yaml
sudo kubectl apply -f lpvc02.yaml
sudo kubectl get pvc -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpvc01.yaml
persistentvolumeclaim/lpvc01 created
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpvc02.yaml
persistentvolumeclaim/lpvc02 created
yury@u2004d01:~/Documents$ sudo kubectl get pvc -o wide
NAME     STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
lpvc01   Pending                                                     12s   Filesystem
lpvc02   Pending                                                     8s    Filesystem

Removig PersistentVolumeClaim

for u2004d01

  • run the commands
sudo kubectl get pvc -o wide
sudo kubectl delete pvc lpvc02
sudo kubectl delete pvc lpvc02
sudo kubectl get pvc -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl get pvc -o wide
NAME     STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
lpvc01   Pending                                                     12s   Filesystem
lpvc02   Pending                                                     8s    Filesystem
yury@u2004d01:~/Documents$ sudo kubectl delete pvc lpvc02
persistentvolumeclaim "lpvc02" deleted
yury@u2004d01:~/Documents$ sudo kubectl delete pvc lpvc01
persistentvolumeclaim "lpvc01" deleted
yury@u2004d01:~/Documents$ sudo kubectl get pvc -o wide
No resources found in default namespace.

Automatic Binding PersistentVolumeClaim and PersistentVolume

for u2004d01

  • run the commands
    • note: both claims will be created with Bound status
sudo kubectl apply -f lpv01.yaml
sudo kubectl apply -f lpv02.yaml
sudo kubectl apply -f lpvc01.yaml
sudo kubectl apply -f lpvc02.yaml
sudo kubectl get pv -o wide
sudo kubectl get pvc -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpv01.yaml
persistentvolume/lpv01 created
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpv02.yaml
persistentvolume/lpv02 created
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpvc01.yaml
persistentvolumeclaim/lpvc01 created
yury@u2004d01:~/Documents$ sudo kubectl apply -f lpvc02.yaml
persistentvolumeclaim/lpvc02 created
yury@u2004d01:~/Documents$ sudo kubectl get pv -o wide
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE   VOLUMEMODE
lpv01   1Gi        RWO            Retain           Bound    default/lpvc01                           38s   Filesystem
lpv02   1Gi        RWO            Retain           Bound    default/lpvc02                           30s   Filesystem
yury@u2004d01:~/Documents$ sudo kubectl get pvc -o wide
NAME     STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
lpvc01   Bound    lpv01    1Gi        RWO                           34s   Filesystem
lpvc02   Bound    lpv02    1Gi        RWO                           24s   Filesystem

StorageClass Creation and Removing

for u2004d01

  • run the commands (no sudo prefix)
cd Documents
nano lsc.yaml
  • paste the following content into the file and save
Click to show the content
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: lsc
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate
allowVolumeExpansion: true

for u2004d01

  • run the commands
sudo kubectl apply -f lsc.yaml
sudo kubectl get storageClass -o wide
sudo kubectl delete storageClass lsc
sudo kubectl get storageClass -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl apply -f lsc.yaml
storageclass.storage.k8s.io/lsc created
yury@u2004d01:~/Documents$ sudo kubectl get storageClass -o wide
NAME   PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
lsc    kubernetes.io/no-provisioner   Delete          Immediate           true                   5s
yury@u2004d01:~/Documents$ sudo kubectl delete storageClass lsc
storageclass.storage.k8s.io "lsc" deleted
yury@u2004d01:~/Documents$ sudo kubectl get storageClass -o wide
No resources found

Make StorageClass the default

for u2004d01

  • run the commands
sudo kubectl apply -f lsc.yaml
sudo kubectl get storageClass -o wide
sudo kubectl patch storageclass lsc -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
sudo kubectl get storageClass -o wide
Click to show the responce
yury@u2004d01:~/Documents$ sudo kubectl apply -f lsc.yaml
storageclass.storage.k8s.io/lsc created
yury@u2004d01:~/Documents$ sudo kubectl get storageClass -o wide
NAME   PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
lsc    kubernetes.io/no-provisioner   Delete          Immediate           true                   25s
yury@u2004d01:~/Documents$ sudo kubectl patch storageclass lsc -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/lsc patched
yury@u2004d01:~/Documents$ sudo kubectl get storageClass -o wide
NAME            PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
lsc (default)   kubernetes.io/no-provisioner   Delete          Immediate           true                   96s
⚠️ **GitHub.com Fallback** ⚠️