内容要点:
1、实验环境
2、负载均衡调度器部署
一、实验环境:
基于之前部署好的多 Master 集群架构的基础上,部署两台调度器服务器(这边我用的是 nginx),实现负载均衡:
kubernetes二进制集群部署一——etcd存储组件、flannel网络组件部署:
kubernetes二进制集群部署一——单master集群部署+多master群及部署:
服务器信息
角色 | 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/ -p vim /usr/local/nginx/sbin/check_nginx.sh count=$(ps -ef |grep nginx |egrep -cv "grep|$$") if [ "$count" -eq 0 ];then /etc/init.d/keepalived stop fi chmod +x /usr/local/nginx/sbin/check_nginx.sh 第二个:nginx cat > /etc/yum.repos.d/nginx.repo << EOF [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 EOF 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 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 ~]# ls anaconda-ks.cfg initial-setup-ks.cfg keepalived.conf nginx.sh 公共 模板 视频 图片 文档 下载 音乐 桌面 //建立本地yum仓库: [root@localhost ~]# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=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 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 "/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 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 "/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.sh count=$(ps -ef |grep nginx |egrep -cv "grep|$$") if [ "$count" -eq 0 ];then systemctl stop keepalived fi [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:6443 kubelet.kubeconfig: server: https://192.168.109.100:6443 kube-proxy.kubeconfig: server: https://192.109.220.100:6443 //接下来在 调度器1 上查看 nginx的k8s日志: [root@localhost ~]# tail /var/log/nginx/k8s-access.log 192.168.109.131 192.168.109.138:6443 - [09/Feb/2020:13:14:45 +0800] 200 1122 192.168.109.131 192.168.109.230:6443 - [09/Feb/2020:13:14:45 +0800] 200 1121 192.168.109.132 192.168.109.138:6443 - [09/Feb/2020:13:18:14 +0800] 200 1120 192.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 pods NAME READY STATUS RESTARTS AGE nginx-dbddb74b8-zbhhr 1/1 Running 0 47s 此时已经创建完成,正在运行中 *** 注意日志问题 ***: [root@localhost kubeconfig]# kubectl logs nginx-dbddb74b8-zbhhr Error 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:anonymous clusterrolebinding.rbac.authorization.k8s.io/cluster-system-anonymous created 此时,再次查看日志,就不会出现报错: //查看 Pod网络: [root@localhost kubeconfig]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE nginx-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上查看到日志信息:
福建罗杰网络公司大庆网络公司首选6火星下拉甘肃经验丰富的网络公司是哪家昆明网络公司杨华上海游湛网络公司网络公司互卦是什么意思关注贵州广电网络公司浙江玉成网络公司的主播成都 网络公司招聘淮南网络公司皆选14火星入驻合肥的知名网络公司秦安县网络公司高端seo俱乐部网络公司的公司口号网站推广seo排名公司哪家好各大网络公司的标志网络公司福利制度网络公司大佬写的书广电网络公司下面的乡镇站衡阳哪家网络公司最优惠黄山网络公司云浮网络公司首荐11火星广电网络公司年鉴材料SEO搜索引擎优化教程技术广灵网络公司网络公司的人员构架seo营销甜柚网络皆上北京梦龙网络公司盐城建湖网络公司网络公司人事部主管广电网络公司什么时候成立福州游龙网络公司投诉电话茂名网络公司都选4火星下拉妥妥网络公司怎么样淮北网络公司服务费用象山网络公司有哪些衡水哪里网络公司好怀柔区网络公司周口网络公司推荐7火星下拉潍坊网络公司首推24火星杭州淘派网络公司长葛seo软件推广广州牛牛互娱棋牌网络公司广州视讯网络公司金融网络公司管理网络公司招聘合同杭州网络公司技术乐云seo广东广州广电网络公司西峡县广播网络公司蓝翔互娱网络公司加qq好友seo 推广排名代做网络公司销售员怎么找各户设计logo网络公司邯郸网络公司首荐30火星网络公司推广哪个好中山广告网络公司伊拉克网络公司成立一家网络公司需要什么永州网络公司要找2火星衡东网络公司地址合肥网络公司孙树宝注册卖食品的网络公司尚宜欧酒店4层网络公司长治网络公司皆选24火星广电网络公司灌阳分公司电话哈尔滨途雄网络公司可靠吗昆明市网络公司地址小鱼海棠在网络公司和小海拍照温州网络公司选择17火星seo大神月入多少钱杭州专业网络公司公司新开网络公司名字松江区网络公司注册报价卡诺门窗 seoseo难洛阳信捷网络公司seo服务免费咨询梅州锋派网络公司上海纳夏网络公司是做什么的丰镇整站优化seo北京一帆网络公司广州亦客网络公司推广怎么样天龙收购三家网络公司西安聚创网络公司河源网络公司首荐11火星为啥要做seo渭南网络公司甄选8火星攀枝花网络公司首选29火星佛山网络公司首荐6火星下拉网络公司预计市场占有率云南人工智能网络公司世纪龙信息网络公司 张颖舞阳广播电视网络公司日照市广播电视网络公司seo快速排名推荐火星系统网络公司代运营招商靠谱吗赢合网络公司上海驰豹网络公司违法吗博酒会网络公司济南网络公司臻动鹰潭网络公司咨询7火星下拉淮北网络公司哪里好海瑶seo结构优化赤那思网络公司小鹿科技网络公司招聘车康上海网络公司汤阴盛源科技网络公司襄阳网络公司立荐10火星雅安网络公司搜18火星互助网络公司安阳七天网络公司广电局网络公司朱林安湖南省广电网络公司总越秀专业头条seo站上seo三要素沈阳壹天网络公司唐山网络公司徐汉阳外链优化源码seo曾亮的英文seo课程绵阳seo公司参考火星维朗网络公司是做什么的湖南名品之家网络公司镇江南门大街网络公司山西省网络公司武汉网络公司 推广陈清 南京网络公司永福县网络公司电话号码成都四九网络公司望你seo啊巴西网络公司安平网络公司哪家专业泰安共创网络公司沈阳致远网络公司怎么样聊城市有线网络公司网络公司的广告费用比例上海网络公司哪家强原始库标准库seo词库建设seo多语言是什么新乡市恒毅网络公司怎么样慕辰网络公司巨旭网络公司怀化网络公司就找7火星下拉西安宽境网络公司克拉玛依光电网络公司白城港网络公司网络公司经常会出现的问题头条站长工具seo综合查询留痕鸡街网络公司电话号码是多少国家网络公司有几个网络公司彩铃范文宿迁安装总机网络公司永新网络公司金科微创网络公司怎么样上海悠星网络公司网龙网络公司部门句容网络公司中央商场福泉市政府与广电网络公司XX网络公司招聘方案网络公司在工商局查不到seo搜索引擎优化 嘉兴联通网络公司联系方式用别的网络公司的资质沅陵电信网络公司沈阳网络公司找21火星下拉长春网络公司佟三明百纳互动网络公司长春汽车网络公司呼伦贝尔网络公司推荐7火星西宁网络公司认准7火星湖州网络公司就找1火星中国最有名的网络公司半年网络公司总结邢台网络公司多少钱房子租给别人注册网络公司欧州网络公司发生火灾象山浩鹰网络公司电话网络公司个人发票黑龙江省电商网络公司有几家永创网络公司长宁网络公司注册流程极乐网络公司西宁网络公司认准7火星网龙网络公司周围住宅英德的市昂达网络公司马鞍山蜗壳网络公司做seo和打工商丘seo公司立荐2火星黄山市偷网络公司客户seo这个职业怎么样关晓春兄弟网络公司龙江网络公司企业献言献策扬州网络公司立找2火星安庆网络公司首选19火星网络公司设计部工作内容台州飞速网络公司靠谱吗网龙网络公司最大股权旬邑县广电网络公司岳建龙南通铭志网络公司时代网络公司简介淄博网络公司询问臻动传媒