오브젝트
디플로이먼트의 replicas가 노드 수만큼 정해져 있는 형태
노드 하나당 파드 한 개만 생성
단일 접속 지점으로 노드 외부와 통신하는 경우에 사용
MetalLB 스피커가 각 노드에 분포되어 있는 상태 확인
kubectl get pods -n metallb-system -o wide
워커 노드 1개 늘림
(Vagrantfile의 N 인자 수정)
호스트 PC 명령 창에서 새로운 워커 노드(w4-k8s) 추가
vagrant up w4-k8s
m-k8s에서 오브젝트 상태 변화 감지해 출력
kubectl get pods -n metallb-system -o wide -w
-w
: watch의 약어, 오브젝트 상태 변화 감지되면 변화 출력
-> 추가된 워커 노드에 speaker(daemonset)가 설치됨
설치된 스피커가 데몬셋이 맞는지 확인
kubectl get pods [스피커 이름] -o yaml -n metallb-system
-> kind: DaemonSet인지 확인
설정(Config)을 목적으로 사용하는 오브젝트
디플로이먼트 생성
kubectl create deployment cfgmap --image=sysnet4admin/echo-hname
생성한 디플로이먼트를 로드밸런서(MetalLB)를 통해 노출
kubectl expose deployment cfgmap --type=LoadBalancer --name=cfgmap-svc --port=80
생성된 서비스의 IP 확인
kubectl get services
구성돼 있는 컨피그맵의 기존 IP 변경
cat ~/_Book_k8sInfra/ch3/3.4.2/metallb-l2config.yaml | grep 192.
-> IP 확인
set -i 's/11/21/;s/13/23/' ~/_Book_k8sInfra/ch3/3.4.2/metallb-l2config.yaml
-> 11을 21로, 13을 23으로 변경
cat ~/_Book_k8sInfra/ch3/3.4.2/metallb-l2config.yaml | grep 192.
-> 변경 확인
컨피그맵 설정 파일에 변경된 설정 적용
kubectl apply -f ~/_Book_k8sInfra/ch3/3.4.2/metallb-l2config.yaml
MetalLB 관련 파드 삭제 -> kubelete에서 해당 파드를 자동으로 모두 다시 생성함
kubectl delete pods --all -n metallb-system
새로 생성된 파드들 확인
kubectl get pods -n metallb-system
기존에 노출한 MetalLB 서비스를 삭제하고 동일한 이름으로 다시 생성해 새로운 컨피그맵을 적용한 서비스가 올라오게 함
kubectl delete service cfgmap-svc
- 서비스 삭제
kubectl expose deployment cfgmap --type=LoadBalancer --name=cfgmap-svc --port=80
새로운 MetalLB 서비스의 IP가 바뀌었는지 확인
kubectl get services
호스트 PC 브라우저에서 192.1668.1.21 접속해서 파드 이름이 표시되는지 확인
디플로이먼트, 서비스 삭제
kubectl delete deployment cfgmap
kubectl delete service cfgmap-svc
파드에서 생성한 내용을 기록, 보관하면서 모든 파드에 동일한 설정 값이 유지되도록 관리
-> 공유된 볼륨으로부터 공통된 설정을 가지고 올 수 있도록 설계
PV(PersistentVolue)
: 지속적으로 사용 가능한 볼륨
PVC(PersistentVolumeClaim)
: 지속적으로 사용 가능한 볼륨 요청
PV로 볼륨을 선언해야 PVC를 요청할 수 있음
PV - 볼륨 사용 준비 단계
PVC - 준비된 볼륨에서 일정 공간 할당
목적에 따른 볼륨 제공됨
쿠버네티스 공식 페이지 [볼륨]
▼ PV로 선언할 수 있는 볼륨 유형
mkdir /nfs_shared
: 공유되는 디렉터리 생성echo '/nfs_shared 192.168.1.0/24(rw,sync,no_root_squash)' >> /etc/exports