incloud开发文档 5.1.0 Help

kubesphere中的网关配置

kubesphere的网配置,官方文档写的非常不清晰,不懂的人根本看不明白,文档上也没有体现如果实现; 我的需求是:我想在集群中使用80或443端口做为外部访问的总入口,其他的service(一些支持http请求的服务)使用ingress路由跳转的形式,就如同kubernetes上安装ingresss,默认80/443端口路由一样,但是kubesphere的网关并不是这样玩的;

网关支持的类型

主要是针对以下两种实现方式:

  • NodePort方式

  • LoadBalancer方式

NodePort

NodePort方式相当于使用Ingress 实现对本地集群节点的端口映射,但它使用的不是本地80端口,而是基于Service的NodePort方式,映射一个30000之后的随机端口,这样是很不方便的,甚至都不如直接使用业务的service的nodeport映射更方便;

LoadBalancer

公有云

这个是负载均衡器的配置,如果我们使用公网的lb,当然没问题,公网会分配eip给我们,并且相应的lb配置也会给我们,kubesphere提供了阿里、腾讯、华为、青云等多家的;注意:有一个选项是google kubernetes engine,这个并不是指当前kubernetes集群,我理解指的是google公有云;

私有云

Service直接使用LoadBalancer

这个是官网的例子的形式; 私有云配置就先OpenELB,他是kubesphere官方推荐的,也是他们自己做的; 官网地址:https://openelb.github.io/docs/getting-started/installation/install-openelb-on-kubesphere/ 安装官方有教程,直接在应用商店里默认安装就好; 主要介绍使用: 官方说明:https://openelb.io/docs/getting-started/usage/use-openelb-in-layer-2-mode/ 按这个教程来讲,主要是使用lb直接怼到service上,其中注意以下几个点:

Specify the NIC Used for OpenELB

kubectl annotate nodes master1 layer2.openelb.kubesphere.io/v1alpha1="192.168.0.2"

**Create an Eip Object **

apiVersion: network.kubesphere.io/v1alpha2 kind: Eip metadata: name: layer2-eip spec: address: 192.168.0.91-192.168.0.100 interface: eth0 protocol: layer2

执行:

kubectl apply -f layer2-eip.yaml

网关+LoadBalancer+OpenELB

按照这个操作下去,直接把自己的service改成LoadBalancer类型的是没有问题的,但是:如果还想实现kubesphere的网关怎么玩呢? 可以在设置网关的时候,同样把相应的注解写上:

网关的设置

... lb.kubesphere.io/v1alpha1: openelb protocol.openelb.kubesphere.io/v1alpha1: layer2 eip.openelb.kubesphere.io/v1alpha2: layer2-eip ...
Kube gateway

路由的设置 设置完网关,路由就可以正常设置了吗? 当然不是,路由也得这么设置,编辑注解,把上面三行加上就行;

Kube gateway2

完事后,编辑ymal看一下效果:

kind: Ingress apiVersion: networking.k8s.io/v1 metadata: name: frontend namespace: zhongyuanjian annotations: eip.openelb.kubesphere.io/v1alpha2: layer2-eip kubesphere.io/creator: admin lb.kubesphere.io/v1alpha1: openelb protocol.openelb.kubesphere.io/v1alpha1: layer2 spec: rules: - host: zyj.cn http: paths: - path: / pathType: ImplementationSpecific backend: service: name: incloud-nginx port: number: 80

设置默认EIP

上面有些麻烦,还有一种把eip设置为默认形式的,但没有试 主要是这句:eip.openelb.kubesphere.io/is-default-eip: "true"

附上链接地址:https://openelb.io/docs/getting-started/configuration/configure-ip-address-pools-using-eip/

piVersion: network.kubesphere.io/v1alpha2 kind: Eip metadata: name: eip-sample-pool annotations: eip.openelb.kubesphere.io/is-default-eip: "true" spec: address: 192.168.0.91-192.168.0.100 protocol: layer2 interface: eth0 disable: false status: occupied: false usage: 1 poolSize: 10 used: "192.168.0.91": "default/test-svc" firstIP: 192.168.0.91 lastIP: 192.168.0.100 ready: true v4: true
Last modified: 20 一月 2025