k8s 综合部署练习(针对负载均衡+外网访问web)
(1)Kubernetes 区域可采用 Kubeadm 方式进行安装。(2)要求在 Kubernetes 环境中,通过yaml文件的方式,创建Deployment控制器和4个Nginx Pod副本,并进入容器中修改index.html文件内容,以做区分,页面内容可自己定义。(3)编写service对应的yaml文件,使用NodePort类型和TCP 30010端口将Nginx服务发布出去。(4)负
部署需求
(1)Kubernetes 区域可采用 Kubeadm 方式进行安装。
(2)要求在 Kubernetes 环境中,通过yaml文件的方式,创建Deployment控制器和4个Nginx Pod副本,并进入容器中修改index.html文件内容,以做区分,页面内容可自己定义。
(3)编写service对应的yaml文件,使用NodePort类型和TCP 30010端口将Nginx服务发布出去。
(4)负载均衡区域配置Keepalived+Nginx,实现负载均衡高可用,通过VIP 192.168.73.66和自定义的端口号即可访问K8S发布出来的服务。
(5)iptables防火墙服务器,设置双网卡,并且配置SNAT和DNAT转换实现外网客户端可以通过12.0.0.1访问内网的Web服务。
解题思路以及部署注意点
(1)初始化化环境,利用kubeadm搭建出一个master两个node节点的k8s集群
(2)搭建好一主二节点的k8s集群后,通过yaml的资源模板来创建pod和相关service资源
创建pod:
kubectl expose deployment nginx-exam --name=exam-service --type=NodePort --dry-run=client -o yaml >nginx-svc.yaml
vim nginx.yaml
kubectl apply -f nginx.yaml
创建相关的资源:
#资源只要模板就行,后面可以通过编辑器进行修改
kubectl expose deployment nginx-exam --port=8000 --target-port=80 --name=exam-service --type=NodePort --dry-run=client -o yaml > nginx-svc.yaml
vim nginx-svc.yaml
kubectl apply -f nginx-svc.yaml
(3)为pod创建不同的web测试页面
kubectl exec -it nginx-exam-7f987d55dd-f75zg bash
echo "<h1>this is web4</h1>" > /usr/share/nginx/html/index.html
kubectl exec -it nginx-exam-7f987d55dd-sj6nw bash
echo "<h1>this is web4</h1>" > /usr/share/nginx/html/index.html
kubectl exec -it nginx-exam-7f987d55dd-tg6r7 bash
echo "<h1>this is web4</h1>" > /usr/share/nginx/html/index.html
kubectl exec -it nginx-exam-7f987d55dd-z9j96 bash
echo "<h1>this is web4</h1>" > /usr/share/nginx/html/index.html
通过pod 的clusterIP加上映射出的端口进行访问测试:
(4)使用keepalived+nginx实现负载均衡的实现,期间需要写出心跳检测脚本,配置好nginx的负载均衡设置,nginx的主配置文件利用四层代理转发,添加好转发池,在后面的转发模块中指定的
转发池中的listen监听端口,就为VIP的监听端口。
主keepalived配置:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id nginx_backup
}
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.73.66
}
track_script {
check_nginx
}
}
备keepalived配置:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id nginx_backup
}
vrrp_script check_nginx {
script "/etc/nginx/check_nginx.sh"
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.73.66
}
track_script {
check_nginx
}
}
心跳检测脚本:
# 两个负载均衡调度器都要设置
vim /etc/nginx/check_nginx.sh
#!/bin/bash
killall -0 nginx &>/dev/null
if [ $? -ne 0 ];then
systemctl stop keepalived
fi
设置完成后就行nginx和keepalived的重启(先启nginx)
进行vip访问端口测试:
(4)进行网关服务器的映射
按照要求两张网卡:ens33 指向内网,ens36 指定外网(充当网关服务器)
将所有的服务器的网关都指向网关服务器的IP
进行DNAT和SNAT的设置:
#打开路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
#做SNAT和DNAT做网关映射
iptables -t nat -A POSTROUTING -s 192.168.73.0/24 -o ens36 -j SNAT --to 12.0.0.1
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.73.66:6443
(5)使用外网的客户机进行访问(网关指向外网网卡IP)
更多推荐
所有评论(0)