Pod는 쿠버네티스 오브젝트중 가작 작은 단위로써, 하나 이상의 컨테이너로 이루어진 집합이다.
파드
운영 수준의 컨테이너 오케스트레이션
kubernetes.io
Pod내 컨테이너들은 네트워크와 스토리지를 공유해 localhost로 서로 통신할 수 있고, Pod끼리는 격리되어 있다.
쿠버네티스에서 바라보는 Pod는 언제든 대체 가능한 자원이다. 즉 망가지거나 문제가 생기면 언제든 버리고 새로운 Pod로 갈아치울 수 있도록 하는것이 Pod의 역할이다.
Pod들은 클러스터 내에서 유일한 IP를 가지고 있고 이는 쿠버네티스 초기화시 사용된 cidr 범위 내에서 제공된다.
이러한 pod는 다양한 생성 방법이 있지만 여기선 yml파일작성을 통한 생성에 대해 알아본다.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
apiVersion
v1 고정이다
kind
Pod 타입이다.
metadata
다양한 메타 데이터들을 선언한다
이름(name), 라벨(label)등을 선언한다.
spec
사용할 pod의 스펙에 대해 선언한다.
spec.containers
pod에서 사용될 container들에 대해 선언한다.
- name 으로 구분된다.
spec.containers.name
사용될 컨테이너의 이름이다.
spec.containers.image
사용될 컨테이너의 이미지다.
이는 repository를 지정하지 않을시 default로 도커 저장소에서 가져오도록 설정이 되어있으며, 자신의 저장소가 있다면 해당 저장소를 사용하면 된다.
spec.containers.ports
컨테이너의 포트에 대해 설정한다. containerPort를 통해 컨테이너에서 expose할 포트를 지정한다.
여기까지가 기본 pod 선언에 대한 내용이다.
추가 설정.
만약 특정 node로 배포를 하고자 한다면
spec.nodeName 설정을 추가한다.
spec:
nodeName: foo