K8s Network
    Pod에는 하나의 Container를 사용하는 것이 권장이지만, 때에 따라 여러 Container를 혼재하여 사용하는 것도 가능하며, Container는 리눅스의 여러 격리 기술로 발전해왔습니다.
이때, 하나의 Pod내의 Container끼리도 리소스들이 격리되는 것이 정상이지만, 모든 Container가 같은 네임스페이스를 공유하는 커널단 리소스가 존재합니다.
IPC 네임스페이스와, Network 네임스페이스가 이에 속합니다.
Pause Container는 Network 네임스페이스를 생성하며, Container 생성 시, default로 자동 생성됩니다.

Pod 생성
하나의 Pod에 nginx, busybox 컨테이너를 생성합니다.
apiVersion: v1
kind: Pod
metadata:
  name: pause
spec:
  containers:
  - name: web
    image: nginx:1.21-alpine
  - name: tools
    image: busybox
    command: ["sh", "-c", "sleep 3600"]
kubectl apply -f <file.yaml>
"READY" 항목에 N/2 라고 되어있으면 정상적으로 두 개의 컨테이너 설정이 된 것입니다.

kubectl exec -it pause -c tools – sh #busybox 컨테이너에서 nginx에 접근
wget -qO- localhost - nginx의 기본 페이지 HTML이 출력되면, 두 컨테이너가 동일한 network 네임스페이스를 공유하고 있다는 결정적 증거입니다.

어떤 점이 결정적 증거라는 것일까요?
현재 컨테이너의 구조는 아래와 같습니다.
하나의 Pod, 하나의 IP, 하나의 Netns
Kubernetes는 Pod을 "네트워크 관점에서 하나의 호스트"로 취급합니다.
그래서 Pod 내 모든 컨테이너는 pause 컨테이너가 만든 network namespace (netns) 를 공유합니다.
그 안에서 nginx가 포트를 열면 busybox도 그 namespace 안에서 접근할 수 있는 것입니다.
그럼 정말로 Pause Container라는 것이 작동했는지 확인해보려고 합니다.


Network 네임스페이스 검증
Pause Container로 인하여, Pod 내부의 두 컨테이너가 동일한 Network 네임스페이스를 가지고 있는지 확인합니다.
sudo crictl ps -a | grep tools #tools Container ID 확인
sudo crictl inspect 95069ea802725 | grep pid #PID 확인
--> 4026으로 시작하는 네임스페이스 확인됨

컨테이너의 포트가 중복된다면?
하나만 생성되거나, 둘 다 정상적으로 생성되지 않습니다.
