Kubernetes 개요
- Kubernetes 클러스터 생성
- 컨테이너화된 애플리케이션 생성
Kubernetes란
![](https://velog.velcdn.com/images/mraz0210/post/fee600f7-c107-4cc1-947d-e557b39346f6/image.png)
Kubernetes 객체의 두 가지 요소
Kubernetes 객체
ㄴ 클러스터 상태를 나타내는 영구 항목
- 객체 사양 : 사용자가 정의한 바람직한 상태
- 객체 상태 : Kubernetes가 나타내는 현재 상태
Kubernetes Architecture
![](https://velog.velcdn.com/images/mraz0210/post/173b8d76-077c-43f4-b174-c38e840a4d02/image.png)
- kube-APIserver : 클러스터의 모든 명령을 수락하는
진입점
- etcd : 클러스터의 상태를 안정적으로 저장하는 역할
- kube-scheduler : 파드를 노드에 예약하는 역할
- kube-controller-manager : 상태를 지속적으로
모니터링하고 바람직한 상태를 달성하기 위해 변경을 시도
- kube-cloud-manager : 클라우드 제공업체와 상호작용하는
컨트롤러를 관리
- kubelet : 컨테이너 런타임을 사용하여 파드를 시작
- kube-proxy : 클러스터의 파드 간에 네트워크 연결을 유지
![](https://velog.velcdn.com/images/mraz0210/post/6b78897e-cfad-4ec0-8b21-cb4b6d3c94ca/image.png)
Pod : 배포 가능한 가장 작은 Kubernetes 객체
객체는 yaml 파일에 정의
apiVersion: apps/v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
모든 객체를 이름으로 식별
![](https://velog.velcdn.com/images/mraz0210/post/a24ac955-f888-4053-89ce-3ae3ef7c6c10/image.png)
라벨 선택기로 라벨을 일치
![](https://velog.velcdn.com/images/mraz0210/post/cbd52649-6787-4f65-8474-f168aa899a98/image.png)
워크로드를 사용 가능한 노드에 균등하게 분산
![](https://velog.velcdn.com/images/mraz0210/post/8960911b-80e8-4ce4-bf17-efafe108ffaf/image.png)
파드 및 컨트롤러 객체
![](https://velog.velcdn.com/images/mraz0210/post/caf3a6f8-ef71-4c0d-83ef-66efb084cf84/image.png)
바람직한 상태를 유지하는 Deployment
![](https://velog.velcdn.com/images/mraz0210/post/27a787b0-02ff-4f64-8bf1-cf565b81b90f/image.png)
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
리소스의 지정 범위를 정의하는 네임스페이스
![](https://velog.velcdn.com/images/mraz0210/post/c78c2f42-9225-4e4b-aaae-9cc661984f11/image.png)
클러스터의 초기 네임스페이스
![](https://velog.velcdn.com/images/mraz0210/post/64f75ec7-4ee6-4c8b-ab54-a8ee22c33e00/image.png)