k8s 高可用reboot之后 NotReady 問題解決


前奏參見:二進制安裝部署k8s高可用集群V1.20 - 運維人在路上 - 博客園 (cnblogs.com)

首先感謝“運維人在路上”的分享。

按照文檔搭建的環境搭建好

2天后發現環境重啟之后出現 NotReady的問題。

檢查服務一切ok VIP就是不能漂到backup服務器

Reboot之后再開機出現

這是我的服務器一覽表

名稱

IP

組件

Master1

192.168.1.20

Kube-apiserver

Kube-controller-manager

Kube-scheduler

Etcd

Docker

Kubelet

Kube-proxy

Nginx

keepalived

Master2

192.168.1.23

Kube-apiserver

Kube-controller-manager

Kube-scheduler

Etcd

Docker

Kubelet

Kube-proxy

Nginx

Keepalived

Node1

192.168.1.21

Etcd

Docker

Kubelet

Kube-proxy

Node2

192.168.1.22

Etcd

Docker

Kubelet

Kube-proxy

vip

192.168.1.26

Lb均衡器

 

[root@master ~]# kubectl get node

NAME      STATUS     ROLES    AGE    VERSION

master    NotReady   <none>   3d1h   v1.20.6

master2   NotReady   <none>   28h    v1.20.6

node01    NotReady   <none>   3d1h   v1.20.6

node02    NotReady   <none>   3d1h   v1.20.6

[root@master ~]# kubectl get cs

Warning: v1 ComponentStatus is deprecated in v1.19+

NAME                 STATUS    MESSAGE             ERROR

scheduler            Healthy   ok                 

controller-manager   Healthy   ok                 

etcd-0               Healthy   {"health":"true"}  

etcd-2               Healthy   {"health":"true"}  

etcd-1               Healthy   {"health":"true"}  

[root@master ~]# kubectl get pods -n kube-system

NAME                                      READY   STATUS    RESTARTS   AGE

calico-kube-controllers-97769f7c7-z4vhv   1/1     Running   1          3d1h

calico-node-k6zgl                         1/1     Running   1          28h

calico-node-ldlmm                         1/1     Running   1          3d1h

calico-node-x4sbz                         1/1     Running   1          3d1h

calico-node-xls58                         1/1     Running   1          3d1h

coredns-6cc56c94bd-jtrln                  1/1     Running   1          3d

經過很長時間查找問題最后發現是check_nginx 腳本有點邏輯問題

ss -antp |grep 16443 |egrep -cv "grep|$$"   里面由大量 TIME_WAIT 信息導致腳本邏輯不能正常執行網上提供方法需要優化內核

https://blog.csdn.net/qq_40460909/article/details/80563284 沒有嘗試感覺不太適合

  

關閉master nginx之后發現VIP沒有到backup 服務器

[root@master ~]# systemctl stop nginx
[root@master ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:1f:3e:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.26/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::e021:da77:a9b6:f716/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

檢查keepalived服務,正在運行。

檢查完腳本之后運行里面的命令

[root@master ~]# ss -antp |grep 16443 |egrep -cv "grep|$$"
79

這樣邏輯上 $count > 0  返回0  系統就默認正常從而導致keepalived不能漂到backup服務器,那么apiserver就無法鏈接導致了NotReady

要滿足 $count=0 那么只有兩台同時關閉了nginx keepalived 才能滿足

[root@master ~]# ss -antp |grep 16443 |egrep -cv "grep|$$"
0

[root@master2 ~]# ss -antp |grep 16443 |egrep -cv "grep|$$"
0

后來就嘗試修改了一下腳本,如下。多次reboot之后也沒有發現問題。

 nginx_backup 配置只是name處修改

  

Nginx 部分采用的是默認配置nginx.conf文件里面唯一修改的地方是把

include /etc/nginx/conf.d/k8s.conf    移動到http 前面。

最后reboot 一切正常 高可用也沒有問題。

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM