CKA 자격증 준비 과정에서 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 수강하고 정리한 내용입니다. 대부분의 자료는 해당 강의의 자료이며, 이외 레퍼런스는 관련 내용 상단에 표기하였으니 참고 바랍니다.
1. Pod란?
쿠버네티스는 Worker Node 내에 Docker Image 등의 컨테이너를 배포하고 실행시킵니다. (e.g. Redis)
하지만 Worker Node에 컨테이너를 직접 배포하지는 않습니다.
Pod라고 불려지는 Kubernetes Object로 캡슐화하는데, Pod는 애플리케이션을 실행하기 위한 단일 인스턴스입니다.
Pod는 아래의 특성을 가지고 있습니다.
- Pod는 쿠버네티스에서 생성하는 최소 단위이다.
- 서버에 부하가 늘어나서 스케일을 늘여야 할 때, Pod 안의 앱을 추가 배포하는 것이 아니라 Pod를 동일 워커 노드나 다른 워커 노드에 추가 배포한다.
- 보통 Pod와 컨테이너는 1:1 관계이다.
- 하지만 하나의 Pod에 컨테이너를 하나만 배포할 수 있는 건 아니다. 위의 스케일링 등을 위해 하나의 Pod에 여러 목적의 컨테이너가 있는 것은 비효율적이기에 하나의 컨테이너만 배포하는 것이 일반적이다.
- 하지만 Helper Container라고 해서 메인 컨테이너를 초기화하거나, 데이터를 끌어오는 등의 메인 컨테이너를 도와주는 목적의 컨테이너는 많이 사용한다. 이 경우, 하나의 Pod에 여러 컨테이너가 올라갈 수 있다.
- 동일 Pod의 각 컨테이너들은 localhost로 통신하며, 동일 네트워크를 공유한다. 스토리지 또한 필요에 따라 공유할 수 있다. Pod가 시작되면 모든 컨테이너가 시작되며, Pod가 종료되면 모든 컨테이너가 죽는다.
2. PODs with YAML
Kubernetes Definition은 아래를 반드시 포함해야 한다.
apiVersion:
kind:
metadata:
spec:
## Example Pod
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels: #label은 오브젝트를 식별하기 위한 것으로, 식별을 잘 할 수 있도록 원하는대로 추가하면 된다.
app: myapp
tier: front-end
spec:
containers:
- name: nginx-container
image: nginx
3. Code
## Imperative 명령어
# Pod 생성
kubectl run nginx --image=nginx
# Pod 삭제
kubectl delete pod nginx
# Pod 조회
kubectl get pod # pods po 모두 가능
# Pod 설명
kubectl describe pod nginx
# Pod 편집
kubectl edit pod nginx
# nginx 생성 명령어를 YAML 파일로 내보내기 (Declarative)
kubectl run nginx --image-nginx --dry-run=client -o yaml > nginx-pod.yaml
# Declarative 명령 실행
kubectl apply -f nginx-pod.yaml
'스터디 > DevOps' 카테고리의 다른 글
[DevOps] Jupyterhub에서 Copilot&Copilot Chat 사용하기 (1) | 2023.12.24 |
---|---|
[Kubernetes] #4 ReplicaSet (0) | 2022.10.29 |
[Kubernetes] #2 Kubernetes Architecture (0) | 2022.09.29 |
[Kubernetes] #1 Kubernetes(쿠버네티스) 개요 및 가상화 기술 (0) | 2022.09.29 |
[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub)에 Random Port 설정하기 (0) | 2022.04.17 |