반응형
본 글은 인프런 강의 "대세는 쿠버네티스 [초급~중급]" 를 듣고 요약 및 실습 정리한 내용입니다.
Pod
- 파드 내에는 하나의 독립적인 서비스를 구성할 수 있는 여러개의 Container가 있을 수 있음
Container
- 서비스가 연결될 수 있도록 포트를 가지고 있음
- 한 컨테이너가 하나 이상의 포트를 가질 수는 있지만 파드 내에서 다른 컨테이너와 중복된 포트를 가질 수 는 없음

- 두 container는 하나의 host로 묶여있어서 container들끼리 localhost로 접근 가능

- pod가 생성될 떄 고유한 ip 주소가 할당되는데 재생성시 변경됨
- 쿠버네티스 클러스터에서만 접근가능, 외부에서 접근 불가
- 파드에 문제가 생기면 재생성되는데 ip가 변경됨
Pod 생성을 위한 yaml 파일 내용
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- name: container1
image: tmkube/p8000
ports:
- containerPort: 8000 # container의 노출된 포트
- name: container2
image: tmkube/p8080
ports:
- containerPort: 8080
실습
- dashboard에서 아래 yaml파일 통해 파드 생성
- JSON로 변경하면 오른쪽과 같이 생성됨 (container2는 제외)
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- name: container1
image: tmkube/p8000
ports:
- containerPort: 8000 # container의 노출된 포트
- name: container2
image: tmkube/p8080
ports:
- containerPort: 8080
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "pod-1"
},
"spec": {
"containers": [
{
"name": "container1",
"image": "tmkube/p8000",
"ports": [
{
"containerPort": 8000
}
]
}
]
}
}

- IP를 확인할 수 있고 이는 쿠버네티스 클러스터 내에서만 접근 가능
- master node에서 아래 명령어를 통해 pod 내의 container에 접근 가능
[root@k8s-master ~]# curl 20.109.131.1:8000
containerPort : 8000
[root@k8s-master ~]# curl 20.109.131.1:8080
containerPort : 8080
한 pod 내에 동일한 포트가 노출된 2개의 container를 띄우는 경우
apiVersion: v1
kind: Pod
metadata:
name: pod-2
spec:
containers:
- name: container1
image: tmkube/p8000
ports:
- containerPort: 8000 # container의 노출된 포트
- name: container2
image: tmkube/p8000
ports:
- containerPort: 8000

- Container2 내의 로그를 보면 Error: listen EADDRINUSE: address already in use :::8000 즉, 동일한 port가 이미 사용중이라는 에러가 발생했음
반응형
'Kubernetes' 카테고리의 다른 글
Service - ClusterIP, NodePort, LoadBalancer (0) | 2024.10.13 |
---|---|
Node schedule (0) | 2024.08.04 |
Pod - Label (0) | 2024.08.04 |