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插件对应操作列的<安装>按钮,弹出安装窗口。
配置参数,参数说明如下:
参数 |
说明 |
|
名称 |
自定义Nginx Ingress Controller实例在本系统的显示名称。 |
|
命名空间 |
选择该集群对应的命名空间。避免选择已经被应用使用的命名空间。如果没有命名空间,可单击旁边的“创建命名空间”进行创建,具体步骤请参见新建命名空间。 |
|
版本 |
当前仅支持v0.49.3版本。 |
|
实例类型 |
可以选择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插件页面。
单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。
单击待编辑实例名称操作列中的<编辑>按钮,弹出编辑信息窗口,可对参数进行修改。
单击<确定>按钮,完成操作。
在容器应用部署完成后,可通过设置应用的应用域名来创建Ingress,并指定Nginx Ingress Controller实例实现Ingress资源。设置应用的应用域名,具体操作请参见【应用管理-管理应用-配置应用访问方式】。
只有容器镜像部署的应用,且应用部署在独享集群,才能指定Ingress Controller实例管理Ingress资源。 |
在顶部导航栏单击[企业应用]菜单项,进入应用管理页面。
在左侧导航树中单击[应用列表]菜单项,进入应用列表页面。
单击应用名称链接,进入应用详情页面。
单击“访问方式”页签,进入相应页面。
单击<应用域名>,在应用域名配置区域,单击<添加>按钮。
配置应用域名,在绑定实例中选择当前集群创建的Nginx Ingress Controller实例。
完成应用域名的配置,实现创建Ingress资源,并使用Nginx Ingress Controller实例。
如果存在Ingress资源正在使用Nginx Ingress Controller实例,该实例将无法被删除。
在顶部导航栏单击[云服务/云容器引擎]菜单项,进入云容器引擎服务页面。
在左侧导航树中单击[集群]菜单项,进入集群管理页面。
单击集群名称链接,进入集群详情页面。
单击“插件管理”页签,进入Nginx Ingress Controller插件页面。
单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。
单击待删除实例对应操作列的<删除>按钮,弹出删除确认窗口。