【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB

OpenELB

官网 https://openelb.io
本文内容学习于马士兵云原生课程

概述

OpenELB is an open-source load balancer implementation designed for bare-metal Kubernetes clusters.
OpenELB是一个为裸机Kubernetes集群设计的开源负载均衡器实现。

In cloud-based Kubernetes clusters, Services are usually exposed by using load balancers provided by cloud vendors. However, cloud-based load balancers are unavailable in bare-metal environments. OpenELB allows users to create LoadBalancer Services in bare-metal, edge, and virtualization environments for external access, and provides the same user experience as cloud-based load balancers.
在基于云的Kubernetes集群中,服务通常通过使用云供应商提供的负载均衡器来公开。
但是,基于云的负载均衡器在裸机环境中不可用。
OpenELB允许用户在裸机、边缘和虚拟化环境中创建LoadBalancer服务以供外部访问,并提供与基于云的负载均衡器相同的用户体验。

部署

在k8s安装

#安装
kubectl apply -f https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml
#查看相关Pod状态
kubectl get pods -n openelb-system

#删除openelb
kubectl delete -f https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml
#查看openelb namespace是否存在
kubectl get ns
#不出所料,拉取镜像失败
kubectl describe pod openelb-admission-create-l6tcg -n openelb-system

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第1张图片

#使用命令将openelb.yaml配置文件下载下来
wget https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml
#这个文件超长,对vi命令不熟悉的,直接down下来编辑
kubectl apply -f openelb.yaml
kubectl get pods -n openelb-system
kubectl delete -f openelb.yaml

修改镜像信息,官网yaml已经给出如下提示,搜索containers,有两处需要修改
在这里插入图片描述

#k8s-master下载镜像,很怪,前两个节点可以下载,第三个节点下载巨慢。。。。。
docker pull kubesphere/openelb:v0.5.1
#打包镜像
docker save -o openelb.tar kubesphere/openelb:v0.5.1
#拷贝镜像到其他节点
scp openelb.tar root@k8s-node1:/root
#导入镜像
docker load -i openelb.tar

等待一会儿,查看是否为Running状态
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第2张图片

部署成功
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第3张图片

在KubeSphere安装

OpenELB配置

Step 1: Enable strictARP for kube-proxy

#命令方式
kubectl edit configmap kube-proxy -n kube-system
#该项改为true
ipvs:
  strictARP: true
#该项改为ipvs
mode: ipvs  

#重启
kubectl rollout restart daemonset kube-proxy -n kube-system
#查看状态
kubectl get pods -n kube-system

或者直接在kubesphere上操作
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第4张图片
保存更新,之后

执行如下命令

kubectl rollout restart daemonset kube-proxy -n kube-system
kubectl get pods -n kube-system
#age 单位是s了,重启成功

#确认配置生效
kubectl get configmap -n kube-system kube-proxy -o yaml | grep strictARP

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第5张图片
在这里插入图片描述

Step 2: Specify the NIC Used for OpenELB

NIC(Network Interface Card ,网络接口卡、网卡)

#多个网卡,需要指定  192.168.8.11 master节点IP
# kubectl annotate nodes k8s-master01 layer2.openelb.kubesphere.io/v1alpha1="192.168.8.11"

只有一个网卡,暂时不需要配置
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第6张图片

Step 3: Create an Eip Object

#创建eip对象
#mkdir eip
#cd eip
#vim layer2-eip.yaml
apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:
  name: layer2-eip
spec:
  address: 192.168.8.70-192.168.8.99
  interface: ens32
  protocol: layer2

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第7张图片

kubectl apply -f layer2-eip.yaml
kubectl get eip

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第8张图片

OpenELB使用

k8s命令行

KubeSphere

创建项目

之前已创建
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第9张图片

创建工作负载

之前已经创建了mysql,配置了外网访问NodePort,删除外网访问svc.
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第10张图片
在这里插入图片描述

创建服务

编辑外网访问
上面已经删除了之前创建的外网访问,这里重新编辑外网访问。

#将下面的键值对填写到注解列表中
lb.kubesphere.io/v1alpha1:openelb
protocol.openelb.kubesphere.io/v1alpha1:layer2
eip.openelb.kubesphere.io/v1alpha2:layer2-eip

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第11张图片
ip使用1
在这里插入图片描述
编辑服务,服务端口改为80
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第12张图片
测试连接
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第13张图片

创建应用路由

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第14张图片
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第15张图片

#没有DNS服务器,暂时在hosts下配置域名解析
192.168.8.70 kw-mysql.cn

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第16张图片

补充Nacos集群外网访问配置

之前搭建的Nacos集群,还没用使用OpenELB。

重新配置一下。

修改application.properties

上面将mysql的容器暴露端口修改为了80,所以需要修改application.properties的数据库连接地址

mysql端口为 80

创建服务

kw-nacos-svc
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第17张图片

#将下面的键值对填写到注解列表中
lb.kubesphere.io/v1alpha1:openelb
protocol.openelb.kubesphere.io/v1alpha1:layer2
eip.openelb.kubesphere.io/v1alpha2:layer2-eip

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第18张图片
在这里插入图片描述
ip使用2
在这里插入图片描述

创建应用路由

kw-nacos

填写规则即可,不需要添加注解
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第19张图片

#宿主机配置域名解析
192.168.8.71 kw.nacos.cn

测试访问
【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB_第20张图片

你可能感兴趣的:(#,Kubernetes,云原生,kubernetes,容器)