NCP
[NCP-Certified Professional] 7. 쿠버네티스 서비스와 쿠버네티스의 주요 컴포넌트 소개
이로이카
2023. 8. 8. 16:48
728x90
NCP 취득을 위한 아래 링크의 Edwith 강의 내용 요약
Mooc 강의로 무료제공되는 강의입니다.
https://www.edwith.org/professioanl-vpc
Professional Course(VPC Platform) 강좌소개 : edwith
- Naksoo Jung
www.edwith.org
1. Kubernetes Service
- 완전 관리형 Kubernetes Cluster 제공
- Container의 배포(Scheduling), 운영(HA, Failover), 확장(Scaling)을 자동화하기 위한 플랫폼
- Control Plane 설치, 운영에 대한 고민 없이, 사용자는 Container가 구동되는 Worker Node에 대한 관리만 하면 됨
- Container Registry, Load Balancer 등 네이버 클라우드 플랫폼 다른 서비스와 통합하여 사용 가능
2. 쿠버네티스의 주요 기능
- Automatic Binpacking
- Worker node의 가용성을 유지하면서 보유한 리소스를 충분히 활용할 수 있도록 스스로 스케쥴링하며 컨테이너를 배치하는 모듈
- Storage Orchestration
- 로컬 저장소를 선택하거나 NFS, iSCSI 등과 같은 공유 네트워크 스토리지를 컨테이너에 할당/마운트하여 사용가능하도록 하는 모듈
- Secret & Configuration Management
- Application 연동 및 접근 제어를 위한 보안 키, 설정 내역을 컨테이너 이미지의 변경 없이 업데이트 할 수 있고 외부로 노출하지 않고 사용 가능하도록 하는 모듈
- Horizontal Scaling
- CPU 사용률과 같은 metric 을 기반으로 pod의 Deployments, replicaset을 스케줄링하여 수평적 확장 가능하도록 하는 모듈
- Service Discovery & Load Balancing
- 컨테이너에 IP주소를 자동으로 할당하고 클러스터 내 트래픽을 로드밸런싱 할 수 있는 컨테이너 세트에 단일 DNS 이름을 할당하는 모듈
- Self Healing
- 실패한 컨테이너를 자동으로 다시 시작하고, 사용자가 정의한 헬스체크에 응답이 없는 컨테이너를 종료함. 워커노드 장애시 사용가능한 다른 워커 노드에 컨테이너를 다시 기동해주는 모듈
- Batch Execution
- 컨테이너 기반의 서비스 관리뿐 아니라 배치 및 CI 작업 부하를 관리할 수 있으므로 원하는 경우 실패한 컨테이너 대체 가능함
- Automatic Rollbacks & Rollouts
- 컨테이너의 응용프로그램이나 구성에 대한 변경 사항을 점진적으로 업데이트하고 문제발생시 자동으로 롤백할 수 있음
3. 쿠버네티스의 핵심 개념 - Pod
- 파드는 쿠버네티스 애플리케이션의 기본 실행 단위
- VM과 같이 컨테이너를 실행시키는 단위
- 쿠버네티스 객체 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위
- 단일 컨테이너만 동작하는 파드
- "단일 컨테이너 당 한개의 파드" 모델은 쿠버네티스 사용 사례 중 가장 흔하다. 이 경우, 한 개의 파드가 단일 컨테이너를 감싸고 있다고 생각할 수 있으며, 쿠버네티스는 컨테이너가 아닌 파드를 직접 관리한다고 볼 수 있다.
- 함께 동작하는 작업이 필요한 다중 컨테이너가 동작하는 파드
- 아마 파드는 강하게 결합되어 있고 리소스 공유가 필요한 다중으로 함께 배치된 컨테이너로 구성되어 있을 것이다. 이렇게 함께 배치되어 설치된 컨테이너는 단일결합 서비스 단위일 것이다. 한 컨테이너는 공유 볼륨에서 퍼블릭으로 파일들을 옮기고, 동시에 분리되어있는 "사이드카" 컨테이너는 그 파일들을 업데이트 하거나 복구한다. 파드는 이 컨테이너와 저장소 리소스들을 한 개의 관리 가능한 요소로 묶는다.
4. 쿠버네티스의 핵심 개념 - Deployment
- 디플로이먼트란, 애플리케이션을 다운타임 없이 업데이트 가능하도록 지원해주는 쿠버네티스 리소스
- 사용자의 기대상태(Desired State)를 유지하도록 하는 Controller
- Deployment 는 ReplicaSet에 대한 Update를 담당
- ReplicaSet은 사용자가 선언한 기대 상태인 Replica의 수를 지속적으로 확인하며 유지시킴
5. 쿠버네티스의 핵심 개념 - Demonset
- K8S 클러스터 내 모든 노드에서 Pod의 복제본을 실행하도록 함
- 클러스터에 노드가 추가되면 Pod도 추가되고, 노드가 삭제되면 해당 노드에서 기동되던 Pod도 삭제됨
- nodeSelector, podAffinity 와 같은 조건을 명시하면 데몬셋 컨트롤러는 조건에 일치하는 노드에만 Pod를 생성한다.
6. 쿠버네티스 핵심 개념 - Service
- 클러스터 내 Pod 들에게 접근하기 위한 경로를 잡아
- 여러 Pod를 묶어 Healthy 한 Pod로 Traffic 라우팅하는 로드 밸런싱 기능 제공
- 클러스터의 Service CIDR 중에서 지정된 IP로 생성 가능
- 서비스 이름은 클러스터 내 고유한 DNS로 동작
Q. Service Type에는 어떤 것들이 있나요?
- 기본 옵션은 클러스터 내부에서 사용할 수 있는 Cluster IP 타입
- 클러스터 외부에서 내부의 Pod로 접근하기 위해, Service 타입의 변경이 필요
- 앱을 외부에 노출 시, kube-proxy가 해당 포트 Listen을 담당하며 요청을 분산되어 있는 Pod로 전달
7. 쿠버네티스의 핵심 개념 - Ingress
- 외부에서 오는 Traffic들을 클러스터 내부의 Service로 라우팅하기 위한 규칙 집합
- NCR은 Host 기반 및 URL Path기반 라우팅에 대한 규칙 사용
- Ingress 에 대한 Service 타입 지정은 외부 Traffic 수신 위해, NodePort 혹은 LoadBalancer 지정 필요
BareMetal 환경에서의 사용
- On-Premise 환경에서는 CSP사들의 LB와 같은 이용 기대 힘듦
- L3 DSR을 이용하는 경우, Service의 externalIPs 속성에 L4 Loopback Interface에 할당된 VIP를 명시하여 사용
- L4 Switch는 Syn Packet을 통한 Health Check 수행
- Pod가 Healthy 인 경우, VIP를 통해 Pod의 애플리케이션 접근 가능
- NCR은 로드밸런서 및 공인 아이피 사용을 최소화하기 위해, 하나의 VIP에 모든 도메인을 할당
- Ingress를 이용하여 HTTP Request 의 Host와 URL Path 정보를 통해 타겟 Pod로 라우팅
8. NCP 쿠버네티스 서비스 소개
- 쿠버네티스 Control Plane 에 대한 설치, 운영, 유지관리 필요 없이 쉽게 Cluster 구성 가능
- 기본적으로 마스터 노드 3대가 생성되며, HA를 위해서 이중화, 삼중화가 되어 있음
- 마스터 노드는 히든으로 구성되어 사용자에게 노출되지 않음
- 사용자는 Worker node 만 관리하면 됨
- 워커노드의 스펙, 대수 정보를 사용자가 입력
- 쿠버네티스 모니터링 도구도 자동으로 설치, Dashboard 접속을 통해 모니터링 수행
어우 쿠버네티스는 받아적으면서도 무슨소린지 하나도 모르겠다.
별도로 공부 필요
쿠버네티스 기초 학습
운영 수준의 컨테이너 오케스트레이션
kubernetes.io