이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Kubernetes

71. Kubernetes Pod Container의 Application PID를 Host에서 확인

이쿠우우 2021. 4. 5. 22:44
반응형

 

 

 

 

 

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 에서 확인이 가능함

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

 

 

반응형