k8s 환경에서 container에 tcpdump
등 명령어 입력을 위해 nsenter(namespace enter)가 필요할 때가 있다.
예를 들어,
- pod에 tcpdump 명령어가 없는 경우
- pod에 tcpdump명령어가 있지만 sudo 권한이 필요한 경우
- 그 외 ..;
아무튼 아래 과정을 통해 해당 컨테이너로 접속하는 과정을 공유한다.
1. Pod 조회 및 container ID 확인
### get pod
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
sample-pod-679899669d-pfdp5 1/1 Running 0 3d23h 172.172.172.172 node1 <none> <none>
### describe pod
$ kubectl describe po sample-pod-679899669d-pfdp5 | grep -i id
Container ID: containerd://e5ba24560fed3f8d031b137075d549fe6fdb7f2ad7c3478e23be3118badb4e30
위 과정으로 Container ID를 확인한다.
2. node1 접속 및 pid 확인
접속하기 원하는 node로 이동하여 pid를 확인한다.
### node1 접속
$ ssh node1
### pid 확인
$ sudo crictl inspect e5ba24560fed3f8d031b137075d549fe6fdb7f2ad7c3478e23be3118badb4e30 | grep pid
"pid": 140522,
crictl 명령으로 container가 해당 노드(node1
)에서 어떤 pid로 돌고있는지 확인한다.
3. nsenter command
위 과정을 통해 얻은 pid는 nsenter
명령에 활용된다.
### ip 확인
$ nsenter -t 140522 -n ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.172.172.172 netmask 255.255.255.255 broadcast 0.0.0.0
...
### tcpdump
$ nsenter -t 140522 -n tcpdump -nni any
...
ifconfig
를 통해 pod에서 확인한 ip와 같은 ip를 갖는것을 확인할 수 있고 원하는대로 tcpdump 명령을 수행할 수 있다.
반응형
'kubernetes' 카테고리의 다른 글
k9s: Kubernetes 환경을 위한 편리한 관리 도구 (0) | 2022.12.02 |
---|---|
tumblr kubernetes sidecar injector deploy ! (0) | 2021.07.25 |
mac에서 docker-machine + minikube를 활용해 k8s cluster 만들기 ! (0) | 2021.07.20 |
kubernetes sidecar injector란? (0) | 2021.07.14 |
minikube+katacoda 이용해서 kubernetes 환경 구성 (0) | 2021.07.14 |