쿠버네티스의 deployment, service, volume, HPA

데브코스

목록 보기
111/131

쿠버네티스 디플로이먼트

1. Deployment

  • 응용의 배포를 위하여 많이 이용되는 k8s의 오브젝트 형태
  • 동일한 모습의 포드들의 복제본 모음인 레플리카셋을 이용하는 것이 일반적
  • 단순한 레플리카셋에 비하여 동적 업데이트 및 롤백, 배포 버전의 관리 등이 유연하여 응용의 배포에 널리 이용됨.
  • 보통은 상태가 없는 응용의 배포에 이용
    - (기억하자) 포드는 언제라도 사멸할 수 있음

2. 동작 방식

  • 디플로이먼트의 상태를 선언하면 k8s가 동적으로 의도된 상태 (desired state)가 되도록 레플리카셋을 관리

포드의 삭제 : kubectl delete pod nginx-pod <삭제할 포드 이름>

포드가 3개가 있었는데, 하나를 삭제해도, deployment를 설정할때, 3개를 만든다고 해뒀기 때문에,
내가 삭제한 포드가 삭제되고 새로운 포드가 자동으로 새로 생성됨. (deployment가 3개를 유지하려고 노력하기 때문에 그럼)



쿠버네티스 서비스와 볼륨

서비스(Services)

1. 클러스터에 외부에서 클러스터에 접속하는 방법

  • 클러스터 내부에서 동작하는 기능을 외부로 "노출"하는 것을 서비스 라고 부름

2. 서로 다른 서비스의 종류

  • 클러스터 IP
  • 노드포트 (NodePort)
  • 로드밸런서 (LoadBalancer)
  • 인그레스(ingress)

클러스터 IP

  1. 클러스터 내부에서만 접근할 수 있는 ip를 할당
  2. 포트 포워딩 또는 프록시를 통해 클러스터 외부로부터 접근 가능
  3. 테스트, 디버깅 등의 목적에 제한적으로 이용

노드포트(Node Port)

  1. 동작 방식

    • 모든 워커 노드의 특정 포트(NodePort)를 열고 여기로 오는 모든 요청을 노드포트 서비스에 전달
    • 노드포트 서비스는 해당 요청을 처리할 수 있는 포드로 요청을 전달

로드밸런서 (Load Balancer)

  1. 클러스터 외부의 로드밸런서(public cloud들은 공히 제공)를 이용하여 부하 균등화 수행
  2. 노드포트와 달리 특정 노드가 접근 불가능한 경우에도 서비스 제공 가능

인그레스 (Ingress)

  1. 엄밀히 말하면 k8s서비스의 한 종류는 아니고, 복수의 서비스의 대해 목적에 따라 트래픽을 연결하는 도구

동적 수평 오토스케일링 (HPA = Horizontal Pod Autoscaler)

  1. 보통의 경우 고려되는 부하량 : cpu 및 메모리 사용량

  2. 메트릭스 서버(metrics server) 로부터 부하 계측값을 전달받아 동일한 기능을 제공하는 포드의 수를 동적으로 조절

  3. 스케일링 기준이 되는 값과 최소/최대 포드의 수를 지정


볼륨 (Volumes)

1. k8s는 클러스터 내에서 이용할 수 있는 저장장치(storage)의 추상화된 객체로 볼륨을 정의

2. PV(PersistentVolume)

- 클러스터 내의 존재하는 스토리지를 추상화한 것
- 클러스터 내의 노드에 존재하는 물리적 저장장치를 이용할 수도 있으며, 다양한 원격 저장소 및 클라우드 서비스들도 이용할 수 있음

볼륨이 있다고(PV) 그냥 사용할 수 있는 게 아니라 PVC가 있어야 함.

3. PVC(PersistentVolumeClaim)

- (사용자에 의한)PV를 이용하기 위한 요청
- Pod : Node = PVC : PV
- 저장 공간의 크기와 접근 모드 (읽기/쓰기, ...)를 지정

요약

1. k8s 서비스

- 클러스터 내부에서 실행되고 있는 기능을 클러스터 외부에 노출

2. HPA(Horizontal Pod Autoscaler) : 동적 수평 오토스케일링

- 부하 상황에 따라 동적으로 디플로이먼트의 레플리카셋 크기를 조정

3. PV(Persistent Volume)

- 포드에서 바인드 마운트 (bind mount) 로 이용할 수 있는 저장장치
- 변화하는 데이터를 기록, 저장하기 위해서 반드시 필요
profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글