k8s使用kube-router暴露集群中的pod和svc到外部

简介: 简介 使用kube-router把k8s集群中的pod ip和cluter i暴露集群外部,实现集群外的节点直接访问k8s的pod和svc 环境说明 本实验在已经安装配置好k8s集群基础之上进行实验,k8s安装参考博客其他文章。

简介

使用kube-router把k8s集群中的pod ipcluter 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到外部
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
13天前
|
前端开发 编解码 数据格式
浅谈响应式编程在企业级前端应用 UI 开发中的实践
浅谈响应式编程在企业级前端应用 UI 开发中的实践
14 0
浅谈响应式编程在企业级前端应用 UI 开发中的实践
|
26天前
|
Prometheus Kubernetes 监控
容器服务ACK常见问题之pod设置securityContext调整参数失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
13天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
16 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
4天前
|
存储 Kubernetes 调度
Kubernetes Pod生命周期
Kubernetes Pod生命周期
10 0
Kubernetes Pod生命周期
|
4天前
|
存储 Kubernetes 应用服务中间件
Kubernetes Pod
Kubernetes Pod
25 0
Kubernetes Pod
|
2天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
35 17
|
15天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
11 0
|
15天前
|
存储 Kubernetes 调度
K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(下)
本文全面探讨了Kubernetes集群中Pod的四种关键机制——Pod亲和性、污点(Taints)、容忍度(Tolerations)、生命周期以及健康探测,为读者提供了深入理解并有效应用这些特性的指南。
|
15天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
101 0
|
22天前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
181 0

推荐镜像

更多