Kubernetes 개요
- Kubernetes 클러스터 생성
- 컨테이너화된 애플리케이션 생성
Kubernetes란
Kubernetes 객체의 두 가지 요소
Kubernetes 객체
ㄴ 클러스터 상태를 나타내는 영구 항목
- 객체 사양 : 사용자가 정의한 바람직한 상태
- 객체 상태 : Kubernetes가 나타내는 현재 상태
Kubernetes Architecture
- kube-APIserver : 클러스터의 모든 명령을 수락하는
진입점
- etcd : 클러스터의 상태를 안정적으로 저장하는 역할
- kube-scheduler : 파드를 노드에 예약하는 역할
- kube-controller-manager : 상태를 지속적으로
모니터링하고 바람직한 상태를 달성하기 위해 변경을 시도
- kube-cloud-manager : 클라우드 제공업체와 상호작용하는
컨트롤러를 관리
- kubelet : 컨테이너 런타임을 사용하여 파드를 시작
- kube-proxy : 클러스터의 파드 간에 네트워크 연결을 유지
Pod : 배포 가능한 가장 작은 Kubernetes 객체
객체는 yaml 파일에 정의
apiVersion: apps/v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
모든 객체를 이름으로 식별
라벨 선택기로 라벨을 일치
워크로드를 사용 가능한 노드에 균등하게 분산
파드 및 컨트롤러 객체
바람직한 상태를 유지하는 Deployment
Deployment를 통해 Pod 집합이 실행되는지 관리
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
리소스의 지정 범위를 정의하는 네임스페이스
클러스터의 초기 네임스페이스