云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)

当我们在K8s集群中安装好Kubesphere,并部署好自己的微服务以后,如何将我们的服务暴露出去是一个问题。

通常我们会使用NodePort的方式将我们的应用通过K8s允许的端口即30000-32767端口暴露出去,这种方式的缺点也很明显,当我们配置好域名进行访问时需要带上端口号才能访问到对应的服务而且端口有数量限制,一般情况下我们不希望在请求时带上这些端口。

能不能使用默认的80/443端口进行访问我们的服务呢?公有云服务中各个厂商都提供了对应的loadBalancer服务,Kubesphere的网关设置中也对这种方式做了支持。提供各家云服务厂商的LoadBalancer,我们只需要配置对应云服务厂商提供的的注解即可。

但在私有云环境,自己搭建的虚拟机中我们想要对外暴露我们的服务时就显的困难了。此时Kuhesphere社区提供了私有云上的插件帮我们完成这一步。OpenELB来了。

OpenELB简介

OpenELB 项目在此前命名为 PorterLB,是为物理机(Bare-metal)、边缘(Edge)和私有化环境设计的负载均衡器插件,可作为 Kubernetes、K3s、KubeSphere 的 LB 插件对集群外暴露 “LoadBalancer” 类型的服务,核心功能包括:

  • 基于 BGP 与 Layer 2 模式的负载均衡
  • 基于路由器 ECMP 的负载均衡
  • IP 地址池管理管理
  • 使用 CRD 进行 BGP 配置

架构是示意图:提供了对应的负载均衡服务,支持LB、IPAM、GoBGP的Controller,使用BGP 、Layer 2、NDP(IPV6)协议
云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第1张图片

使用

在kubesphere中添加OpenELB的应用模板。
云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第2张图片

云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第3张图片
进入应用,使用模板,安装使用。一路下一步。
云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第4张图片
云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第5张图片
配置EIP地址池
进入kubectl命令行

#1.先配置kubectl ,让ARP请求通过kubectl进行转发
kubectl edit configmap kube-proxy -n kube-system

#2.设置 data.config.conf.ipvs.strictARP 改为 true.
# ipvs:
#   strictARP: true

#3.配置地址池
cd /opt
touch layer2-eip.yaml
cat > /opt/layer2-eip.yaml  << "EOF" 
apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:
  #名称
  name: layer2-eip
  #配置默认的eip,下次使用安装应用使用loadbalancer时则不需要重复添加注解
  annotations:
    eip.openelb.kubesphere.io/is-default-eip: layer2-eip
spec:
  # address 必须与Kubernetes 集群节点在同一网段。一个或多个 IP   地址,将被 OpenELB 使用,可以用10.10.10.0/24,也可以是单个的,也可以是10.10.10.100-10.10.10.200这种,一下用单个的,暴露服务的时候可以用这个
  address: 10.10.10.9
  # 网卡
  interface: eth0
  #协议
  protocol: layer2
EOF

#安装
kubectl  apply  -f  /opt/layer2-eip.yaml

在这里插入图片描述
查看结果

kubectl get eip    

在这里插入图片描述

安装好后,就可以创建我们的应用了,可以使用应用商店安装,也可以自行创建,创建时外部访问方式需要设置为LoadBalancer并添加如下注解:

此处在应用商店里安装了rabbitmq,修改mq的访问方式为LoadBalancer,并添加以下注解,以为上面设置过默认的方式了此处只需要修改一下外部访问方式即可,如果是已经安装的应用,则需要先将外部访问方式改为无,然后再次修改为loadBalancer即可:

描述
eip.openelb.kubesphere.io/v1alpha2 layer2-eip eip名称
lb.kubesphere.io/v1alpha1 openelb 使用openelb
protocol.openelb.kubesphere.io/v1alpha1 layer2 模式:layer2

云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第6张图片

设置注解后会自动改为10.10.10.9这个IP

云原生学习-Kubesphere使用OpenELB暴露集群服务(八)(集群被玩挂了等我重启。。。)_第7张图片

你可能感兴趣的:(K8S云原生,云原生,kubernetes,java,后端)