当前位置: 首页 > news >正文

【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

在这里插入图片描述

#使用命令将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状态
在这里插入图片描述

部署成功
在这里插入图片描述

在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上操作
在这里插入图片描述
保存更新,之后

执行如下命令

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

在这里插入图片描述
在这里插入图片描述

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"

只有一个网卡,暂时不需要配置
在这里插入图片描述

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.99interface: ens32protocol: layer2

在这里插入图片描述

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

在这里插入图片描述

OpenELB使用

k8s命令行

KubeSphere

创建项目

之前已创建
在这里插入图片描述

创建工作负载

之前已经创建了mysql,配置了外网访问NodePort,删除外网访问svc.
在这里插入图片描述
在这里插入图片描述

创建服务

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

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

在这里插入图片描述
ip使用1
在这里插入图片描述
编辑服务,服务端口改为80
在这里插入图片描述
测试连接
在这里插入图片描述

创建应用路由

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

补充Nacos集群外网访问配置

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

重新配置一下。

修改application.properties

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

mysql端口为 80

创建服务

kw-nacos-svc
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
ip使用2
在这里插入图片描述

创建应用路由

kw-nacos

填写规则即可,不需要添加注解
在这里插入图片描述

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

测试访问
在这里插入图片描述

http://www.lryc.cn/news/146932.html

相关文章:

  • Android Native Code开发学习(三)对java中的对象变量进行操作
  • 如何用bat文件调用与它在同一文件夹下的某个exe程序
  • 设计模式--单例模式(Singleton Pattern)
  • postgis数据库从一张表中过滤出一部分数据到新表中
  • INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖
  • 微信开发之一键创建标签的技术实现
  • 八一参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.
  • ChatGPT⼊门到精通(7):GPT3.5与 4.0区别
  • Springboot整合MyBatisPlus框架操作MySQL
  • 基于Jenkins构建生产CICD环境(第二篇)
  • ioctl、printk及多个此设备支持
  • 电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒
  • centos服务器系统下安装python3并与自带的python2
  • (二十)大数据实战——Flume数据采集的基本案例实战
  • AutoCAD图如何保存为Word
  • Java线程 - 详解(2)
  • 事务特性 - 达梦数据库
  • axios 使用FormData格式发送GET请求
  • CS144(2023 Spring)Lab 1: stitching substrings into a byte stream
  • 【PHP】常用的PHP内置函数
  • css自学框架之消息弹框
  • 42、Flink 的table api与sql之Hive Catalog
  • PAT 1145 Hashing - Average Search Time
  • C++调用Python Win10 Miniconda虚拟环境配置
  • 从0到1学会Git(第一部分):Git的下载和初始化配置
  • 【记录】手机QQ和电脑QQ里的emoji种类有什么差异?
  • blender界面认识01
  • TCP数据报结构分析(面试重点)
  • 合并两个有序的单链表,合并之后的链表依然有序
  • eureka迁移到nacos--双服务中心注册