管理Nginx Ingress Controller实例

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实例。

  1. 单击[全部服务]图标,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。

  2. 在左侧导航树中单击[集群]菜单项,进入集群管理页面。

  3. 单击集群名称链接,进入集群详情页面。

  4. 单击“插件管理”页签,进入Nginx Ingress Controller插件页面。

  5. 单击ingress-nginx插件对应操作列的<安装>按钮,弹出安装窗口。

  6. 配置参数,参数说明见表-1

    表-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类型。

    • Deployment类型支持部署多个不同名称的Ingress Controller实例,用户可以通过重复本创建实例操作来实现;

    • Daemonset类型仅支持部署单个Ingress Controller实例;如果您已经成功创建一个Daemonset类型的Ingress Controller实例,要想创建新的该类型实例,只能先删除这个已有实例。删除操作请参见删除Nginx Ingress Controller实例

    说明:集群中已部署的0.30.0版本Daemonset类型的实例ingress-nginx,请确认是否正在使用该版本实例;若未使用,请到插件实例列表中删除该版本实例,重新部署0.49.3版本Daemonset类型实例。

    实例数

    输入创建Pod的数量。Deployment类型下该参数可见。

    Deployment类型支持创建多个Pod,Daemonset类型默认支持创建1个Pod。

    容器资源规格

    输入Ingress Controller部署容器对CPU和内存的启动限制规格和运行限制规格。

    • CPU启动限制:输入大于0的一位小数(如0.5、1.3)或整数,且小于等于运行限制CPU核数;

    • 内存启动限制:输入正整数,且小于等于运行限制内存数;

    • CPU运行限制:大于0的一位小数(如0.5、1.3)或整数,且大于等于启动限制CPU核数

    • 内存运行限制:内存为正整数,且大于等于启动限制内存数;建议不低于800MB。

    控制器标签

    可为控制器添加标签便于管理。

    访问方式

    默认为节点访问。

    访问方式为“节点访问”

    服务端口(http)

    • Deployment类型:自定义service提供访问的端口。

    • Daemonset类型:即容器占用其所在宿主机的端口,默认为80。

    服务端口(https)

    • Deployment类型:输入service提供访问的端口;

    • Daemonset类型:即容器占用其所在宿主机的端口,默认为443。

  7. 单击<确定>,完成操作。创建好的Ingress Controller实例会显示在插件实例列表中,可单击左侧子导航树的[插件实例]菜单项,查看插件实例列表。

查看Nginx Ingress Controller实例详情

通过查看Nginx Ingress Controller实例详情,可以查看命名空间、版本、访问地址、创建时间、描述、容器规格等基本信息,和其他高级信息。

  1. 单击[全部服务]图标,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。

  2. 在左侧导航树中单击[集群]菜单项,进入集群管理页面。

  3. 单击集群名称链接,进入集群详情页面。

  4. 单击“插件管理”页签,进入Nginx Ingress Controller插件页面。

  5. 单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。

  6. 单击实例名称,进入实例详情页面,查看实例详细信息。

编辑Nginx Ingress Controller实例

通过该功能可对已创建的Nginx Ingress Controller实例进行编辑。

  1. 单击[全部服务]图标,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。

  2. 在左侧导航树中单击[集群]菜单项,进入集群管理页面。

  3. 单击集群名称链接,进入集群详情页面。

  4. 单击“插件管理”页签,进入Nginx Ingress Controller插件页面。

  5. 单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。

  6. 单击待编辑实例名称操作列中的<编辑>按钮,弹出编辑信息窗口.

  7. 修改参数配置,参数详情可参见表-1

  8. 单击<确定>按钮,完成操作。

使用Nginx Ingress Controller实例

在容器应用部署完成后,可通过设置应用的应用域名来创建Ingress,并指定Nginx Ingress Controller实例实现Ingress资源。设置应用的应用域名,具体操作请参见【应用管理-管理应用-配置应用访问方式】。

只有容器镜像部署的应用,且应用部署在独享集群,才能指定Ingress Controller实例管理Ingress资源。

  1. 在顶部导航栏单击[企业应用]菜单项,进入应用管理页面。

  2. 在左侧导航树中单击[应用列表]菜单项,进入应用列表页面。

  3. 单击应用名称链接,进入应用详情页面。

  4. 单击“访问方式”页签,进入相应页面。

  5. 单击<应用域名>,在应用域名配置区域,单击<添加>按钮。

  6. 配置应用域名,在绑定实例中选择当前集群创建的Nginx Ingress Controller实例。

  7. 完成应用域名的配置,实现创建Ingress资源,并使用Nginx Ingress Controller实例。

删除Nginx Ingress Controller实例

如果存在Ingress资源正在使用Nginx Ingress Controller实例,该实例将无法被删除。

  1. 单击[全部服务]图标,选择[容器服务/云容器引擎]菜单项,进入云容器引擎服务页面。

  2. 在左侧导航树中单击[集群]菜单项,进入集群管理页面。

  3. 单击集群名称链接,进入集群详情页面。

  4. 单击“插件管理”页签,进入Nginx Ingress Controller插件页面。

  5. 单击左侧子导航树的[插件实例]菜单项,进入插件实例列表页面。

  6. 单击待删除实例对应操作列的<删除>按钮,弹出删除确认窗口。

  7. 单击<确定>,完成操作。