일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정규식 컴파일
- python popen
- c3 초
- 정규식 문자열 출력
- 백준
- python os
- c3 축 가리기
- InfluxDB
- 정규식 활용
- c3 축 없애기
- subporcess path
- influxdb 설치
- snmp
- c3 step graph
- telegraf
- regex_search
- semanage
- grafana dashboard
- snmp test
- CentOS7
- centos pyhon 설치
- c++ 정규식
- gcc 업데이트
- 1697
- python subprocess
- linux시간으로 변경
- gcc regex
- selinux port 등록
- g++ 업데이트
- c3 second
- Today
- Total
리셋 되지 말자
[kubernetes] kube-proxy 본문
kube-proxy
kubelet이 pod의 상태를 관리한다면, kube-proxy는 pod의 통신을 담당.
kube-proxy 에 문제가 생겼을 때의 시나리오
쿠버네티스 클러스터 구성할 때, br_netfilter 커널 모듈을 적재하고 iptables를 거쳐 통신하도록 설정한 상태임
- master 노드에서 kubectl을 통해, nginx pod를 배포 (nginx-pod.yaml 내용 - 링크)
[vagrant@m-k8s ~]$ sudo kubectl create -f nginx-pod.yaml
pod/nginx-pod created
[vagrant@m-k8s ~]$ sudo kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 0/1 ContainerCreating 0 13s <none> w2-k8s <none> <none>
[vagrant@m-k8s ~]$ sudo kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 0 78s 172.16.103.130 w2-k8s <none> <none>
w2-k8s 노드에 배포된 것을 확인
- master 노드에서 curl 테스트
[vagrant@m-k8s ~]$ curl 172.16.103.130
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
(생략)
정상 동작 확인
- nginx pod가 배포된 worker 노드에 접속해 br_netfilter 모듈을 제거
[vagrant@w2-k8s ~]$ sudo modprobe -r br_netfilter
[vagrant@w2-k8s ~]$ sudo systemctl restart network
modprobe -r br_netfilter 명령으로 br_netfilter 모듈을 제거.
(-r 옵션은 remove를 의미)
- master 노드에서 다시 한번 curl로 nginx pod의 정보를 가져오기
[vagrant@m-k8s ~]$ sudo 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.103.130 w2-k8s <none> <none>
[vagrant@m-k8s ~]$ curl 172.16.103.130
^C
[vagrant@m-k8s ~]$ curl 172.16.103.130
curl: (7) Failed connect to 172.16.103.130:80; 연결 시간 초과
오래 걸리고, 오래 기다려봐도 실패 확인.
kube_proxy가 이용하는 br_netfilter에 문제가 있어서 worker 노드의 pod의 nginx 웹 서버와의 통신이 되지 않음.
- worker 노드에서 br_netfilter를 다시 커널에 적재하고 worker 노드를 재시작(reboot)
[vagrant@w2-k8s ~]$ sudo modprobe br_netfilter
[vagrant@w2-k8s ~]$ sudo reboot
br_netfilter 적재 후, network를 재시작해도 curl이 동작하지 않았음.
- 재시작 후, nginx pod 확인
[vagrant@m-k8s ~]$ sudo kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 1 17m 172.16.103.131 w2-k8s <none> <none>
RESTARTS가 1회 증가하고, IP 주소가 변경된 것을 확인할 수 있음
- curl 동작 확인
[vagrant@m-k8s ~]$ curl 172.16.103.131
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
(생략)
- 배포한 nginx pod를 삭제
[vagrant@m-k8s ~]$ sudo kubectl delete -f nginx-pod.yaml
pod "nginx-pod" deleted
정리 : kube_proxy에 문제가 생기면, pod 의 통신에 문제가 생긴다
'오케스트레이션' 카테고리의 다른 글
[k8s] Istio mTLS 완전정복 (0) | 2022.07.22 |
---|---|
[kubernetes] Pod 생성 (0) | 2021.07.15 |
[kubernetes] kubelet (0) | 2021.07.14 |
[kubernetes] kubectl (0) | 2021.07.14 |
[docker swarm] swarm을 이용한 클러스터 환경 구성하기 (0) | 2021.03.30 |