ACK产品功能使用的常见问题及解决方案

本文介绍阿里云容器服务ACK产品功能使用的常见问题。

Ingress组件是什么?其为什么需要SLB?

Ingress组件是Kubernetes的一个网络组件,主要提供HTTP层(7层)路由功能,相比TCP(4层)的负载均衡具备非常多的优势。例如,Ingress的路由规则更加灵活,且支持金丝雀、蓝绿和A/B Test发布模式,支持SSL加密、日志可视化分析和监控,以及自定义扩展等功能,是目前K8s中HTTP和HTTPS服务的主流暴露方式。

当您在创建集群时,如果有对外暴露服务的需求,则推荐您安装Ingress组件。ACK通过集群内的Nginx Ingress Controller和云上的负载均衡SLB实现该功能。ACK负责Ingress组件的升级,同时配有Ingress日志可视化分析与监控功能,与阿里云日志服务SLS完全打通。关于Ingress日志可视化分析与监控的方案详情,请参见日志分析与监控的最佳实践

关于Ingress访问日志分析与监控,请参见Nginx Ingress访问日志分析与监控

节点池是什么?

传统模式下的节点管理是用Kubernetes打标签的方式来对节点进行分类管理,但是随着节点规模和标签数量的增加,对节点分类运维会变得越来越复杂。节点池(NodePool)对节点分组划分,进行了更高维度的抽象,方便您批量管理、指定调度、配置节点自动弹性伸缩等。

ACK节点池类型有节点池、托管节点池。更多信息,请参见节点池概述

ACK支持哪些灰度发布和蓝绿发布方式?

  • 利用阿里云容器服务ACK的Ingress功能,实现灰度发布和蓝绿发布。具体操作,请参见通过Nginx Ingress实现灰度发布和蓝绿发布

  • Kubernetes集群中使用阿里云SLB实现四层金丝雀发布。SLB的控制力最弱,成本最高,只能通过控制Pod个数来切换版本。具体操作,请参见Kubernetes集群中使用阿里云SLB实现四层金丝雀发布

  • Istio基于ASM完成蓝绿和灰度发布。Istio非常精细流量管控,可以做多层,但是门槛很高。如果采用该发布方案,您需要在熟练K8s的基础上掌握Istio开源框架的基本模型。具体操作,请参见基于ASM完成蓝绿和灰度发布

  • 灰度发布是可以帮助您渐进式更新Deployment的工具。它能结合Ingress Controller实现多版本共存,发布暂停,流量百分比切换,健康检查等功能,极大解放灰度发布过程中的手动操作,全自动化实现线上灰度流量切换。具体操作,请参见使用Kruise Rollout实现灰度发布(金丝雀&A/B Testing)

  • OpenKruise是基于Kubernetes的一个标准扩展组件,可以配合原生Kubernetes使用,高效管理应用容器、Sidecar及镜像分发等功能。具体操作,请参见使用OpenKruise部署云原生应用

如果我想使用Istio,推荐使用什么方案呢?

推荐您开通阿里云服务网格(Alibaba Cloud Service Mesh,简称ASM),兼容Istio,且不用自行安装部署。通过流量控制、网格观测以及服务间通信安全等功能,服务网格可以全方位地简化您的服务治理,并为运行在异构计算基础设施上的服务提供统一的管理能力,适用于Kubernetes集群、ACK Serverless集群、ECS虚拟机以及自建集群。

关于ASM更多信息,请参见什么是服务网格ASM?

如何限制容器之间的访问?

Kubernetes网络的基本模型是需要Pod之间全互联,但在一个K8s集群里,有一些调用链之间可能不是直接调用的关系。例如,两个部门之间希望相互之间权限隔离,此时就可以用到策略的概念。您可以通过Network Policy进行控制,通过标签选择器选择特定Pod控制其出入流向,可以针对IP段、端口和协议来进行控制。关于如何使用网络策略Network Policy,请参见使用网络策略Network Policy

更多网络概念,请参见Kubernetes网络概念及策略控制