안에 하나의 독립적인 서비스를 줄 수 있는 컨테이너가 있다.
컨테이너는 서비스가 연결될 수 있도록 포트를 가지고 있는데
한 컨테이너가 포트를 하나 이상 가질 순 있지만 한 파드 내에서
포트가 중복될 순 없다.
파드가 생성될때 고유의 ip주소가 할당된다.
쿠버네티스 클러스터 내에서만 이 ip를 통해 파드에 접근 가능하다.
pod에 문제가 생기면 시스템이 감지를 해 삭제 후 재 생성, ip주소는 변경 된다.
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- name: container1
image: kubetm/p8000
ports:
- containerPort: 8000
- name: container2
image: kubetm/p8080
ports:
- containerPort: 8080
Label
사용 이유 : Object를 분류, 분류된 Object 들만 따로 골라서 연결하기 위함구성 : Key-Value, 한 파드에 여러개의 라벨을 달 수 있다.
웹 화면만 보고 싶다 -> 타입이 웹인 라벨이 달린 파드들을 서비스에 연결하여 서비스의 정보를 웹 개발자에게 알려주면 된다. (자신이 원하는 파드들만 접속할 수 있음)
apiVersion: v1
kind: Pod
metadata:
name: pod-2
labels:
type: web
lo: dev
spec:
containers:
- name: container
image: kubetm/initapiVersion: v1
kind: Service
metadata:
name: svc-1
spec:
selector: selector에 key와 value를 넣으면 해당
type: web. 내용과 매칭되는 라벨이 붙어있는 파드에 연결된다.
ports:
- port: 8080
Node Schedule
Node에 라벨을 달아 Pod를 만들때 Node를 지정할 수 있다.
- 노드의 라벨과 매칭되는 key, value 를 넣는다.
apiVersion: v1
kind: Pod
metadata:
name: pod-3
spec:
nodeSelector:
kubernetes.io/hostname: k8s-node1
containers:
- name: container
image: kubetm/init
- 노드에 사용가능한 자원량(메모리)에 따라 쿠버네티스가 알아서 스케줄링을 해준다.
apiVersion: v1
kind: Pod
metadata:
name: pod-4
spec:
containers:
- name: container
image: kubetm/init
resources:
requests:
memory: 2Gi //Pod는 2GB만큼을 요구한다.
limits:
memory: 3Gi //초과시 Pod종료시킴
'kubernetes' 카테고리의 다른 글
Pod-Lifecycle (0) | 2023.08.10 |
---|---|
Namespace, ResourceQuota, LimitRange (0) | 2023.08.10 |
Service (0) | 2023.08.10 |
Controller (0) | 2023.08.10 |
Volume (0) | 2023.08.10 |