가끔 kubernetes에서 istio를 사용하다보면, Pod 내부의 iptables 구성 상태가 어떠한지 궁금할 때가 있다.
매번 여기저기 명령 찾아서 짜집기하고 있었는데, 이렇게 하니까 찾는 시간도 오래 걸리고, 나의 기억도 오래가지 않아서 여기에 메모를 하고 필요할 때마다 아래 명령을 copy & paste 해야겠다.
(이 명령은 Istio README.md에도 있으니까, 좀더 깊게 볼려면 Istio README.md에서 찾아보길~)
##
## pod의 container id 확인하기
##
$ ns=ns-a
$ podnm=ratings-v1-587d5cfb9-mxhxc
$ container_id=$(kubectl get pod -n ${ns} ${podnm} -o jsonpath="{.status.containerStatuses[?(@.name=='istio-proxy')].containerID}" | sed -n 's/docker:\/\/\(.*\)/\1/p')
$ echo $container_id
6dbeeb047da9149f0735943cd95885a156dbdc766b48145c40e7346ea7f6bcfb
##
## 어떤 worker node에서 ratings-v1 pod가 구동되어 있는지 확인하기
##
$ kubectl get -n ns-a pod -l app=ratings -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ratings-v1-587d5cfb9-mxhxc 2/2 Running 0 2d17h 10.244.91.198 node-73 <none> <none>
ratings-v1-587d5cfb9-s6g6r 2/2 Running 0 2d17h 10.244.142.131 node-75 <none> <none>
##
## ratings-v1 pod가 구동된 worker node에 ssh 접속하기
##
$ ssh root@node-73
##
## NOTE: worker node에 접속했으면, 위에서 알아냈던 container_id를 아래와 같이 설정하고
## 아래 명령 순서대로 실행한다.
##
[root@node-73 ~]$ container_id=6dbeeb047da9149f0735943cd95885a156dbdc766b48145c40e7346ea7f6bcfb
[root@node-73 ~]$ cpid=$(docker inspect --format '{{ .State.Pid }}' $container_id)
##
## Worker Node의 nsenter 명령을 이용하여 Container 내부의 iptables 정보를 조회한다.
##
[root@node-73 ~]$ nsenter -t $cpid -n iptables -L -t nat -n -v --line-numbers -x
Chain PREROUTING (policy ACCEPT 118222 packets, 7093320 bytes)
num pkts bytes target prot opt in out source destination
1 118224 7093440 ISTIO_INBOUND tcp -- * * 0.0.0.0/0 0.0.0.0/0
Chain INPUT (policy ACCEPT 118224 packets, 7093440 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 10650 packets, 924376 bytes)
num pkts bytes target prot opt in out source destination
1 400 24000 ISTIO_OUTPUT tcp -- * * 0.0.0.0/0 0.0.0.0/0
Chain POSTROUTING (policy ACCEPT 10650 packets, 924376 bytes)
num pkts bytes target prot opt in out source destination
Chain ISTIO_INBOUND (1 references)
num pkts bytes target prot opt in out source destination
1 0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:15008
2 0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
3 0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:15090
4 118222 7093320 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:15021
5 0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:15020
6 2 120 ISTIO_IN_REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0
Chain ISTIO_IN_REDIRECT (3 references)
num pkts bytes target prot opt in out source destination
1 2 120 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 redir ports 15006
Chain ISTIO_OUTPUT (1 references)
num pkts bytes target prot opt in out source destination
1 3 180 RETURN all -- * lo 127.0.0.6 0.0.0.0/0
2 0 0 ISTIO_IN_REDIRECT all -- * lo 0.0.0.0/0 !127.0.0.1 owner UID match 1337
3 0 0 RETURN all -- * lo 0.0.0.0/0 0.0.0.0/0 ! owner UID match 1337
4 397 23820 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1337
5 0 0 ISTIO_IN_REDIRECT all -- * lo 0.0.0.0/0 !127.0.0.1 owner GID match 1337
6 0 0 RETURN all -- * lo 0.0.0.0/0 0.0.0.0/0 ! owner GID match 1337
7 0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 owner GID match 1337
8 0 0 RETURN all -- * * 0.0.0.0/0 127.0.0.1
9 0 0 ISTIO_REDIRECT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain ISTIO_REDIRECT (1 references)
num pkts bytes target prot opt in out source destination
1 0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 redir ports 15001
[root@node-73 ~]$
위 iptables 구성에 관한 이론 및 개념 설명은 아래 blog를 참고하길~
'kubernetes' 카테고리의 다른 글
Kubernetes Metrics Server 설치 (0) | 2021.11.26 |
---|---|
[TODO] Read - Istio Memo (0) | 2021.11.23 |
Kubernetes imagePullSecret 설정 (0) | 2021.11.19 |
kubectl 명령 예제 & JSON 포맷으로 출력하기 (0) | 2021.11.17 |
Setup Kubernetes Using Ansible (0) | 2021.11.15 |