Kubernetes 소개
K8s
·
Kubernetes란?
- 키잡이(helmsman)나 파일럿을 뜻하는 그리스어에서 유래
- K8s라는 표기는 “K”와 “s”와 그 사이에 있는 8글자를 나타내는 약식 표기
- 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼
- 워크로드? 쿠버네티스에서 구동되는 애플리케이션
- 서비스? 파드 집합에서 실행 중인 애플리케이션을 노출하는 방법
- 선언적 구성과 자동화를 모두 용이하게 함
- 크고, 빠르게 성장하는 생태계를 가짐
- 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용 가능
- 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화
- 프로덕션 워크로드를 대규모로 운영하는 15년 이상의 구글 경험과
커뮤니티의 최고의 아이디어와 적용 사례가 결합
쿠버네티스의 제공 기능
- 서비스 디스커버리와 로드 밸런싱
- DNS나 자체 IP 주소로 컨테이너 노출 가능
- 네트워크 트래픽을 로드밸런싱하여 안정적 배포
- 스토리지 오케스트레이션
- 자동화된 롤아웃과 롤백
- 배포된 컨테이너를 원하는 상태로 서술 가능
- 현재 상태를 원하는 상태로 설정에 따라 변경 가능
- 자동화된 빈 패킹(bin packing)
- 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해줌
- 자동화된 복구(self-healing)
- 실패한 컨테이너 다시 시작하고, 컨테이너 교체
- 응답하지 않는 컨테이너 죽임
- 시크릿과 구성 관리
쿠버네티스 구성요소
클러스터
- 쿠버네티스를 배포하면 클러스터를 얻음.
- 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합
- 노드? 쿠버네티스의 작업 장비
- 모든 클러스터는 최소 한 개의 워커 노드를 가짐.
- 일반적으로 여러 노드를 실행, 내결함성과 고가용성
- 워커 노드는 애플리케이션의 구성요소인 파드를 호스트
- 파드? 클러스터에서 실행 중인 컨테이너의 집합
컨트롤 플레인
- 컨테이너의 라이프사이클을 정의, 배포, 관리하기 위한 API와 인터페이스들을 노출하는 컨테이너 오케스트레이션 레이어
- 워커 노드와 클러스터 내 파드를 관리
- 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행
- kube-apiserver
- 쿠버네티스 API를 노출
- 쿠버네티스 컨트롤 플레인의 프론트 엔드
- 쿠베네티스 API 서버의 주요 구현
- 수평으로 확장되도록 디자인
- etcd
- 모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성*고가용성 키-값 저장소
- kube-scheduler
- 노드가 배정되지 않은 새로 생성된 파드를 감지하고, 실행할 노드를 선택
- kube-controller-manager
- 동작 중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공하며, 모든 노드 상에서 동작
- kubelet
- 클러스터의 각 노드에서 실행되는 에이전트
- 파드에서 컨테이너가 확실하게 동작하도록 관리
- kube-proxy
- 클러스터의 가가 노드에서 실행되는 네트워크 프록시
- 쿠버네티스의 서비스 개념의 구현부
- 노드의 네트워크 규칙을 유지 관리
- 컨테이너 런타임
출처
kubernetes 공식 문서