Kubernetes
kind
Terms
Links
- 공식 쿠버네티스 슬랙 채널 http://slack.k8s.io
- 쿠버네티스 공개 포럼 https://discuss.kubernetes.io
- 쿠버네티스 팟캐스트 https://kubernetespodcast.com
- TGI Kubernetes https://github.com/heptio/tgik
Docs
새로 개발한 애플리케이션을 쿠버네티스에서 사용하는 과정
쿠버네티스 기능
- 배포 계획에 맞춰 애플리케이션을 신속하게 배포할 수 있다
- 컨테이너 개수, CPU 사용률, 메모리 사용량을 설정 가능
- 저장 공간, 네트워크 접근 제어, 로드밸런싱 기능 설정 가능
- 가동 중인 애플리케이션을 스케일 업/다운할 수 있다
- 요청이 많을 때는 컨테이너 수를 늘려서 처리 능력을 높임
- 요청이 적을 때는 컨테이너 수를 줄여서 자원 점유율이나 요금을 줄임
- 새로운 버전의 애플리케이션을 무정지로 업그레이드 할 수 있다
- 하드웨어 가동률을 높여 자원 낭비를 줄인다
쿠버네티스 특징
k8s 클러스터를 구성하는 코어 프로세스
- kubectl: k8s 클러스터를 조작하기 위한 도구로 가장 빈번하게 이용되는 커맨드 라인 인터페이스다
- kube-apiserver: kubectl 등의 API 클라이언트로부터 오는 REST 요청을 검증하고, API 오브젝트를 구성하고 상태를 보고한다.
- kube-scheduler: 쿠버네티스의 기본 스케줄러이며, 새로 생성된 모든 파드에 대해 실행할 최적의 노드를 선택한다. 스케줄러는 파드가 실행 가능한 노드를 찾은 다음 점수를 계산하여 가장 점수가 높은 노드를 선택한다.
- kube-controller-manager: 컨트롤러를 구동하는 마스터상의 컴포넌트
- cloud-controller-manager: API를 통해서 클라우드 서비스와 연계하는 컨트롤러로, 클라우드 업체에서 개발한다.
- etcd: k8s 클러스터의 모든 관리 데이터는 etcd에 저장된다. 이 etcd는 CoreOS가 개발한 분산 키/값 저장소로 신뢰성이 요구되는 핵심 데이터의 저장 및 접근을 위해 설계 되었다
- kubelet: kubelet은 각 노드에서 다음과 같은 역할을 수행한다.
- 파드와 컨테이너의 샐행
- 파드와 노드의 상태를 API 서버에 보고
- 컨테이너의 동작을 확인하는 프로브 실행
- 내장된 cAdvisor를 통해 메트릭 수집 및 공개
- kube-proxy: kube-proxy 는 각 노드에서 동작하며 로드밸런싱 기능을 제공한다
- 서비스와 파드의 변경을 감지하여 최신 상태로 유지
- iptables 규칙을 관리
- coredns: 파드가 서비스 이름으로부터 IP 주소를 얻기 위해 사용된다
애드온 컴포넌트
- kube-flannel: 모든 노드에서 실행되어 여러 노드 사이에서 IPv4 네트워크를 제공한다.
- calico-kube-controllers: calico를 위한 컨트롤러. 데이터 스토어로서 etcd를 이용하기 위하여 사용된다
- calico-node: 모든 노드에서 실행되어 노드 간 파드의 통신, 라우팅, 네트워크 접근 관리 기능을 제공한다
- kubernetes-dashboard: Web 대시보드
- metrics-server: heapster를 대신하여 버전 1.8부터 도입되었다. API의 aggregation layer를 통해서 k8s 클러스터 전체로부터 메트릭을 수집한다
개발자를 위한 쿠버네티스 개념
<uml>
[디플로이먼트] –
> [레플리카세트]
[
크론잡] –
> [잡]
[
데몬세트] –
> [파드]
[
레플리카세트] –
> [파드]
[
스테이트풀세트] –
> [파드]