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
- 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
sudo kubectl get storageClass
sudo kubectl get pvc -o wide
No resources found in default namespace.
sudo kubectl get pv -o wide
PersistentVolume Creation
- 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"
- 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"
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
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
- 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
- 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
- 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
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
- 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
- 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
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
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