728x90
- Pod IP 는 Pod가 생성될 때 부여되고, Pod 삭제 후 재생성시 IP가 변경.
- Pod IP는 Cluster 내에서만 연결 가능하고, Cluster 외부에서는 통신이 불가.
※ 통신이 가능하게 하려면 Container를 Service로 연결하고, 그 이후에 Service를 통해서 컨테이너 간에 통신이 가능하다.
- Pod 내부에 여러 개의 Container를 추가할 수 있고, 이 Container가 하나의 App의 기능을 한다.
- Pod 내부의 Container끼리는 localhost로 Port만 지정해서 호출이 가능
- Container 간에 같은 Port를 노출시키면 Pod 생성시 아래와 같은 Port 충돌 에러가 발생.
[root@k8s-master ~]# kubectl logs pod-2 -c
container2 node:events:497 throw er; // Unhandled 'error' event ^ Error:
listen EADDRINUSE: address already in use :::8080 at ...
Pod 생성을 위한 yaml 예시
# apiVersion
# 작성하는 yaml이 v1 버전의 kubernetes API 버전 문법으로 해석.
# Deployment의 경우, apiVersion: apps/v1 이런 식으로 작성
apiVersion: v1
# kind
# 어떤 리소스를 만들건지 정의, Deployment? Pod? Service?
kind: Pod
# metadata
# 리소스의 이름(위에서 Pod를 정의했으니, 여기선 'Pod'의 이름이 된다.)
metadata:
name: pod-1
# Pod를 어떻게 동작시킬지 정의하는 부분
# 컨테이너, 볼륨, 네트워크, 재시작 정책, 환경변수, 리소스 제한 등 정의 가능
spec:
# Pod 안에서 실행할 컨테이너 목록
# 하나의 Pod 안에는 여러 개의 컨테이너 정의가 가능
# 업무간의 연관성이 높은 컨테이너를 묶어서 하나의 Pod로 만든다.
containers:
# Pod 내부에서 구분하기 위한 이름
- name: container1
# 어떤 Docker 이미지를 사용할 것인가?
image: kubetm/p8000
ports:
# 컨테이너가 사용할 Port
# 외부에서 접근하기 위해 사용하는 Port가 아니다.
# 외부에서 접근하기 위해서는 Service / NodePort / LoadBalancer / Ingress 등 필요
- containerPort: 8000
- name: container2
image: kubetm/p8080
ports:
- containerPort: 8080
※ 같은 Pod 안에 정의된 Container들은 네트워크를 공유한다.
container1과 container2는 같은 IP를 사용한다는 의미. (같은 Pod = 같은 Network Namespace!!)
'k8s' 카테고리의 다른 글
| 6. kubectl [create | apply | get | describe | delete | exec] (0) | 2026.05.08 |
|---|---|
| 5. Node Schedule (0) | 2026.05.07 |
| 4. Service (0) | 2026.05.07 |
| 3. labels (0) | 2026.05.07 |
| 쿠버네티스 DAY1 (0) | 2023.04.17 |