이쿠의 슬기로운 개발생활

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

클라우드/Kubernetes

49. Sandbox key 정보로 Pod안의 Container 찾기 : 첫번째 방법

이쿠우우 2020. 11. 7. 15:10
반응형

 

Sandbox key 정보로 Pod안의 Container 찾기 : 첫번째 방법

 


Sandbox key 정보로 Pod안의 Container 찾기 관련 글 목록

Sandbox key 정보로 Pod안의 Container 찾기 : 환경구성

Sandbox key 정보로 Pod안의 Container 찾기 : 첫번째 방법

Sandbox key 정보로 Pod안의 Container 찾기 : 두번째 방법


 

 

config.v2.json 파일과 kubectl 명령으로 Container ID를 찾아보기

 

 


목표

Sandbox Key, Pod의 IP, Container의 Port 

3가지 정보만 가지고 Container ID를 찾아보기

 

즉 어떤 Pod안에 있는 어떤 Container인지 확인해보기

 

 

이전 환경구성에서 확인한 Mysql Pod 정보를 가지고 시작함.

 

Sandbox Key : "/var/run/docker/netns/2b4a6689e6ef"

IP :  10.244.1.48 (pod 의 ip)

Port : 3306 (mysql container port)


 

1. 각 worker node로 접속해서 Sandbox Key에 해당하는 Container를 찾음

1.1. worker node 가 몇개인지 확인

명령어 : kubectl get nodes -o wide

확인 결과 : 1개의 master node 와 2개의 worker node IP확인가능

worker node one : 10.2.13.128

worker node two : 10.2.13.129

 

1.2. 확인한 worker node 로 접속

worker node one 으로 접속

경로 이동 : /var/lib/docker/containers

 

1.3. 조회되는 모든 directory 의 config.v2.json 파일 정보 확인

많은 디렉터리의 config.v2.json 내용 중 Sandbox Key 정보를 확인해서

사전에 받은 Sandbox Key 정보인

Sandbox Key : "/var/run/docker/netns/2b4a6689e6ef"  와 일치되는 값을 확인

일치되는 값을 찾음 

해당 단계까지가 찾고자 하는 Container 가 있는 Pod 의 Pause Container 정보를 찾은 상태

 

[이 단계에서 확인한 정보]
workerNode : worker one
workerNode IP : 10.2.13.128


[지금까지 단계에서 확인한 정보]
workerNode : worker one
workerNode IP : 10.2.13.128

 

 

 

1.4. 일치되는 값을 찾았다면 해당 Container가 있는 Pod 정보를 알아내야함

"metadata":{\"annotations\":{},\"labels\":{\"app\":\"mysql\"},\"name\":\"iksoon-pod-mysql\",\"namespace\":\"iksoon-park\"}

 

metadata 항목에서

name : Pod의 이름 확인

 

namespace : NameSpace 이름 확인

 

kubernetes cluster에서 namespace 안의 pod 이름은 유니크한 값임.

서로 다른 namespace 간에는 동일한 이름의 pod 가 존재할 수 있음으로

 

Pod Name과 Pod가 생성되는 NameSpace Name 이 2가지를 확인해야함

 

[이 단계에서 확인한 정보]
Pod Name : iksoon-pod-mysql
NameSpace : iksoon-park


[지금까지 단계에서 확인한 정보]
workerNode : worker Node one
workerNode IP : 10.2.13.128
Pod Name : iksoon-pod-mysql
NameSpace : iksoon-park

 

 

1.5. kubectl (혹은 curl, API)로 Pod 정보 확인

상위에서 확인한 pod name과 namespace name 으로 Pod 정보 확인

명령어 : kubectl describe pod iksoon-pod-mysql -n iksoon-park

1. 사전에 알고있던 IP와 해당 Pod IP가 일치하는지 확인 (IP :  10.244.1.48 (pod 의 ip))

2. Port 정보에 해당하는 Pod 내부 container 확인 (Port : 3306 (mysql container port))

3. 찾고자 하는 Container ID 확인 ( 467ea5695824ab2f47c64a9d3bb55005272c2186dbc8f33035a0867617411d0b )

 

[이 단계에서 확인한 정보]
Container ID : 467ea5695824ab2f47c64a9d3bb55005272c2186dbc8f33035a0867617411d0b



[지금까지 단계에서 확인한 정보]
workerNode : worker Node one
workerNode IP : 10.2.13.128
Pod Name : iksoon-pod-mysql
NameSpace : iksoon-park
Container ID : 467ea5695824ab2f47c64a9d3bb55005272c2186dbc8f33035a0867617411d0b

 

이와같은 과정으로 Container ID를 찾아냄

 

 

 

 


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


 

 

반응형