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 등 네이버 클라우드 플랫폼 다른 서비스와 통합하여 사용 가능
출처(갈무리) : https://www.edwith.org/professioanl-vpc/lecture/1279871
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
컨테이너의 응용프로그램이나 구성에 대한 변경 사항을 점진적으로 업데이트하고 문제발생시 자동으로 롤백할 수 있음
출처(갈무리) : https://www.edwith.org/professioanl-vpc/lecture/1279871
3. 쿠버네티스의 핵심 개념 - Pod
파드는 쿠버네티스 애플리케이션의 기본 실행 단위
쿠버네티스 객체 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위
단일 컨테이너만 동작하는 파드
"단일 컨테이너 당 한개의 파드" 모델은 쿠버네티스 사용 사례 중 가장 흔하다. 이 경우, 한 개의 파드가 단일 컨테이너를 감싸고 있다고 생각할 수 있으며, 쿠버네티스는 컨테이너가 아닌 파드를 직접 관리한다고 볼 수 있다.
함께 동작하는 작업이 필요한 다중 컨테이너가 동작하는 파드
아마 파드는 강하게 결합되어 있고 리소스 공유가 필요한 다중으로 함께 배치된 컨테이너로 구성되어 있을 것이다. 이렇게 함께 배치되어 설치된 컨테이너는 단일결합 서비스 단위일 것이다. 한 컨테이너는 공유 볼륨에서 퍼블릭으로 파일들을 옮기고, 동시에 분리되어있는 "사이드카" 컨테이너는 그 파일들을 업데이트 하거나 복구한다. 파드는 이 컨테이너와 저장소 리소스들을 한 개의 관리 가능한 요소로 묶는다.
4. 쿠버네티스의 핵심 개념 - Deployment
디플로이먼트란, 애플리케이션을 다운타임 없이 업데이트 가능하도록 지원해주는 쿠버네티스 리소스
사용자의 기대상태(Desired State)를 유지하도록 하는 Controller
Deployment 는 ReplicaSet에 대한 Update를 담당
ReplicaSet은 사용자가 선언한 기대 상태인 Replica의 수를 지속적으로 확인하며 유지시킴
5. 쿠버네티스의 핵심 개념 - Demonset
K8S 클러스터 내 모든 노드에서 Pod의 복제본을 실행하도록 함
클러스터에 노드가 추가되면 Pod도 추가되고, 노드가 삭제되면 해당 노드에서 기동되던 Pod도 삭제됨
nodeSelector, podAffinity 와 같은 조건을 명시하면 데몬셋 컨트롤러는 조건에 일치하는 노드에만 Pod를 생성한다.
출처(갈무리) : https://www.edwith.org/professioanl-vpc/lecture/1279871
6. 쿠버네티스 핵심 개념 - Service
클러스터 내 Pod 들에게 접근하기 위한 경로를 잡아
여러 Pod를 묶어 Healthy 한 Pod로 Traffic 라우팅하는 로드 밸런싱 기능 제공
클러스터의 Service CIDR 중에서 지정된 IP로 생성 가능
서비스 이름은 클러스터 내 고유한 DNS로 동작
출처(갈무리) : https://www.edwith.org/professioanl-vpc/lecture/1279871
Q. Service Type에는 어떤 것들이 있나요?
기본 옵션은 클러스터 내부에서 사용할 수 있는 Cluster IP 타입
클러스터 외부에서 내부의 Pod로 접근하기 위해, Service 타입의 변경이 필요
앱을 외부에 노출 시, kube-proxy가 해당 포트 Listen을 담당하며 요청을 분산되어 있는 Pod로 전달
출처(갈무리) : https://www.edwith.org/professioanl-vpc/lecture/1279871
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로 라우팅
출처(갈무리) : https://www.edwith.org/professioanl-vpc/lecture/1279871
8. NCP 쿠버네티스 서비스 소개
쿠버네티스 Control Plane 에 대한 설치, 운영, 유지관리 필요 없이 쉽게 Cluster 구성 가능
기본적으로 마스터 노드 3대가 생성되며, HA를 위해서 이중화, 삼중화가 되어 있음
마스터 노드는 히든으로 구성되어 사용자에게 노출되지 않음
사용자는 Worker node 만 관리하면 됨
쿠버네티스 모니터링 도구도 자동으로 설치, Dashboard 접속을 통해 모니터링 수행
어우 쿠버네티스는 받아적으면서도 무슨소린지 하나도 모르겠다.
별도로 공부 필요
쿠버네티스 기초 학습
운영 수준의 컨테이너 오케스트레이션
kubernetes.io