【云原生Kubernetes系列项目实战第一篇】k8s集群+高可用负载均衡层+防火墙( 提及年少一词,应与平庸相斥)(三)

简介: 【云原生Kubernetes系列项目实战第一篇】k8s集群+高可用负载均衡层+防火墙( 提及年少一词,应与平庸相斥)(三)

四、搭建负载均衡层


负载均衡区域配置Keepalived+Nginx,实现负载均衡高可用,通过VIP 192.168.10.100和自定义的端口号即可访问K8S发布出来的服务。


lb01:192.168.10.40

lb02:192.168.10.50

VIP:192.168.10.100

#---------1、两台负载均衡器配置nginx--------------
 #关闭防火墙和selinux
 systemctl stop firewalld
 systemctl disable firewalld
 setenforce 0
 sed -i 's/enforcing/disabled/' /etc/selinux/config
 #设置主机名
 hostnamectl set-hostname lb01
 su
 hostnamectl set-hostname lb02
 su
 #配置nginx的官方在线yum源
 cat > /etc/yum.repos.d/nginx.repo << 'EOF'
 [nginx]
 name=nginx repo
 baseurl=https://nginx.org/packages/centos/7/$basearch/
 gpgcheck=0
 EOF
 yum install nginx -y
 #修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台node的节点ip和30000端口
 vim /etc/nginx/nginx.conf
 events {
     worker_connections  1024;
 }
 #在http块上方,添加stream块
 stream {
     upstream k8s-nodes {
         server 192.168.10.20:30000;    #node01IP:nodePort
         server 192.168.10.30:30000;    #node02IP:nodePort
     }
     server {
         listen 30000;                  #自定义监听端口
         proxy_pass k8s-nodes;
     }
 }
 http {
 ......
     #include /etc/nginx/conf.d/*.conf;    #建议将这一行注释掉,否则会同时加载/etc/nginx/conf.d/default.conf文件中的内容,nginx会同时监听80端口。
 }
 #检查配置文件语法是否正确
 nginx -t   
 #启动nginx服务,查看到已监听30000端口
 systemctl start nginx
 systemctl enable nginx
 netstat -natp | grep nginx 
tcp        0      0 0.0.0.0:30000           0.0.0.0:*               LISTEN      53751/nginx: master 
 #------------2、两台负载均衡器配置keepalived--------
 #安装keepalived
yum install -y keepalived
#在/etc/keepalived目录下创建nginx检测脚本
cd /etc/keepalived/
vim check_nginx.sh
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      systemctl start nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived                    
      fi
fi
#给脚本执行权限
chmod +x check_nginx.sh 
#修改keepalived配置文件
vim 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_01       #修改主备id
   #删掉这里的四行vrrp  
}
#加入周期性检测nginx服务脚本的相关配置
vrrp_script check_nginx{
    script "/etc/keepalived/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33   #修改网卡名称
    virtual_router_id 51
    priority 100   #优先级,主不改,备改成比100小就行
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100   #修改VIP地址
    }
    #添加跟踪(执行脚本)
    track_script{
        check_nginx
    }
}
#重启服务
systemctl restart keepalived.service
systemctl enable keepalived.service
#备服务器下载好keepalived后,在主服务器上将脚本和keepalived配置文件传过去
[root@nginx01 keepalived]# scp * 192.168.10.50:`pwd`
#传过去后修改三处
router_id NGINX_02 
state BACKUP
priority 90 
#然后重启服务
systemctl restart keepalived.service
systemctl enable keepalived.service






五、配置网关服务器


网关服务器,设置双网卡,并且配置SNAT和DNAT转换实现外网客户端可以通过12.0.0.1访问内网的Web服务。


内网网卡ens33:192.168.10.1

外网网卡ens32:12.0.0.1

##两台负载均衡器,将网关地址修改为防火墙服务器的内网IP地址
 vim /etc/sysconfig/network-scripts/ifcfg-ens33
 GATEWAY="192.168.10.1"
 systemctl restart network   #重启网络
 ##配置防火墙服务器
 #-------------1、关闭防火墙和selinux-------------
 systemctl stop firewalld
 systemctl disable firewalld
 setenforce 0
 sed -i 's/enforcing/disabled/' /etc/selinux/config
 #------------2、开启路由转发功能----------------
 vim /etc/sysctl.conf
 net.ipv4.ip_forward = 1     //在文件中增加这一行,开启路由转发功能
 sysctl -p    //加载修改后的配置
 #------------3、配置iptables策略---------------
 #先将原有的规则清除
 iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
 #设置SNAT服务,解析源地址。修改nat表中的POSTROUTING链。
 #将源地址192.168.10.100转换为为12.0.0.1
 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens32 -j SNAT --to 12.0.0.1
  #-t nat                  //指定nat表
  #-A POSTROUTING          //在POSTROUTING链中添加规则  
  #-s 192.168.10.100/24    //数据包的源地址
  #-o ens36                //出站网卡
  #-j SNAT --to 12.0.0.1   //使用SNAT服务,将源地址转换成公网IP地址。
 #设置DNAT服务,解析目的地址。修改nat表中的PRETROUTING链。
 #将目的地址12.0.0.1:3344 转换成 192.168.10.100:3344
 iptables -t nat -A PREROUTING -i ens32 -d 12.0.0.1 -p tcp --dport 8080 -j DNAT --to 192.168.10.100:30000
  #-A PREROUTING         //在PREROUTING链中添加规则        
  #-i ens32              //入站网卡
  #-d 12.0.0.254         //数据包的目的地址
  #-p tcp --dport 3344   //数据包的目的端口
  #-j DNAT --to 192.168.10.100:3344   //使用DNAT功能,将目的地址和端口转换成192.168.10.100:3344
#查看策略
[root@wall ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            12.0.0.1             tcp dpt:8080 to:192.168.10.100:30000
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.10.0/24      0.0.0.0/0            to:12.0.0.1
 ##客户端修改网关配置文件,测试访问内网的Web服务
 客户端IP地址:12.0.0.12,将网关地址设置为防火墙服务器的外网网卡地址:12.0.0.1
 浏览器输入 http://12.0.0.1:8080 进行访问




配置客户端



目录
相关文章
|
9月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
721 1
|
9月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
519 89
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
1083 9
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1289 33
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
851 19
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
人工智能 负载均衡 Cloud Native
云原生之负载均衡策略
ai必学之负载均衡 @[TOC]轮询处理;weight权重;ip_hash
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
615 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性

推荐镜像

更多