오브젝트

이지우·2023년 5월 6일
0

쿠버네티스

목록 보기
8/9

오브젝트

  • 디플로이먼트
  • 데몬셋
  • 컨피그맵
  • PV & PVC
  • 스테이트풀셋

데몬셋(DaemonSet)

디플로이먼트의 replicas가 노드 수만큼 정해져 있는 형태
노드 하나당 파드 한 개만 생성

단일 접속 지점으로 노드 외부와 통신하는 경우에 사용

💻 데몬셋 만들기

  1. MetalLB 스피커가 각 노드에 분포되어 있는 상태 확인
    kubectl get pods -n metallb-system -o wide

  2. 워커 노드 1개 늘림
    (Vagrantfile의 N 인자 수정)

  3. 호스트 PC 명령 창에서 새로운 워커 노드(w4-k8s) 추가
    vagrant up w4-k8s

  4. m-k8s에서 오브젝트 상태 변화 감지해 출력
    kubectl get pods -n metallb-system -o wide -w
    -w : watch의 약어, 오브젝트 상태 변화 감지되면 변화 출력
    -> 추가된 워커 노드에 speaker(daemonset)가 설치됨

  5. 설치된 스피커가 데몬셋이 맞는지 확인
    kubectl get pods [스피커 이름] -o yaml -n metallb-system
    -> kind: DaemonSet인지 확인


컨피그맵(ConfigMap)

설정(Config)을 목적으로 사용하는 오브젝트

💻 MetalLB의 IP 설정 변경하기

  1. 디플로이먼트 생성
    kubectl create deployment cfgmap --image=sysnet4admin/echo-hname

  2. 생성한 디플로이먼트를 로드밸런서(MetalLB)를 통해 노출
    kubectl expose deployment cfgmap --type=LoadBalancer --name=cfgmap-svc --port=80

  3. 생성된 서비스의 IP 확인
    kubectl get services

  4. 구성돼 있는 컨피그맵의 기존 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. -> 변경 확인

  5. 컨피그맵 설정 파일에 변경된 설정 적용
    kubectl apply -f ~/_Book_k8sInfra/ch3/3.4.2/metallb-l2config.yaml

  6. MetalLB 관련 파드 삭제 -> kubelete에서 해당 파드를 자동으로 모두 다시 생성함
    kubectl delete pods --all -n metallb-system

  7. 새로 생성된 파드들 확인
    kubectl get pods -n metallb-system

  8. 기존에 노출한 MetalLB 서비스를 삭제하고 동일한 이름으로 다시 생성해 새로운 컨피그맵을 적용한 서비스가 올라오게 함
    kubectl delete service cfgmap-svc - 서비스 삭제
    kubectl expose deployment cfgmap --type=LoadBalancer --name=cfgmap-svc --port=80

  9. 새로운 MetalLB 서비스의 IP가 바뀌었는지 확인
    kubectl get services

  10. 호스트 PC 브라우저에서 192.1668.1.21 접속해서 파드 이름이 표시되는지 확인

  11. 디플로이먼트, 서비스 삭제
    kubectl delete deployment cfgmap
    kubectl delete service cfgmap-svc


📌 PV & PVC

파드에서 생성한 내용을 기록, 보관하면서 모든 파드에 동일한 설정 값이 유지되도록 관리
-> 공유된 볼륨으로부터 공통된 설정을 가지고 올 수 있도록 설계

PV(PersistentVolue)
: 지속적으로 사용 가능한 볼륨

PVC(PersistentVolumeClaim)
: 지속적으로 사용 가능한 볼륨 요청

PV로 볼륨을 선언해야 PVC를 요청할 수 있음
PV - 볼륨 사용 준비 단계
PVC - 준비된 볼륨에서 일정 공간 할당

🔎 볼륨 유형

목적에 따른 볼륨 제공됨
쿠버네티스 공식 페이지 [볼륨]

  • 임시:
    emptyDir
  • 로컬:
    host Path, local
  • 원격:
    persistentVolumeClaim, cephfs, cinder, csi, fc(fibre channel), flexVolume, flocker, glusterfs, iscsi, nfs, portworxVolume, quobyte, rbd, scaleIO, storageos, vsphereVolume
  • 특수 목적:
    donrnwardAPI, conflgMap, secret, azureFlle, projected
  • 클라우드:
    awsElasticBlockStore, azureDisk, gcePersistentDisk

▼ PV로 선언할 수 있는 볼륨 유형


💻 NFS 볼륨 타입으로 PVC & PV 생성

  1. PV로 선언할 볼륨을 만들기 위해 NFS 서버 구성
    mkdir /nfs_shared : 공유되는 디렉터리 생성
    echo '/nfs_shared 192.168.1.0/24(rw,sync,no_root_squash)' >> /etc/exports

profile
노력형 인간

0개의 댓글