Pause 컨테이너 실습
pause 컨테이너가 lo eth0 를 만들고, NET/MNT/UTS 네임스페이스를 공유한다.
Pod 생성
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: myweb
spec:
containers:
- image: nginx:alpine
name: myweb-container
ports:
- containerPort: 80
protocol: TCP
terminationGracePeriodSeconds: 0
EOF
`crictl ps`
명령어에는 pause 컨테이너가 없다.
pstree 명령어로 확인 할 수 있다.
한개의 pod에 두개의 컨테이너 생성 후 확인
apiVersion: v1
kind: Pod
metadata:
name: myweb2
spec:
containers:
- name: myweb2-nginx
image: nginx
ports:
- containerPort: 80
protocol: TCP
- name: myweb2-netshoot
image: nicolaka/netshoot
command: ["/bin/bash"]
args: ["-c", "while true; do sleep 5; curl localhost; done"] # 포드가 종료되지 않도록 유지합니다
terminationGracePeriodSeconds: 0
kubectl describe pod myweb2
Containers:
myweb2-nginx:
Container ID:
Image: nginx
Image ID:
Port: 80/TCP
Host Port: 0/TCP
State: Waiting
Reason: ContainerCreating
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-qbfh8 (ro)
myweb2-netshoot:
Container ID:
Image: nicolaka/netshoot
Image ID:
Port: <none>
Host Port: <none>
Command:
/bin/bash
Args:
-c
while true; do sleep 5; curl localhost; done
State: Waiting
Reason: ContainerCreating
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-qbfh8 (ro)
pod내 두 개의 컨테이너 ip 확인시 같은 것을 알 수 있다.
net, uts, ipc 네임스페이스를 공유하는 것을 알 수 있다.
pause 컨테이너가 네임스페이스 공유 역할을 하는 것을 알아보았다.
pause 컨테이너가 많이 중요한 것을 깨달았습니다.