AWS

[ 5 ] - pv, pvc 관련 실습

zhuxiclover 2024. 9. 25. 16:16

1. 그대로 따라하기 (최최종 yaml 파일)

 ➜  스택에 yaml 올리기
 ➜  aws configure

(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl describe sc ebs-dp-sc
Name:            ebs-dp-sc
IsDefaultClass:  No
Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"ebs-dp-sc"},"parameters":{"allowAutoIOPSPerGBIncrease":"true","encrypted":"true","type":"gp3"},"provisioner":"ebs.csi.aws.com","volumeBindingMode":"WaitForFirstConsumer"}

Provisioner:           ebs.csi.aws.com
Parameters:            allowAutoIOPSPerGBIncrease=true,encrypted=true,type=gp3
AllowVolumeExpansion:  True
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     WaitForFirstConsumer
Events:                <none>
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get pvc,sc
NAME                                 STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/ebs-dp-claim   Pending                                      ebs-dp-sc      2m42s

NAME                                        PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
storageclass.storage.k8s.io/ebs-dp-sc       ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   6m13s
storageclass.storage.k8s.io/gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  83m
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# nano ebs_dp_pod.yaml
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# cat ebs_dp_pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: ebs-dp-app
spec:
  terminationGracePeriodSeconds: 3
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 10; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-dp-claim
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl apply -f ebs_dp_pod.yamnl
error: the path "ebs_dp_pod.yamnl" does not exist
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl apply -f ebs_dp_pod.yaml
pod/ebs-dp-app created
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get pod -n kube--system | grep ebs-csi
No resources found in kube--system namespace.
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get pod -n kube-system | grep ebs-csi
ebs-csi-controller-85d7448f6d-5pt6h            6/6     Running   0          41m
ebs-csi-controller-85d7448f6d-vp67w            6/6     Running   0          41m
ebs-csi-node-6lrtz                             3/3     Running   0          41m
ebs-csi-node-bb4nb                             3/3     Running   0          41m
ebs-csi-node-q79hk                             3/3     Running   0          41m
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get pod -n kube-system | grep ebs-csi-controller
ebs-csi-controller-85d7448f6d-5pt6h            6/6     Running   0          41m
ebs-csi-controller-85d7448f6d-vp67w            6/6     Running   0          41m
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl logs ^C
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl logs ebs-csi-controller-85d7448f6d-5pt6h -n kube-system
Defaulted container "ebs-plugin" out of: ebs-plugin, csi-provisioner, csi-attacher, csi-snapshotter, csi-resizer, liveness-probe
I0925 05:52:11.901650       1 main.go:151] "Region provided via AWS_REGION environment variable" region="ap-northeast-3"
I0925 05:52:11.903213       1 driver.go:69] "Driver Information" Driver="ebs.csi.aws.com" Version="v1.35.0"

 

 

 ➜  (bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get volumeattachment

    ✅  생성된 볼륨 이름과 같음

 

 

 ➜  StorageClass 생성

    ✅  nano ebs_dp_sc.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-dp-sc
allowVolumeExpansion: true
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: gp3
  allowAutoIOPSPerGBIncrease: 'true'
  encrypted: 'true'

 


    ✅  kubectl apply -f ebs_dp_sc.yaml
    ✅  kubectl describe sc ebs-dp-sc

 

 ➜  pvc 생성

    ✅  nano ebs_dp_pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-dp-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi
  storageClassName: ebs-dp-sc

 


    ✅  kubectl apply -f ebs_dp_pvc.yaml
    ✅  kubectl get pvc,sc

 


 ➜  파드 생성

    ✅  nano ebs_dp_pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: ebs-dp-app
spec:
  terminationGracePeriodSeconds: 3
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 10; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-dp-claim

 

    ✅  kubectl apply -f ebs_dp_pod.yaml

 

 ➜  ebs-sci-controller 파드가 2개 생성

 ➜  kubectl get pod -n kube-system



 ➜  kubectl logs ebs-csi-controller-[본인 할당] -n kube-system

    ✅  로그 확인

 

 ➜   kubectl get volumeattachment

'AWS' 카테고리의 다른 글

[ 7 ] - EKS Storage Monitoring  (0) 2024.09.26
[ 6 ] - EKS Storage : Snapshot Controller  (0) 2024.09.25
[ 4 ]  (0) 2024.09.13
[ 3 ]  (0) 2024.09.12
[ 2 ]  (0) 2024.09.11