前奏參見:二進制安裝部署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 一切正常 高可用也沒有問題。