Pod은 여러 컨테이너를 감싸고 있는 콩껍질
과 같다
가장 기본적인 배포 단위
1개 이상의 Pod을 분산 배포/실행 가능
(Pod Replicas)Pod을 생성
할 때 노드에서 유일한 IP를 할당
(서버 분리 효과)Pod 내부 컨테이너 간에 localhost로 통신
가능, 포트 충돌 주의!
클러스터 내부에서만 접근 가능
단 하나의 명령어로 원하는 수만큼 Pod 생성
kubectl scale deployment app --replicas=3
Pod : Container = 1:1 or 1:N 결정
apiVersion:v1
Kubernetes API 버전
kind:Pod
오브젝트 타입
metadata:
name: kube-basic # 이름
labels: # 오브젝트 집합을 구할 때 사용할 이름표
app:kube-basic
project:simon
오브젝트를 유일하게 식별하기 위한 정보 및 이름, 이름표
spec:
nodeSelector: # Pod을 배포할 노드
containers: # Pod 안에서 실행할 컨테이너 목록
- name: kube-basic
image: kube-basic:1.0
imagePullPolicy: "Always:
ports:
- containerPort: 80 # 통신에 사용할 포트
env: # 환경변수 목록
- name: PROFILE # 환경변수 이름
value: simon # 환경변수 값
- name: LOG_DIRECTORY
value: /logs/${PROFILE}
volumneMounts: # 컨테이너에서 사용할 Pod 볼륨 목록
- name: html # Pod 볼륨 이름
mountPath: /var/html # 마운트할 컨테이너 경로
volumes: # 컨테이너가 사용할 수 있는 볼륨 목록
사용자가 원하는 오브젝트의 상태
Pod이 나도 모르는 사이에 종료가 되면?
-> 자가 치유 능력이 없음, Pod이나 노드 이상으로 종료되면 끝
-> 사용자가 선언한수 만큼 Pod을 유지
해주는 ReplicaSet
오브젝트 도입
Pod IP는 외부에서 접근할 수 없다, 그리고 생성할 때 마다 IP가 변경
-> 클러스터 외부에서 접근 가능한 고정적인 단일 엔드포인트 필요
-> Pod집합을 클러스터 외부로 노출
하기 위한 Service 오브젝트
도입