728x90
[kubernetes] kube-proxy 동작 방식 확인
kube-proxy
- 파드의 통신을 담당한다. 이를 증명하기 위해 파드의 통신에 문제를 발생시켜 본다.
가상머신에서 br_netfilter 모듈을 사용해 네트워크를 연결시킨 로컬 클러스터를 사용중이다.
[root@m-k8s ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 0 5s 172.16.132.2 w3-k8s <none> <none>
[root@m-k8s ~]# curl 172.16.132.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
마스터 노드에서 pod를 생성하고 해당 IP로 curl을 사용해 페이지를 확인하면 제대로 출력되고 있다.
pod는 w3-k8s 노드에서 동작중임을 확인할 수 있다.
[root@w3-k8s ~]# modprobe -r br_netfilter
[root@w3-k8s ~]# systemctl restart network
w3-k8s 노드에 접속하여 통신에 문제를 발생시키고 네트워크를 재시작한다.
-r 은 remove 옵션이다.
[root@m-k8s ~]# curl 172.16.132.2
curl: (7) Failed connect to 172.16.132.2:80; Connection timed out
[root@m-k8s ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 0 12m 172.16.132.2 w3-k8s <none> <none>
다시 마스터 노드에서 curl 명령으로 웹페이지를 받아오려고 하면 Connection timed out 에러가 발생하며 실패한다.
pod의 동작에는 문제가 없으며, Running 상태를 유지하고 있다.
[root@w3-k8s ~]# modprobe br_netfilter
[root@w3-k8s ~]# reboot
워커노드에서 br_netfilter 모듈을 다시 활성화시키고 재시작한다.
[root@m-k8s ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 0/1 Completed 0 13m <none> w3-k8s <none> <none>
[root@m-k8s ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 1 14m 172.16.132.3 w3-k8s <none> <none>
[root@m-k8s ~]# curl 172.16.132.3
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
pod가 재시작되는 것을 확인할 수 있으며 1회 재시작 되었다고 RESTARTS에 표시된다.
curl 명령을 통해 pod에서 동작중인 웹페이지와 통신을 확인한다.
pod와의 통신이 다시 제대로 이루어지고 있다.
728x90