[Kubernetes] POD 포드란? 생성, 수정, 확인, 삭제
Kubernetes 는 어플리케이션을 컨테이너 형태로 호스팅하고,
컨테이너들은 POD 라는 곳에 캡슐화되어 배포되어진다.
POD 란?
POD는 Kubernetes의 가장 작은 단위의 객체이다. 보통 scaling 을 위해 어플리케이션과 컨테이너를 일대일 관계로 맺어주지만 다수의 컨테이너가 하나의 포드안에 존재하는 경우도 존재한다.
* kuberentes 는 어플리케이션의 스케일링을 위해 더 많은 POD를 배포한다.
POD 구성하기
kuberentes 는 YAML 파일 형식으로 작성된 definition file 을 사용해 객체(Pods, Replicas, Deployments, Service, 등)를 구성한다.
apiVersion: v1
kind: Pod
metadata:
name: <포드이름>
labels: #원하는 정보를 key, value 형식으로 선언할 수 있다.
app: <앱이름>
type: <앱타입: backend>
spec:
containers:
- name: <컨테이너이름>
image: <컨테이너이미지>
1. apiVersion(str): 객체를 생성할때 사용될 kuberentes API 버전
2. kind(str): 생성할 객체의 타입(*case sensitive) 포드를 생성하기 위해서는 POD
3. metadata(dict): 객체의 정보, 해당 정보를 사용해 kuberentes 는 필터를 사용하기도한다.
*label에 선언된 정보를 사용해 kuberentes 는 포드를 필터할 수 있다.
4. specs(dict): 객체의 구성 스팩을 담는 필드, 여러개의 컨테이너가 선언될 수 있다.
*containers 블럭안에 - name 은 리스트의 첫번째 객체를 나타낸다.
POD 생성하는 법
# 방법 1: cli 로 생성하기
kubectl run <포드이름> --image=<이미지이름>
kubectl run nginx --image=nginx
# 방법 2
kubectl run <포드이름> --image=<이미지이름> --dry-run=clinet -o yaml > <생성할파일이름>
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx-definition.yaml
kubectl apply -f nginx-definition.yaml
kubernetes 는 입력받은 포드이름으로 포드를 생성하고, 선언된 도커 이미지를 docker hub 에서 다운로드 받는다.
2. 선언된 도커이미지를 docker hub 에서 다운로드한다.
* public, private 이미지 모두 사용할 수 있다.
POD 리스트 확인하기
kubectl get pods
kubectl get pods -o wide
* POD의 상태 또한 확인 할 수 있다.
POD 상세정보 확인하기
kubectl describe pod <pod_name>
kubectl describe pod nginx
POD 수정하기
# 방법 1
kubectl edit pod <포드이름>
kubectl edit pod nginx
# 방법 2: 직접 definition 파일 수정
vim ./nginx-definition.yaml
kubectl apply -f <구성파일이름>
kubectl apply -f nginx-definition.yaml
POD 삭제하기
kubectl delete pod <포드이름>
kubectl delete pod nginx