| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 그라파나 시각화
- EKS 클러스터
- 딥레이서
- 쿠버네티스
- livenessPorbe
- AWS 딥레이서
- Firelens
- 그라파나 대시보드
- grafana on kubernetes
- 솔데스크
- EFS CSI Driver
- helm
- kubernetes 동작 원리
- Solution Architecture
- terraform
- github action 사용법
- 깃허브 액션
- 딥레이서 보상함수
- jenkins
- 메탈LB
- Prometheus install
- Kubernets on Jenkins
- 쿠버네티스 컴포넌트
- Kubernetes
- Aurora cluster
- LoadBalancer Controller
- SAA 합격 후기
- 로드밸런서 컨트롤러
- headless service
- blue-green
mingming
kubernetes node NotReady 본문
실습 환경
Virtualbox : 6.1.44
OS : Ubuntu 20.04
Network Adapter : Nat , Hostonly
CNI : Weavenet , CIDR : 10.32.0.0/12
장애상황
vagrant로 구성한 쿠버네티스 클러스터 환경에서 노드 하나를 추가해주려 했지만 join 할 때 nat 어댑터를 인식해 join 실패
root@master:~# root@master:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready control-plane 16d v1.28.1 192.168.56.103 <none> Ubuntu 20.04.6 LTS 5.4.0-163-generic containerd://1.6.22
worker Ready <none> 16d v1.28.1 192.168.56.104 <none> Ubuntu 20.04.6 LTS 5.4.0-162-generic containerd://1.6.22
worker2 NotReady <none> 16m v1.28.1 10.0.2.15 <none> Ubuntu 20.04.6 LTS 5.4.0-162-generic containerd://1.6.22
pod가 정상적으로 실행되지 못하고 있습니다.
root@master:~# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5dd5756b68-gszpl 1/1 Running 9 (82m ago) 16d
coredns-5dd5756b68-n97fg 1/1 Running 9 (82m ago) 16d
etcd-master 1/1 Running 9 (82m ago) 16d
kube-apiserver-master 1/1 Running 9 (82m ago) 16d
kube-controller-manager-master 1/1 Running 9 (82m ago) 16d
kube-proxy-c6pr8 0/1 ContainerCreating 0 24m
kube-proxy-ppdfl 1/1 Running 9 (82m ago) 16d
kube-proxy-zc2cj 1/1 Running 9 (82m ago) 16d
kube-scheduler-master 1/1 Running 9 (82m ago) 16d
weave-net-cbxfg 2/2 Running 19 (82m ago) 16d
weave-net-ll68j 2/2 Running 18 (82m ago) 16d
weave-net-mps5t 0/2 Init:0/1 0 24m
해결방안
호스트 전용 어댑터로 상호 통신이 가능한 것은 확인했습니다. join 할 때 사용할 네트워크 어댑터를 지정할 수 있는지 찾아봤지만 아쉽게도 그런 기능은 지원하지 않는 것 같았습니다.

쿠버네티스 기술 문서에서도 해당 상황에서 ip 라우팅 설정하는 것을 권장하고 있습니다.
1. 라우팅 설정
master node 로 가는 통신을 Hostonly 어댑터를 사용하게 설정
sudo ip route add <목적지_네트워크> via <게이트웨이>
root@worker2:~# sudo ip route add 192.168.56.0/24 via 192.168.56.1
RTNETLINK answers: File exists
이미 존재하는 라우팅 경로라고 나옵니다. 이 접근방법은 아닌 것 같습니다.
2. 네트워크 어댑터 우선순위
네트워크 어댑터 설정은 아래의 경로에서 설정할 수 있습니다.
/etc/netplan/
root@worker2:~# vim /etc/netplan/0
00-installer-config.yaml 01-installer-config.yaml
앞의 숫자는 우선순위를 나타냅니다.
00-installer-config.yaml
network:
version: 2
ethernets:
enp0s8:
addresses:
- 192.168.56.107/24
gateway4: 192.168.56.1
nameservers:
addresses:
- 8.8.8.8
search: []
version: 2
01-installer-config.yaml
network:
ethernets:
enp0s3:
dhcp4: true
nameservers:
addresses:
- 8.8.8.8
search: []
위와 같이 구성한 뒤 netplan apply 로 해당 네트워크 설정을 적용시킵니다.
다시 클러스터에 조인을 시킨 후 노드를 확인해보니 여전히 같은 증상입니다.
worker2 NotReady <none> 8s v1.28.1 10.0.2.15 <none> Ubuntu 20.04.6 LTS 5.4.0-162-generic containerd://1.6.22
3. 네트워크 어댑터 순서 변경
Virtualbox의 물리적인 어댑터 순서를 바꿔보도록 하겠습니다. 첫 번째 어댑터를 호스트온리 두 번째 어댑터를 Nat로 설정 합니다.
/etc/netplan/ 파일을 수정해 다음과 같이 네트워크 순서를 바꿨습니다.
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:8e:18:3d brd ff:ff:ff:ff:ff:ff
inet 192.168.56.107/24 brd 192.168.56.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe8e:183d/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:b4:83:e5 brd ff:ff:ff:ff:ff:ff
inet 10.0.3.15/24 brd 10.0.3.255 scope global dynamic enp0s8
valid_lft 86361sec preferred_lft 86361sec
inet6 fe80::a00:27ff:feb4:83e5/64 scope link
valid_lft forever preferred_lft forever
kubeadm join
root@master:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready control-plane 16d v1.28.1 192.168.56.103 <none> Ubuntu 20.04.6 LTS 5.4.0-163-generic containerd://1.6.22
worker Ready <none> 16d v1.28.1 192.168.56.104 <none> Ubuntu 20.04.6 LTS 5.4.0-162-generic containerd://1.6.22
worker2 Ready <none> 5s v1.28.1 192.168.56.107 <none> Ubuntu 20.04.6 LTS 5.4.0-162-generic containerd://1.6.22
노드가 정상적으로 ready 상태인걸 확인할 수 있습니다.
물리적 네트워크 어댑터 순서를 바꿔주니 정상적으로 작동했습니다. 정확한 기준은 모르겠지만 어댑터를 인식하는 우선순위가 존재하는 것 같았습니다.
'kubernetes' 카테고리의 다른 글
| Kubernetes Service (NodePort , LoadBalancer) (2) | 2023.09.26 |
|---|---|
| Kubernetes Serive ( ClusterIP ) (0) | 2023.09.26 |
| alertmanager & slack 연동 및 경보 (1) | 2023.09.25 |
| grafana를 이용한 prometheus 메트릭 값 시각화 및 모니터링 (1) | 2023.09.24 |
| ephemeral-storage (2) | 2023.09.21 |