YJWANG

Kubernetes Local-path provisioner (On-premise) 본문

60.Cloud/80.Kubernetes

Kubernetes Local-path provisioner (On-premise)

왕영주 2021. 1. 19. 11:16

refer to


구성


만약 Dynamic Volume Provisioning에 대해 지식이 부족하다면 아래 링크를 먼저 읽고 오길 바란다.
https://kubernetes.io/ko/docs/concepts/storage/dynamic-provisioning/

간단하게 설명하면 정적으로 구축하면 PV를 만들고 이에 매핑될 PVC를 통해 pod가 PV를 사용하게 되는데 provisioner를 사용하면
PVC가 provisioner를 통해 volume을 요청하면 PV가 자동으로 생성돼 매핑되는 방식이다.

즉 pv를 지속해서 먼저 생성해야 하는 번거로움이 줄어들며 여러 OpenSource project에서 구성을 요구하기도 한다 (jenkins / kubeflow ..)

Manifest 수정

다운로드

[root@master01 local-path-provisioner]# wget https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
--2021-01-19 00:48:50--  https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3489 (3.4K) [text/plain]
Saving to: ‘local-path-storage.yaml’

local-path-storage.yaml            100%[================================================================>]   3.41K  --.-KB/s    in 0s      

2021-01-19 00:48:50 (21.0 MB/s) - ‘local-path-storage.yaml’ saved [3489/3489]

[root@master01 local-path-provisioner]# ls -l
-rw-r--r--. 1 root root 3489  1월 19 00:48 local-path-storage.yaml

수정

아래 path 부분을 수정한다. 해당 path가 각 node에서 pv가 관리될 경로이다.
설정한 path를 Node에서 미리 생성할 필요는 없다. 자동으로 생성을 한다.

data:
  config.json: |-
        {
                "nodePathMap":[
                {
                        "node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
                        "paths":["/opt/local-path-provisioner"]
                }
                ]
        }

>>
                        "node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
                        "paths":["/mnt/test-path"]

Provisioner 배포

[root@master01 local-path-provisioner]# kubectl apply -f local-path-storage.yaml 
namespace/local-path-storage created
serviceaccount/local-path-provisioner-service-account created
clusterrole.rbac.authorization.k8s.io/local-path-provisioner-role created
clusterrolebinding.rbac.authorization.k8s.io/local-path-provisioner-bind created
deployment.apps/local-path-provisioner created
storageclass.storage.k8s.io/local-path created
configmap/local-path-config created

[root@master01 local-path-provisioner]# kubectl -n local-path-storage get pod
NAME                                      READY   STATUS    RESTARTS   AGE
local-path-provisioner-5696dbb894-nspzq   1/1     Running   0          49s

테스트

pod가 생성돼야 pvc가 활성화된다.

kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pvc.yaml
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod.yaml

HA는 되지 않는다. 지정된 Node에서 실행될 뿐.. 운영 환경에선 피하도록 하자

반응형