kubesphere使用,kubesphere用什么开发的
为什么在KubeSphere中需要一个网关?K8s集群中的服务对外开放的方式有哪些?您可以通过将服务设置为NodePort或Ingress来公开它。此外,使用入口模式可以实现将请求分发到一个或多个服务以及在同一IP地址下公开多个服务的优势。
但是就入口模式而言,K8s中只内置了入口CRD(可以创建入口资源),没有内置入口控制器,所以必须部署入口控制器,为入口资源提供外部访问集群内部服务的能力。KubeSphere中的网关是入口控制器。
网关设计KubeSphere v3.2对网关进行了重构,在保留原有网关功能的基础上增加了以下新功能:
在集群和项目级别启用网关:您可以根据业务需求灵活选择不同粒度的网关。增加或减少网关副本数量:灵活调整副本数量以实现更高的可用性。配置灵活的入口控制器配置选项。您可以指定网关应用程序负载的安装位置:您可以选择为网关应用程序负载的安装位置指定一个固定的名称空间,或者将其放在各自的项目名称空间下。结合KubeSphere中的权限管理,如果资源位于每个项目命名空间中,拥有该项目的权限的用户也可以查看网关资源。网关日志:集中查询网关日志,集中查询分布在各个副本中的网关日志。网关监控指标:监控网关中的一些指标,包括请求总数/成功率/延迟等指标。目前K8s支持和维护AWS和GCE Ingress控制器,KubeSphere使用Ingress Nginx控制器作为默认网关实现,无需任何代码修改。
每个功能点的实现思路是集群和项目级网关:这是通过用传入参数覆盖默认舵图值来实现的,并在代码逻辑中控制。如果启用了集群网关,则不能启用项目网关;如果启用了项目网关和集群网关,则可以通过两个网关入口访问它,但是两个入口控制器将同时监视同一个入口对象。增加或减少网关副本的数量,以配置入口控制器配置选项:这是通过传递参数来覆盖默认的舵图表值来实现的。在实现过程中使用的Helm操作符将在后面重点介绍。您可以指定网关应用程序负载的安装位置:您可以选择为网关应用程序负载的安装位置指定一个固定的名称空间,或者将其放在各自的项目名称空间下。这个代码在逻辑上是受控的,并且配置项是被制作的。默认情况下,所有资源都安装在kubesphere-controls-system下。网关日志:使用KubeSphere中的日志组件,日志组件会收集日志数据并存储在Elasticsearch中,网关在查询日志的过程中会根据参数在Elasticsearch中查询日志。网关监控指标:使用KubeSphere中的监控组件,在KubeSphere中配置Prometheus相关的参数,收集Ingress的相关指标。在查询监控信息的过程中,根据监控组件中的API查询相关数据。下面重点介绍从设计和实现过程中抽象出来的CRD,以及如何巧妙地将其与Helm Operator集成。
为适应抽象网关CRD。在设计中,网关CRD被抽象以适应不同的入口控制器,网关CRD包含设置入口控制器所需的公共属性。KubeSphere API和UI只与网关CRD交互。
#网关示例
API版本:gateway.kubesphere.io/v1alpha1
种类:网关
元数据:
名称:kubesphere-router-proj1
名称空间:kubesphere-controls-system #默认情况下,所有网关工作负载都将在kubesphere-controls-system名称空间中创建。但是,在调用KubeSphere API时,可以在kubesphere-config中配置它。
规格:
控制器:
#控制面板副本。对于有控制面板和工人的入口控制器。*保留字段。尚不支持更改用户界面。
副本:1
#控制面板部署的注释。*保留字段。尚不支持更改用户界面。
注释:{}
#观看范围,
# enabled=true,仅监视项目。用户需要指定监视名称空间。
# enabled=false,全局网关,监视所有名称空间。
范围:
启用:假
命名空间: #默认为。发布命名空间
#网关配置。当前仅支持键值对。
配置:
最大铲斗:1米
#工作负载部署配置
部署:
注释:
服务网格。kubesphere。io/enabled : false
副本:1
#
服务:
#服务的云负载平衡器配置
注释:
服务。贝塔.库伯内特。io/Qing cloud-load-balancer-EIP-ids : test-IP-id
#服务类型,仅支持负载平衡器和节点端口
类型:负载平衡器集成Nginx入口控制器库使用Nginx入口控制器作为默认的网关实现。为了简化部署步骤,我们集成了舵-操作员-插件作为舵操作员。
在舵手操作员中主要有以下关键点:根据watch.yaml中配置的监听指定情定下的复活社来创建或更新图表资源。其中可以根据复活社规格中的值覆盖默认舵图中的值,这是由舵手操作员中的机制决定的,详见官方说明。
如下的含义是需要观看gateway.kubesphere.io/v1alpha1的Nginx CR,如果有变化就触发和解,根据图表中配置的地址创建或更新对应的资源。
- group: gateway.kubesphere.io
版本:v1阿尔法1
种类:Nginx
图表:/var/helm-charts/ingress-nginx在KubeSphere中的使用:watchs.yaml中就做了如下配置:
group: gateway.kubesphere.io
版本:v1阿尔法1
种类:Nginx
图表:/var/helm-charts/ingress-nginx
- group: gateway.kubesphere.io
版本:v1阿尔法1
种类:网关
图表:/var/helm-图表/网关其中对图表而言:
Nginx是用的官方的舵图,在打包ks-控制器-管理器时下载的官方舵轮图。详见:https://github。com/kubesphere/kubesphere/blob/v3。2 .0/build/ks-controller-manager/docker文件# L34网关是在KubeSphere中定制的舵图,里面主要就操作了Nginx河资源。详见:https://github。com/kubesphere/kubesphere/blob/v3。2 .0/config/gateway/templates/nginx-ingressYAML整体而言:
舵操作员手表了门和Nginx 2个情定的资源,当前端发起创建或更新网关时是对盖特韦河发起创建或更新操作:
发起请求创建或更新网关CR;根据手表。YAML配置的舵操作员网关监听到有盖特韦河资源变化,将创建或更新Nginx河根据手表。YAML配置的Nginx,舵操作员监听到Nginx河资源变化后就根据Nginx河中的投机中的值来覆盖默认舵图中的值来创建或更新Nginx入口控制器。配置项的设计为了方便更改网关的一些参数设计了如下配置项:
网关:
手表路径:/var/helm-图表/手表。YAML
存储库:kubesphere/nginx-入口控制器
标签:1.1.0版
命名空间:kubesphere-controls-系统观察路径:指定舵操作员手表的配置文件,如果需要禁用舵手操作员就可以删掉这个配置项存储库:指定nginx-入口控制器的仓库标签:指定nginx-入口控制器的标签。命名空间:指定网关应用负载安装的位置位于指定的命名空间下,若删掉这个配置项就会安装在各个项目命名空间下。使用过程注意事项nginx . ingress . kubernetes . io/upstream-vhost:[服务名称]。[服务命名空间].svc.cluster.local
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。