k8s使用kube-router暴露集群中的pod和svc到外部
简介
使用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 复制代码
安装
# 本次实验重新创建了集群,使用之前测试其他网络插件的集群环境没有成功 # 可能是由于环境干扰,实验时需要注意 # 创建kube-router目录下载相关文件 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 # 启用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-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 # 删除kube-proxy kubectl -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-system kubectl get svc -n kube-system 复制代码
测试
# 测试之前请先安装配置好kube-dns或者coredns # 启动用于测试的deployment 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 # dns及访问测试 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
# 在lab1上获取pod和svc信息 kubectl get pods -o wide kubectl get svc # 在lab4上访问 # 10.244.2.11 其中一个 nginx pod 的ip # 10.106.123.190 为 example-service 的 cluster ip 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到外部
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s与监控--改造telegraf的buffer实现
改造telegraf的buffer实现 前言 最近在使用telegraf的场景中,要求数据在程序意外终止的时候不丢失。按照telegraf最初的原始实现,在running_output内部维护了两个buffer,分别是metrics和failMetrics。这两个buffer是基于go中channel实现的。由于没 有持久化机制,在意外退出的时候,存在丢失数据的风险。所以这篇文章主要讲述之前telegraf保证数据安全的一些措施和我们对代码的一些优化。 telegraf关于数据安全的处理办法 关于两个buffer,定义在running_output.go的struct中。 // RunningOutput contains the output configuration type RunningOutput struct { Name string Output telegraf.Output Config *OutputConfig MetricBufferLimit int MetricBatchSize int MetricsFiltered selfstat.Stat Met...
- 下一篇
带着问题学 Kubernetes 架构
打开这篇文章的同学,想必对 docker 都不会陌生。docker 是一种虚拟容器技术,它上手比较简单,只需在宿主机上起一个 docker engine,然后就能愉快的玩耍了,如:拉镜像、起容器、挂载数据、映射端口等等。相对于 Kubernetes(K8S)的上手,可谓简单很多。 那么 K8S 是什么,又为什么上手难度大?K8S 是一个基于容器技术的分布式集群管理系统,是谷歌几十年来大规模应用容器技术的经验积累和升华的一个重要成果。所以为了能够支持大规模的集群管理,它承载了很 多的组件,而且分布式本身的复杂度就很高。又因为 K8S 是谷歌出品的,依赖了很多谷歌自己的镜像,所以对于国内的同学环境搭建的难度又增加了一层。 下面,我们带着问题,一步步来看 K8S 中到底有哪些东西? 首先,既然是个分布式系统,那势必有多个 Node 节点(物理主机或虚拟机),它们共同组成一个分布式集群,并且这些节点中会有一个 Master 节点,由它来统一管理 Node 节点。 如图所示: 问题一:主节点和工作节点是如何通信的呢? 首先,Master 节点启动时,会运行一个 kube-apiserver 进程...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Hadoop3单机部署,实现最简伪集群
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7安装Docker,走上虚拟化容器引擎之路