Pod의 특징을 알아보자
첫 번째 특징 - Container
- 파드에는 하나의 독립적인 서비스를 구동할 수 있는 컨테이너가 있음
- 컨테이너는 포트를 가지고 있고, 한 컨테이너가 포트를 하나 이상 가질 수 있음
- 하지만 파드 내 컨테이너끼리 포트가 겹치면 안 됨
- 컨테이너끼리는 포트로 접속 가능
파드가 생성될 때 고유의 IP 주소 할당
- 쿠버네티스 클러스터내에서만 접근 가능, 외부는 불가능
- 파드에 문제가 생길 시, IP주소 변경됨 --> 휘발성이 있음
Sample YAML
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
- pod name: pod-1
- containers name: container1, container2
- image: kubetm/p8000, kubetm/p8080
- ports: 8000, 8080
두 번째 특징 - Label
- 라벨은 파드뿐만 아니라 모든 오브젝트에 달 수 있음, 파드에 많이 사용됨
- 라벨 사용의 목적: 오브젝트를 분류하고, 분류된 오브젝트만 연결하려고
- 라벨은 Key: Value로 구성됨
- 한 파드에는 여러 개의 라벨을 달 수 있음
그림 설명
- type:web은 Pod1, Pod4에 있는데, 하나는 개발, 하나는 상용 환경에 있음
- 나머지도 다 그런식임
- 웹 개발자가 웹 타입만 보고 싶으면 type:web 라벨을 선택하면 됨
- 상용환경만 보고 싶으면 lo:production 라벨을 선택하면 됨
Sample YAML
Pod
apiVersion: v1
kind: Pod
metadata:
name: pod-2
labels:
type: web
lo: dev
spec:
containers:
- name: container
image: kubetm/init
- 이건 위 그림에서 파드를 만들 때 씀
- labels에 type:web, lo: dev를 씀
Service
apiVersion: v1
kind: Service
metadata:
name: svc-1
spec:
selector:
type: web
ports:
- port: 8080
- 이건 위 그림에서 서비스를 만들 때 씀
- selector에 type: web을 쓰니 해당 내용과 매칭되는 라벨이 붙어있는 파드에 연결됨
세 번째 특징 - Node Schedule
- 파드는 결국 여러 노드들 중 한 노드에 올라가야 함
- 노드를 직접 선택하는 방법과 쿠버네티스가 정해주는 방법이 있음
직접 선택하는 방법
- 노드에 라벨을 만들고 파드를 만들 때 노드를 지정
Sample YAML
apiVersion: v1
kind: Pod
metadata:
name: pod-3
spec:
nodeSelector:
hostname: node1
containers:
- name: container
image: kubetm/init
- nodeSelector에 라벨을 정해줬음
쿠버네티스가 노드를 선택하는 방법
- 노드에는 전체 사용가능한 자원량이 있음 --> 메모리, CPU가 대표적
- 메모리를 예로 들면, 파드가 2GB 메모리를 요구하는 사용량을 설정하면 메모리 여유가 있는 Node2로 감
- 파드에 사용량을 써야 노드안에 파드들이 사이좋게 돌아감
Sample YAML
apiVersion: v1
kind: Pod
metadata:
name: pod-4
spec:
containers:
- name: container
image: kubetm/init
resources:
requests:
memory: 2Gi
limits:
memory: 3Gi
limit은 또 뭐임
- 메모리의 경우 limit을 초과하면 pod 종료
- CPU 경우 초과하면 request로 낮추지 종료하지 않음
출처
인프런 - 대세는 쿠버네티스 7강
'네트워크 > k8s' 카테고리의 다른 글
[k8s] 6. Volume - emptyDir, hostPath, PV/PVC (0) | 2021.02.04 |
---|---|
[k8s] 5. Service - 실습 (0) | 2021.02.03 |
[k8s] 4. Service - ClusterIP, NodePort, LoadBalancer (0) | 2021.02.01 |
[k8s] 3. Pod - 실습 (0) | 2021.01.31 |
[k8s] 2. 쿠버네티스 설치 (1) | 2021.01.31 |