本文共 2990 字,大约阅读时间需要 9 分钟。
使用kube-router
实现k8s集群的ingress
功能,高可用易扩展
本实验在已经安装配置好k8s集群基础之上进行实验,k8s安装参考博 客其他文章。lab4作为一个路由器,转发lab5的请求
lab1: master 11.11.11.111lab2: node 11.11.11.112lab3: node 11.11.11.113lab4: router 11.11.11.114lab5: client 11.11.11.115复制代码
# 本次实验重新创建了集群,使用之前测试其他网络插件的集群环境没有成功 # 可能是由于环境干扰,实验时需要注意 # 创建kube-router目录下载相关文件mkdir kube-router && cd kube-routerrm -f generic-kuberouter-all-features-dsr.yamlwget https://raw.githubusercontent.com/mgxian/kube-router/master/generic-kuberouter-all-features-dsr.yaml# 启用pod网络通信,网络隔离策略,服务代理所有功能 # CLUSTERCIDR kube-controller-manager 启动参数 --cluster-cidr 的值 # APISERVER kube-apiserver 启动参数 --advertise-address 值CLUSTERCIDR='10.244.0.0/16'APISERVER='https://11.11.11.111:6443'sed -i "s;%APISERVER%;$APISERVER;g" generic-kuberouter-all-features-dsr.yamlsed -i "s;%CLUSTERCIDR%;$CLUSTERCIDR;g" generic-kuberouter-all-features-dsr.yaml# 修改配置 containers: - name: kube-router image: cloudnativelabs/kube-router imagePullPolicy: Always args: ... - --peer-router-ips=11.11.11.114 - --peer-router-asns=64513 - --cluster-asn=64512 - --advertise-external-ip=true ...# 部署kubectl apply -f generic-kuberouter-all-features-dsr.yaml# 删除kube-proxykubectl -n kube-system delete ds kube-proxy# 在每个节点上执行 # 如果是二进制安装使用如下命令systemctl stop kube-proxy# 在每个节点上执行 # 清理kube-proxy留下的规则docker run --privileged --net=host registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.10.2 kube-proxy --cleanup# 查看kubectl get pods -n kube-systemkubectl get svc -n kube-system复制代码
# 测试之前请先安装配置好kube-dns或者coredns # 启动用于测试的deploymentkubectl run nginx --replicas=2 --image=nginx:alpine --port=80kubectl expose deployment nginx --type=NodePort --name=example-service-nodeportkubectl expose deployment nginx --name=example-service# 查看kubectl get pods -o widekubectl get svc -o wide# dns及访问测试kubectl run curl --image=radial/busyboxplus:curl -i --ttynslookup kubernetesnslookup example-servicecurl example-service复制代码
# 安装yum install -y quagga# 配置cat >/etc/quagga/bgpd.conf<
# 在lab1上修改 example-service 配置 external ipkubectl edit svc example-service...spec: clusterIP: 10.111.34.147 externalIPs: - 11.11.111.111...# 在lab1上查看svc信息 # 可以看到 example-service 有了 external ipkubectl get svc# 查看lab4路由 # 可以看到有 11.11.111.111 相关的路由ip route# 在lab4上访问测试curl 11.11.111.111复制代码
# 在lab5添加路由ip route add 11.11.111.111 via 11.11.11.114ip route# 在lab5访问测试curl 11.11.111.111# 在lab1查看ipvsipvsadm -L -n复制代码
# DSR实验没有成功,实验环境是vagrant配合virtualbox # 在lab1设置 example-service 使用 DSR 模式 # 服务的响应直接发送到客户端不经过lvs中转kubectl annotate svc example-service "kube-router.io/service.dsr=tunnel" # 在lab1查看ipvs # 可以看到 Tunnel 转发类型ipvsadm -L -n# 在lab5访问测试curl 11.11.111.111# 在集群中的节点抓包分析tcpdump -i kube-bridge proto 4复制代码
# 清理kubectl delete svc example-service example-service-nodeportkubectl delete deploy nginx curl复制代码
转载地址:http://mydzm.baihongyu.com/