K8S Volume - Block Storage
주로 SAN(Storage Area Network)를 기반으로 생성한다. 동시에 2개이상의 Node에서 연결을 허용하지 않고, 많은 데이터를 처리하는데 잇점이 있어서 DB를 구성하는데 사용된다.
https://kubetm.github.io/k8s/07-intermediate-basic-resource/volume2/
1. Longhorn 설치
# isici Interface - 모든 Node에 설치
$ yum install -y iscsi-initiator-utils7
# Longhorn - Master에만 설치
$ kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
# 확인 - 전체 pod가 Running 상태면 완료 (2-3분 소요)
$ kubectl get pods -n longhorn-system
2. 개발환경 조정
Replicas를 3 -> 2로 변경해야 한다. 이를 위해 기존 Storage Class를 삭제하고 다시 생성한다.
# Pod 확인
$ kubectl get storageclasses.storage.k8s.io -n longhorn-system longhorn
# StorageClass의 상세정보 확인
$ kubectl describe storageclasses.storage.k8s.io -n longhorn-system longhorn
# 삭제
$ kubectl delete storageclasses.storage.k8s.io -n longhorn-system longhorn
# StorageClass의 replicas 변경 생성
$ cat <<EOF | kubectl create -f -
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: longhorn
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
numberOfReplicas: "2"
staleReplicaTimeout: "2880"
fromBackup: ""
EOF
# Longhorn Dashboard 접속을 위한 Port 변경
$ kubectl edit svc -n longhorn-system longhorn-frontend
spec:
ports:
- name: http
nodePort: 30001 # 추가
type: NodePort # ClusterIP -> NodePort
3. Pod 생성
Block Storage를 “/longhorn/data” “ 에 Volume mount한 Pod 생성
apiVersion: v1
kind: Pod
metadata:
name: pod-blockstorage
spec:
containers:
- name: container
image: kubetm/init
volumeMounts:
- name: volume-blockstorage
mountPath: /longhorn/data
volumes:
- name : volume-blockstorage
persistentVolumeClaim:
claimName: longhorn-pvc
4. Longhorn Volume Attachments 확인
$ kubectl get -n longhorn-system volumeattachments.storage.k8s.io
5. Block Storage의 Dashboard 보기
http://192.168.56.30:30001