Kubernetes通过kube-proxy服务实现了Service的对外发布及负载均衡,它的各种方式都是基于传输层实现的。在实际的互联网应用场景中,不仅要实现单纯的转发,还有更加细致的策略需求,如果使用真正的负载均衡器更会增加操作的灵活性和转发性能。
基于以上需求,Kubernetes引入了资源对象Ingress,Ingress为集群中的Service提供了可直接被集群外部访问的虚拟机、负载均衡、SSL代理、HTTP路由等应用层转发功能。
Kubernetes官方发布了基于Nginx的Ingress控制器(Nginx Ingress Controller),用于实现Ingress。nginx-ingress是一款使用configmap来存储nginx配置的插件,nginx ingress controller会将ingress生成一段nginx的配置,将这个配置通过Kubernetes API写到Nginx的Pod中,然后reload完成nginx的配置修改和更新。
nginx-ingress插件直接使用社区模板与镜像。
管理Nginx Ingress Controller实例包括如下操作:
执行本操作,通过安装Nginx Ingress Controller插件,创建Nginx Ingress Controller实例。
单击[全部服务]图标
,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。
在左侧导航树中单击[集群]菜单项,进入集群管理页面。
单击集群名称链接,进入集群详情页面。
单击“插件管理”页签,进入Nginx Ingress Controller插件页面。
单击ingress-nginx插件对应操作列的<安装>按钮,弹出安装窗口。
配置参数,参数说明见表-1。
参数 | 说明 | ||
名称 | 自定义Nginx Ingress Controller实例在本系统的显示名称。 | ||
命名空间 | 选择该集群对应的命名空间。避免选择已经被应用使用的命名空间。如果没有命名空间,可单击旁边的“创建命名空间”进行创建,具体步骤请参见管理命名空间。 | ||
版本 | Kubernetes 1.14.5、1.15.5、1.16.9、1.17.5、1.18.9、1.19.10、1.20.0版本的集群支持v0.49.3版本,Kubernetes 1.23.12版本的集群支持v1.14.0版本。 | ||
实例类型 | 可以选择Deployment类型或Daemonset类型。
说明:集群中已部署的0.30.0版本Daemonset类型的实例ingress-nginx,请确认是否正在使用该版本实例;若未使用,请到插件实例列表中删除该版本实例,重新部署0.49.3版本Daemonset类型实例。 | ||
实例数 | 输入创建Pod的数量。Deployment类型下该参数可见。 Deployment类型支持创建多个Pod,Daemonset类型默认支持创建1个Pod。 | ||
容器资源规格 | 输入Ingress Controller部署容器对CPU和内存的启动限制规格和运行限制规格。
| ||
控制器标签 | 可为控制器添加标签便于管理。 | ||
访问方式 | 默认为节点访问。 | ||
访问方式为“节点访问”
| 服务端口(http) |
| |
服务端口(https) |
| ||
单击<确定>,完成操作。创建好的Ingress Controller实例会显示在插件实例列表中,可单击左侧子导航树的[插件实例]菜单项,查看插件实例列表。
通过查看Nginx Ingress Controller实例详情,可以查看命名空间、版本、访问地址、创建时间、描述、容器规格等基本信息,和其他高级信息。
单击[全部服务]图标
,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。
在左侧导航树中单击[集群]菜单项,进入集群管理页面。
单击集群名称链接,进入集群详情页面。
单击“插件管理”页签,进入Nginx Ingress Controller插件页面。
单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。
单击实例名称,进入实例详情页面,查看实例详细信息。
通过该功能可对已创建的Nginx Ingress Controller实例进行编辑。
单击[全部服务]图标
,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。
在左侧导航树中单击[集群]菜单项,进入集群管理页面。
单击集群名称链接,进入集群详情页面。
单击“插件管理”页签,进入Nginx Ingress Controller插件页面。
单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。
单击待编辑实例名称操作列中的<编辑>按钮,弹出编辑信息窗口.
修改参数配置,参数详情可参见表-1。
单击<确定>按钮,完成操作。
在容器应用部署完成后,可通过设置应用的应用域名来创建Ingress,并指定Nginx Ingress Controller实例实现Ingress资源。设置应用的应用域名,具体操作请参见【应用管理-管理应用-配置应用访问方式】。
| 只有容器镜像部署的应用,且应用部署在独享集群,才能指定Ingress Controller实例管理Ingress资源。 |
在顶部导航栏单击[企业应用]菜单项,进入应用管理页面。
在左侧导航树中单击[应用列表]菜单项,进入应用列表页面。
单击应用名称链接,进入应用详情页面。
单击“访问方式”页签,进入相应页面。
单击<应用域名>,在应用域名配置区域,单击<添加>按钮。
配置应用域名,在绑定实例中选择当前集群创建的Nginx Ingress Controller实例。
完成应用域名的配置,实现创建Ingress资源,并使用Nginx Ingress Controller实例。
如果存在Ingress资源正在使用Nginx Ingress Controller实例,该实例将无法被删除。
单击[全部服务]图标
,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。
在左侧导航树中单击[集群]菜单项,进入集群管理页面。
单击集群名称链接,进入集群详情页面。
单击“插件管理”页签,进入Nginx Ingress Controller插件页面。
单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。
单击待删除实例对应操作列的<删除>按钮,弹出删除确认窗口。
单击<确定>,完成操作。