Kubernetes Pod Container의 Application PID를 Host에서 확인
Kubernetes Pod 내부 Container의 Application PID를 Host에서 확인
목적
Pod의 Pid는 Host(Node server)와 공유하고 있음.
그래서 pod 안의 Container에서 실행되는 Application의 정보도
Host의 /proc 정보로 확인해보면 hosts에서 Pid 를 확인할 수 있음
아래에서 진행되는 Test는
Pod의 pid정보는 host와 공유되고 있다는 것을 확인하기 위한 test.
Host에서 pid를 검색해서
해당 pid가 실행되는 Container를 찾아가는 과정을 정리함.
Test 환경
Test 에 사용한 yaml파일 예제
apiVersion: apps/v1 kind: Deployment metadata: name: iksoon-deployment-test labels: app: iksoon-test-a spec: replicas: 1 selector: matchLabels: app: iksoon-pod-testa template: metadata: labels: app: iksoon-pod-testa spec: containers: - name: iksoon-nginx-a image: nginx ports: - containerPort: 81 |
[생성 결과]
Pod내부에 nginx 이미지의 container 1가 실행 중인 상태.
해당 컨테이너 안에 들어가서 sleep 10000 명령을 실행
nginx Pod에서 실행한 sleep 10000 명령의 pid를 host에서 찾기
1. Pod가 배포되어 있는 Worker Node에서 pid검색
Container가 실행되고 있는 host에서
별도로 sleep 10000 명령을 실행하지 않았지만
"ps aux | grep sleep" 명령을 하면
sleep 10000 항목을 확인 가능
해당 sleep 10000 pid가 nginx Pod에서 실행한 sleep 10000 명령임.
해당 ps의 pid 를 복사 : 5213
2. /proc Directory로 이동
host Server에서 [cd /proc ] 경로로 이동하면 pid 와 동일한 이름의 디렉토리들이 있음
상위 sleep 1000에서 확인한 pid 와 동일한 디렉토리로 이동
3. cgroup 확인
"cat cgroup"
명령으로 정보를 확인해보면
해당 [ sleep 1000 ] 명령을 실행한 container의 id를 확인가능
4. Container 찾기
찾은 container ID와
kubernetes 를 통해 실제 Pod 에서 동작 중인 container ID 비교
결과 : 일치함
결론
Container에서 실행 중인 application이나 명령은 모두 host 의 /proc 에서 확인이 가능함
제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!