kubernetes二进制集群部署 三 ——负载均衡调度器部
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,内容要点:1、实验环境2、负载均衡调度器部署一、实验环境:基于之前部署好的多 Master 集群架构的基础上,部署两台调度器服务器(这边我用的是 nginx),实现负载均衡:kubernetes二进制
千家信息网最后更新 2025年12月01日kubernetes二进制集群部署 三 ——负载均衡调度器部
内容要点:
1、实验环境
2、负载均衡调度器部署
一、实验环境:
基于之前部署好的多 Master 集群架构的基础上,部署两台调度器服务器(这边我用的是 nginx),实现负载均衡:
kubernetes二进制集群部署一--etcd存储组件、flannel网络组件部署:
https://blog.51cto.com/14475876/2470049
kubernetes二进制集群部署一--单master集群部署+多master群及部署:
https://blog.51cto.com/14475876/2470063
服务器信息
| 角色 | IP地址 |
| master01 | 192.168.109.138 |
| master02 | 192.168.109.230 |
| 调度器1(nginx01) | 192.168.109.131 |
| 调度器1(nginx02) | 192.168.109.132 |
| node01节点 | 192.168.109.133 |
| node02节点 | 192.168.109.137 |
| 虚拟 ip | 192.168.109.100 |
需要两个的脚本:
第一个:keepalived.conf! Configuration File for keepalived global_defs { # 接收邮件地址 notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } # 邮件发送地址 notification_email_from Alexandre.Cassen@firewall.loc 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 MASTER interface eth0 virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的 priority 100 # 优先级,备服务器设置 90 advert_int 1 # 指定VRRP 心跳包通告间隔时间,默认1秒 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.188/24 } track_script { check_nginx } }mkdir /usr/local/nginx/sbin/ -pvim /usr/local/nginx/sbin/check_nginx.shcount=$(ps -ef |grep nginx |egrep -cv "grep|$$")if [ "$count" -eq 0 ];then /etc/init.d/keepalived stopfichmod +x /usr/local/nginx/sbin/check_nginx.sh第二个:nginxcat > /etc/yum.repos.d/nginx.repo << EOF[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0EOFstream { 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 10.0.0.3:6443; server 10.0.0.8:6443; } server { listen 6443; proxy_pass k8s-apiserver; } }二、负载均衡调度器部署
//首先关闭防火墙:[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0//将这个脚本文件放进家目录中:[root@localhost ~]# lsanaconda-ks.cfg initial-setup-ks.cfg keepalived.conf nginx.sh 公共 模板 视频 图片 文档 下载 音乐 桌面//建立本地yum仓库:[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0[root@localhost ~]# yum list[root@localhost ~]# yum install nginx -y //下载nginx//接下来是添加四层转发:[root@localhost ~]# vim /etc/nginx/nginx.conf添加以下模块: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.109.138:6443; //master01的IP地址 server 192.168.109.230:6443; //master02的IP地址 } server { listen 6443; proxy_pass k8s-apiserver; } }[root@localhost ~]# systemctl start nginx //开启服务//接下来是部署 keepalived服务:[root@localhost ~]# yum install keepalived -y//修改配置文件(nginx01是master):[root@localhost ~]# cp keepalived.conf /etc/keepalived/keepalived.conf cp:是否覆盖"/etc/keepalived/keepalived.conf"? yes[root@localhost ~]# vim /etc/keepalived/keepalived.conf//做如下删改:! Configuration File for keepalivedglobal_defs { # 接收邮件地址 notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } # 邮件发送地址 notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id NGINX_MASTER}vrrp_script check_nginx { script "/etc/nginx/check_nginx.sh" ##检测脚本的路径,稍后会创建}vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 ##优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.109.100/24 ##虚拟IP地址 } track_script { check_nginx }}//nginx02(是backup),配置如下:! Configuration File for keepalivedglobal_defs { # 接收邮件地址 notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } # 邮件发送地址 notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id NGINX_MASTER}vrrp_script check_nginx { script "/etc/nginx/check_nginx.sh" ##检测脚本的路径,稍后会创建}vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 90 ##优先级低于master advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.109.100/24 ##虚拟IP地址 } track_script { check_nginx }}//创建检测脚本[root@localhost ~]# vim /etc/nginx/check_nginx.shcount=$(ps -ef |grep nginx |egrep -cv "grep|$$")if [ "$count" -eq 0 ];then systemctl stop keepalivedfi[root@localhost ~]# chmod +x /etc/nginx/check_nginx.sh //授权[root@localhost ~]# systemctl start keepalived.service //开启服务[root@localhost ~]# ip a //查看ip地址2、实验结果验证
验证一:漂移地址是否起作用(高可用是否实现)
1、此时 虚拟ip在 nginx01 上,验证地址漂移,可以在 lb01 中使用 pkill nginx 停止nginx服务,再在 lb02 上使用 ip a 命令查看地址是否进行了漂移。
2、恢复,此时,在 nginx02上,我们先启动 nginx服务,再启动 keepalived服务,再用 ip a命令查看,地址又漂移回来了,而 nginx02上没有虚拟ip。
验证二:验证负载均衡是否实现<此时VIP在bl2上>
1、修改nginx01(master)的首页内容:
[root@localhost ~]# vim /usr/share/nginx/html/index.htmlWelcome to master nginx!
2、修改nginx02(backup)的首页内容:
[root@localhost ~]# vim /usr/share/nginx/html/index.htmlWelcome to backup nginx!
3、用浏览器访问:http://192.168.109.100/
此时,负载均衡和高可用功能都已经完全实现了!!!
3、部署 node节点:
//开始修改 node节点配置文件统一的 VIP(bootstrap.kubeconfig,kubelet.kubeconfig)修改内容:server: https://192.168.109.100:6443(都改成vip)[root@localhost cfg]# vim /opt/kubernetes/cfg/bootstrap.kubeconfig[root@localhost cfg]# vim /opt/kubernetes/cfg/kubelet.kubeconfig[root@localhost cfg]# vim /opt/kubernetes/cfg/kube-proxy.kubeconfig//重启服务:[root@localhost cfg]# systemctl restart kubelet.service [root@localhost cfg]# systemctl restart kube-proxy.service//检查修改内容:[root@localhost cfg]# grep 100 *bootstrap.kubeconfig: server: https://192.168.109.100:6443kubelet.kubeconfig: server: https://192.168.109.100:6443kube-proxy.kubeconfig: server: https://192.109.220.100:6443//接下来在 调度器1 上查看 nginx的k8s日志:[root@localhost ~]# tail /var/log/nginx/k8s-access.log192.168.109.131 192.168.109.138:6443 - [09/Feb/2020:13:14:45 +0800] 200 1122192.168.109.131 192.168.109.230:6443 - [09/Feb/2020:13:14:45 +0800] 200 1121192.168.109.132 192.168.109.138:6443 - [09/Feb/2020:13:18:14 +0800] 200 1120192.168.109.132 192.168.109.230:6443 - [09/Feb/2020:13:18:14 +0800] 200 1121可以看出是以轮询调度的算法,将请求流量分发给两台master---- 接下来是测试创建 Pod:在 master01 上操作:[root@localhost kubeconfig]# kubectl run nginx --image=nginx//查看状态:[root@localhost kubeconfig]# kubectl get podsNAME READY STATUS RESTARTS AGEnginx-dbddb74b8-zbhhr 1/1 Running 0 47s此时已经创建完成,正在运行中*** 注意日志问题 ***:[root@localhost kubeconfig]# kubectl logs nginx-dbddb74b8-zbhhrError from server (Forbidden): Forbidden (user=system:anonymous, verb=get, resource=nodes, subresource=proxy) ( pods/log nginx-dbddb74b8-zbhhr)此时,由于权限问题查看日志,会出现报错解决办法(提升权限):[root@localhost kubeconfig]# kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymousclusterrolebinding.rbac.authorization.k8s.io/cluster-system-anonymous created此时,再次查看日志,就不会出现报错://查看 Pod网络:[root@localhost kubeconfig]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODEnginx-dbddb74b8-zbhhr 1/1 Running 0 7m11s 172.17.93.2 192.168.109.131可以看出,这个在master01上创建的pod被分配到了node01上了。我们可以在对应网络的 node节点上操作就可以直接访问:在node01上操作:[root@localhost cfg]# curl 172.17.93.2
此时,由于 flannel网络组件的作用下,都可以在node01和node02的浏览器上访问这个地址:172.17.93.2
由于刚刚访问了网页,我们也可以在 master01上查看到日志信息:
地址
服务
调度
邮件
均衡
内容
日志
脚本
节点
验证
集群
接下来
网络
优先级
文件
服务器
组件
实验
检测
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
hana数据库访问技术
邢台抖音直播网络安全观后感
软件开发机械键盘
web服务器设置安全
泉州速推网络技术有限公司
网络安全法第六十五条明确规定
上海国企软件开发待遇
网络安全周教育工作人员发言稿
全面筑牢网络安全管理
经营贷软件开发
朝阳区网络技术服务接口
mysql数据库物理位置
二手服务器市场份额
什么是软件开发的前端和后端
数据库启用dll部件代码
免费民国报纸数据库
如何用云服务器建网站
ims数据库价格
ios 开发 数据库
通信网络技术服务的股票
图片数据库文件
网络安全文章小学生
结合自身实际如何维护网络安全
ugs5.33网站数据库
反恐精英服务器登录不进去
护苗网络安全课之4
报送金融信息数据库
软件远程连接数据库 安全性
软件开发需求管理常用的手段包括
lol国服服务器未开启