1️⃣ 쿠버네티스
- 컨테이너의 배포(스캐쥴링), 운영(HA,Failover),확장(Scaling) 을 자동화 하기위한 플랫폼
- 마스터노드 (Control Plane) 설치, 운영에 대한 고민 없이 사용자는 Container 가 구동되는 Worker Node 에 대한 관리만 하면 됨
2️⃣ 쿠버네티스 주요 기능
- Automatic Binpacking 워커노드의 가용성을 유지 하면서 보유한 리소스를 충분히 활용 할 수 있도록 스스로 스케쥴링 하여 컨테이너를 배치함
- Service Discovery & LB 컨테이너에 IP 주소를 자동으로 할당하고 클러스터 내 트래픽을 로드밸런싱 할 수 있는 컨테이너 세트에 단일 DNS 이름을 할당함
- Self Healing 실패한 컨테이너를 자동으로 다시 시작하고 사용자가 정의한 헬스체크에 응답이 없는 컨테이너를 종료함. 워커노드 장애시 사용가능한 다른워커노드에 컨테이너를 다시 가동함
- 이외 로컬스토리지,공유 네트워크 스토리지를 컨테이너에 마운트 가능, 보안키 같은 것들을 컨테이너 이미지의 변경 없이 업데이트 할 수 있고 노출이 안되도록 사용, CPU 사용률 과 같은 metric 를 기반으로 pod 의 Deplouments replicaset 을 스케쥴링 하여 수평적인 확장 가능 (유지시킬 파드의 개수)
3️⃣ 쿠버네티스 설명 상세
쿠버네티스를 비유하자면, 그것은 컨테이너들로 이루어진 효율적이고 자율적인 도시 관리자라고 생각할 수 있습니다.
상상해보세요. 하나의 큰 도시가 여러 개의 건물과 인프라로 구성되어 있습니다. 각 건물은 하나의 컨테이너에 해당하고, 그 안에는 애플리케이션과 그 애플리케이션에 필요한 모든 것들이 포함되어 있습니다. 이 도시에는 도로, 교통 신호, 수도 시스템 등이 필요합니다. 이 모든 것을 관리하는 주요 인물이 바로 "쿠버네티스"라고 생각할 수 있습니다.
- 도로와 교통 신호 (Service Discovery and Load Balancing):
쿠버네티스는 도시 내의 모든 건물(컨테이너)이 서로 통신할 수 있도록 도로를 설치합니다. 또한 교통 신호를 통해 효율적으로 차량(트래픽)을 관리하여 각 건물에 도착하는 트래픽을 균형 있게 분산합니다.
- 도시 기반 시설 (Storage and Volumes):
쿠버네티스는 각 건물이 필요한 자원(수도 등)을 적절하게 제공합니다. 각 건물은 필요에 따라 추가적인 자원(볼륨)을 요청하거나 사용하지 않는 자원을 반환할 수 있습니다.
- 안정성과 장애 복구 (Replication and Self-healing):
도시 관리자는 각 건물(컨테이너)을 여러 개로 복제하여 안정성을 유지합니다. 만약 어떤 건물이 문제가 생기면 다른 건물로 자동으로 교체하여 시스템의 안정성을 보장합니다.
- 도시 확장성 (Scaling):
도시가 성장하면 새로운 건물(컨테이너)을 추가하여 확장합니다. 도시 관리자는 필요에 따라 건물 수를 늘리거나 줄여서 도시를 최적으로 운영합니다.
- 도시 계획 (Rolling Updates):
새로운 도시 계획(새로운 애플리케이션 버전)이 나오면 도시 관리자는 점진적으로 이전 계획을 새로운 계획으로 바꿉니다. 이렇게 하면 도시의 기능을 업데이트하는 동안에도 도시가 원활하게 운영됩니다.
이렇게 쿠버네티스는 컨테이너 기반 애플리케이션들의 효율적인 관리와 운영을 위해 모든 요소를 조화롭게 연결하여 도시를 잘 관리하는 관리자와 같다고 볼 수 있습니다.