简介
使用kube-router把k8s集群中的pod ip和cluter i暴露集群 外部,实现集群外的节点直接访问k8s的pod和svc
环境说明
本实验在已经安装配置好k8s集群基础之上进行实验,k8s安装参考博客其他文章。
实验架构
lab1: master 11.11.11.111
lab2: node 11.11.11.112
lab3: node 11.11.11.113
lab4: external 11.11.11.114
复制代码
安装
mkdir kube-router && cd kube-router
rm -f generic-kuberouter-all-features.yaml
wget https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/generic-kuberouter-all-features-advertise-routes.yaml
CLUSTERCIDR='10.244.0.0/16'
APISERVER='https://11.11.11.111:6443'
sed -i "s;%APISERVER%;$APISERVER;g" generic-kuberouter-all-features-advertise-routes.yaml
sed -i "s;%CLUSTERCIDR%;$CLUSTERCIDR;g" generic-kuberouter-all-features-advertise-routes.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-cluster-ip=true"
...
kubectl apply -f generic-kuberouter-all-features-advertise-routes.yaml
kubectl -n kube-system delete ds kube-proxy
systemctl stop 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-system
kubectl get svc -n kube-system
复制代码
测试
kubectl run nginx --replicas=2 --image=nginx:alpine --port=80
kubectl expose deployment nginx --type=NodePort --name=example-service-nodeport
kubectl expose deployment nginx --name=example-service
kubectl get pods -o wide
kubectl get svc -o wide
kubectl run curl --image=radial/busyboxplus:curl -i --tty
nslookup kubernetes
nslookup example-service
curl example-service
复制代码
在lab4配置quagga
yum install -y quagga
cat >/etc/quagga/bgpd.conf<<EOF
! -*- bgp -*-
!
! BGPd sample configuratin file
!
! $Id: bgpd.conf.sample,v 1.1 2002/12/13 20:15:29 paul Exp $
!
hostname lab4
password zebra
!
router bgp 64513
bgp router-id 11.11.11.114
neighbor 11.11.11.111 remote-as 64512
neighbor 11.11.11.112 remote-as 64512
neighbor 11.11.11.113 remote-as 64512
log stdout
EOF
systemctl start bgpd
systemctl status bgpd
systemctl enable bgpd
ip route
复制代码
在lab4测试访问k8s集群中的pod和svc
kubectl get pods -o wide
kubectl get svc
curl 10.244.2.11
curl 10.106.123.190
复制代码
清理
kubectl delete svc example-service example-service-nodeport
kubectl delete deploy nginx curl
本文转自掘金-
k8s使用kube-router暴露集群中的pod和svc到外部