1. 쿠버네티스 클러스터의 전체 구조
- 마스터
- etcd, kube-apiserver, kube-scheduler, kube-controller-manager, kubelet, kube-proxy, docker 등의 컴포넌트가 실행된다
- etcd
- Key Value 저장소 이자 데이터베이스 역할을 한다.
- 서버 하나당 프로세스 1개만 사용 가능하다
- kube-apiserver
- 쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트이다.
- 클러스터로 온 요청이 유효한지 검증
- 서버 여러 대에 여러개 실행 가능
- kube-scheduler
- 현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새롭게 만든 파드를 실행한다.
- kube-controller-manager
- Pod들을 관리하는 Controller를 실행하는 컴포넌트이다.
- Cloud-controller-manager
- 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트이다.
- 4가지 컨트롤러를 관리한다.
- Node Controller: 클라우드 서비스 안에서 노드를 관리하는 데 사용된다.
- Route Controller: 각 클라우드 서비스 안의 네트워크 라우팅을 관리하는데 사용된다.
- Service Controller: 각 클라우드 서비스에서 제공하는 로드밸런서를 생성, 갱신, 삭제하는 데 사용된다.
- Volume Controller: 클라우드 서비스에서 생성한 볼륨을 노드에 연결하거나 마운트하는 등에 사용된다.
- 노드
- kubelet, kube-proxy, docker 등의 컴포넌트가 실행된다
- kubelet
- 파드 컨테이너들의 실행을 직접 관리하는 컴포넌트이다(실행 및 헬스체크를 한다)
- kube-proxy
- 가상 네트워크의 동작을 관리하는 컴포넌트이다(네트워크 규칙관리 및 연결전달)
- 컨테이너 런타임(도커)
- 실제 컨테이너를 실행하는 컴포넌트
- 애드온
- 네트워킹 애드온
- 각 클라우드 서비스마다 제공하는 애드온이 있다
- DNS 애드온
- kube-dns
- CoreDNS (1.13버전 부터는 기본 DNS애드온이 되었다)
- 대시보드 애드온
- 쿠버네티스 웹 UI 버전이라고 생각하면 된다
- 컨테이너 자원 모니터링
- 클러스터 안에서 실행 중인 컨테이너의 상태를 모니터링하는 애드온이다
- 클러스터 로깅
- 로그들을 중앙화한 로그 수집 시스템에 모아서 보는 애드온이다
(클라우드 서비스를 이용중이라면 따로 제공하는 로깅 서비스가 있다).
- 로그들을 중앙화한 로그 수집 시스템에 모아서 보는 애드온이다
- 네트워킹 애드온
2. 오브젝트와 컨트롤러
- Object
- Pod, Service, Volume, Namespace 등이 있다
- Controller
- ReplicaSet, Deployment, StatefulSet, DaemonSet, Job 등이 있다
2.1. 네임 스페이스
네임 스페이스는 쿠버네티스 클러스터 하나를 여러 개 논리적인 단위로 나눠서 사용하는 것이다.
2.1.1. Namespace 종류
- default : 기본 네임 스페이스
- kube-system : 시스템에서 관리하는 네임스페이스, 쿠버네티스 관리용 파드나 설정이 있다.
- kube-public : 클러스터 안 모든 사용자가 읽을 수 있는 네임스페이스, 보통 클러스터 사용량 같은 정보를 관리한다.
- kube-node-lease : Lease Object를 관리하는 네임스페이스
2.1.2. 명령어
- Namespace 확인
- kubectl get namespaces
- 기본 Namespace변경
- Context 정보 확인
- config current-context
- config get-contexts docker-desktop
- 기본 Namespace변경
- kubectl config set-context docker-desktop --namespace=kube-system
- 또는 kubectl config set-context $(kubectl config current-context) --namespace=kube-system
- 변경확인
- kubectl config get-contexts $(kubectl config current-context) --namespace=kube-system
- kubectl config view | grep namespace
- Pod마다 기본 Namespace설정 확인
- kubectl get pods --all-namespaces
- Context 정보 확인
2.2. 템플릿
템플릿의 기본형식은 아래와 같다
---
apiVersion: v1
kind: Pod
metadata:
spec:
자세한 사항은 explain 명령어를 통해 확인 가능하다
- kubectl explain pods
- kubectl explain pods.metadata
- kubectl explain pods --recursive
'Infra > Kubernetes' 카테고리의 다른 글
Docker 명령어 정리 (0) | 2020.09.19 |
---|---|
4. POD (0) | 2020.06.05 |
2. 쿠버네티스로 컨테이너 실행하기 (0) | 2020.06.04 |
1. 쿠버네티스 관련 설정 및 설치 (0) | 2020.06.03 |
4. 파드와 노드 (0) | 2020.05.24 |