일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- OpenStack
- port open
- Ansible
- libvirt
- KVM
- repository
- yum
- cloud-init
- k8s
- nfs-provisioner
- grafana-loki
- awx
- Arch
- i3
- Kubernetes
- Kubeflow
- Linux
- cephadm
- pacman
- Docker
- ubuntu
- ceph-ansible
- kolla-ansible
- HTML
- kolla
- Octavia
- archlinux
- ceph
- terraform
- golang
Archives
- Today
- Total
YJWANG
Kubernetes Local-path provisioner (On-premise) 본문
refer to
- https://github.com/rancher/local-path-provisioner
- https://kubernetes.io/ko/docs/concepts/storage/dynamic-provisioning/
구성
만약 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에서 실행될 뿐.. 운영 환경에선 피하도록 하자
반응형