yum install keepalived Nginx -y yum install keepalived Nginx -t ======================================================== ======================================================== Nginx配置文件 加上这一段: stream { log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent'; access_log /var/log/Nginx/k8s-access.log main; upstream k8s-apiserver { server 192.168.1.63:6443; server 192.168.1.64:6443; } server { listen 6443; proxy_pass k8s-apiserver; } } keepalived配置文件 ! Configuration File for keepalived global_defs { notification_email { [email protected] failov[email protected] [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id Nginx_MASTER } vrrp_script check_Nginx { script "/usr/local/Nginx/sbin/check_Nginx.sh" ###检测脚本 } vrrp_instance VI_1 { state BACKUP interface enp0s3 ##改成你网卡的设备名去配置文件看看在写 virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的 (主备一致) priority 100 # 优先级,主比备高,备写90 advert_int 1 # 指定VRRP 心跳包通告间隔时间,默认1秒 authentication { auth_type PASS ##密码验证 auth_pass 1111 } virtual_ipaddress { ####vip地址 192.168.1.60/24 } track_script { #指定脚本检测 check_Nginx } } systemctl start Nginx sysremctl start keepalived 总结: 1,ip add查看master节点,会发现多出来一个ip地址60,这个就是vip,当master正常运行时,backup是没有这个ip的 2,可以用ping命令检测,当master节点挂了,60这个ip会漂移到bakcup节点继续提供服务 3,中间会有1次ping断层 ======================================================== ======================================================== 将node01和node02 添加到负载均衡集群中 1,node01操作 root@k8s-node01: /opt/kubernetes/cfg 16:00:20 $ grep 60 * bootstrap.kubeconfig: server: https://192.168.1.60:6443 bootstrap.kubeconfig: token: 0fb61c46f8991b718eb38d27b605b008 kubelet.kubeconfig: server: https://192.168.1.60:6443 kube-proxy.kubeconfig: server: https://192.168.1.60:6443 root@k8s-node01: /opt/kubernetes/cfg 16:00:25 $ ##将grep出来的60位置原来是master节点ip,全部替换成60,指向负载ip地址,node-2同样操作 重启node节点kubelet,kube-proxy 2,验证 lb-master查看日志,node节点通过两个master链接lb root@lb-master: /opt 14:36:30 $ tail -f /var/log/Nginx/k8s-access.log 192.168.1.65 192.168.1.64:6443 - [25/Mar/2019:11:43:02 +0800] 200 1119 192.168.1.65 192.168.1.63:6443 - [25/Mar/2019:13:27:07 +0800] 200 1119 192.168.1.66 192.168.1.63:6443 - [25/Mar/2019:13:27:07 +0800] 200 1119 192.168.1.65 192.168.1.63:6443 - [25/Mar/2019:13:27:07 +0800] 200 1566 192.168.1.66 192.168.1.63:6443 - [25/Mar/2019:13:27:07 +0800] 200 1118 192.168.1.65 192.168.1.64:6443 - [25/Mar/2019:13:27:07 +0800] 200 1566 192.168.1.66 192.168.1.64:6443 - [25/Mar/2019:13:27:07 +0800] 200 1566 192.168.1.66 192.168.1.64:6443 - [25/Mar/2019:13:27:07 +0800] 200 1118 192.168.1.65 192.168.1.64:6443 - [25/Mar/2019:13:27:07 +0800] 200 1117 192.168.1.65 192.168.1.64:6443 - [25/Mar/2019:13:27:07 +0800] 200 1117 ======================================================== ======================================================== k8s双master节点 1,将master节点配置文件systemctl管理工具考到master02上 scp -r /opt/kubernetes/ [email protected]:/opt/ scp /usr/lib/systemd/system/{kube-apiserver,kube-scheduler,kube-controller-manager}.service [email protected]:/usr/lib/systemd/system/ scp /usr/bin/kubectl [email protected]:/usr/bin/ 2,修改master02节点kube-apiserver,kube-scheduler,kube-controller-manager配置文件ip地址改成master02的 root@master02: /opt/kubernetes/cfg 15:47:12 $ pwd /opt/kubernetes/cfg root@master02: /opt/kubernetes/cfg 15:47:12 $ ls kube-apiserver kube-controller-manager kube-scheduler token.csv ##这是已经改完了的了,正常是grep 63,会显示文件中含有master01节点ip63的所有。 root@master02: /opt/kubernetes/cfg 15:47:15 $ grep 64 * kube-apiserver:--bind-address=192.168.1.64 \ kube-apiserver:--secure-port=6443 \ kube-apiserver:--advertise-address=192.168.1.64 \ root@master02: /opt/kubernetes/cfg 15:47:19 $ ps: 因为kube-ctroller-manager kube-scheduler配置文件写的都是127.0.0.1所有没有改动 3,启动master02 systemctl restart kube-apiserver systemctl restart kube-ctroller-manager systemctl restart kube-scheduler 4,验证 root@master02: /opt/kubernetes/cfg 15:50:18 $ kubectl get node NAME STATUS ROLES AGE VERSION 192.168.1.65 Ready <none> 63m v1.13.4 192.168.1.66 Ready <none> 4d22h v1.13.4 root@master02: /opt/kubernetes/cfg 15:50:22 $ kubectl get csr NAME AGE REQUESTOR CONDITION node-csr-XMad_RYrooh4SENAIOWeD2VIGEZOR-5jVG3QASPBZzA 65m kubelet-bootstrap Approved,Issued root@master02: /opt/kubernetes/cfg 15:50:25 $ kubectl get cs NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health":"true"} etcd-2 Healthy {"health":"true"} etcd-1 Healthy {"health":"true"} root@master02: /opt/kubernetes/cfg 15:50:28 $ kubectl get pod NAME READY STATUS RESTARTS AGE java-84767655bc-5rlth 0/1 CrashLoopBackOff 15 57m Nginx-7cdbd8cdc9-2jwmj 1/1 Running 0 51m Nginx-7cdbd8cdc9-bwp9v 1/1 Running 0 57m Nginx-7cdbd8cdc9-zc2rl 1/1 Running 0 57m root@master02: /opt/kubernetes/cfg 15:50:30 $ ======================================================== ========================================================
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。