全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:集群开通

更新时间:Apr 03, 2024

本文介绍阿里云容器服务ACK在开通集群时常见问题的分析和处理流程。

创建集群时网络插件怎么选择?

有两种模式可供选择:Flannel模式与Terway。

  • Flannel模式

    容器服务ACK中有四个网段:VPC网段、交换机网段、Pod地址段、Service地址段。其中前两个网段,都是IaaS层网络。交换机网段必须是当前VPC网段的子集,而Pod地址段和Service地址段是K8s中特有的,Pod地址段用于选取ECS中的某块资源,不能与VPC网段和Service地址段重叠。Service地址段用于给每个服务分配自己的IP地址,用于集群内部通信,不能与VPC网段和Pod地址段重叠。

    image

    各网段的互斥关系如下:

    • Pod地址段不能和VPC网段重叠。

    • Pod地址段不能和Service地址段重叠。

    • Service地址只在Kubernetes集群内使用,不能在集群外使用。

    • Service地址段不能和VPC网段重叠。

    • Service地址段不能和Pod地址段重叠。

    如果您拥有多个K8s集群, 需要注意不同集群之间的网络规划问题。更多信息,请参见Kubernetes集群网络规划

  • Terway模式

    Terway模式除了有上述四个网段配置之外,还需增加虚拟交换机配置。

    image

    使用Terway网络插件,您需要在一个VPC网络下创建两个在同一个可用区内的虚拟交换机。

    • 虚拟交换机网段,对应节点所使用网段。

    • Pod虚拟交换机网段,对应Pod所使用的网段。

    快速搭建网络可以使用下表所示的网络规划配置:

    专有网络网段

    Node虚拟交换机

    Pod虚拟交换机

    Service CIDR

    192.168.0.0/16

    192.168.0.0/19

    192.168.32.0/19

    172.21.0.0/20

    更多信息,请参见使用Terway网络插件网络概述

创建一个K8s集群,为什么会多出来两个SLB? Ingress组件需要安装吗?

多出来两个SLB是K8s中组件需要的,组件分别是API Server和Ingress。

  • API Server

    API Server是一个K8s集群的核心组件,是整个系统的数据总线和数据中心,位于Master节点上,负责与Master节点内其他组件以及所有Worker节点的交互。

    API Server起到路由的作用。因此ACK为其创建了一个最小规格的私网型SLB(您可将其配置成大规格SLB实例规格),其为按量付费。该SLB必须由ACK创建,且不可更改和删除,否则整个K8s集群都会瘫痪。

    说明
    • 如果需要从公网访问集群,在创建集群的时候选中使用EIP暴露API Server,为API Server绑定一个公网EIP,ACK对应的带宽是按量计费的。

    • 如果集群创建时候没选中使用EIP暴露API Server,需后续手动添加。

    具体操作,请参见控制集群API Server的公网访问能力

  • Ingress

    • 当您创建集群时,推荐您安装该组件。ACK通过软件层Nginx Ingress Controller和资源层负载均衡SLB实现该组件功能。 创建集群时,可以选择默认选中Ingress的规格、公私网类型,默认选中创建的Ingress为按量计费。更多信息,请参见Ingress概述

      说明

      您可以手动更改Ingress的SLB配置。具体操作,请参见Service的负载均衡配置注意事项

    • 如果您在创建集群时没有选择安装该组件,则需要到容器服务控制台的运维管理 > 组件管理中一键安装。具体操作,请参见管理组件

K8s的容器需要访问RDS实例,RDS白名单该如何设置?

  • 在创建集群的集群配置向导页,高级选项里面有RDS白名单参数设置项。1

  • 如果K8s集群已经创建完成,则需要在RDS 管理控制台手动配置白名单。

怎么把已经购买的ECS添加到K8s集群中?

可以选择将已有的ECS实例(云服务器)加入到集群中,也可以让容器服务创建新的ECS实例(云服务器)。如果是添加已有的ECS实例,请确保添加的云服务器必须与集群在同一地域同一VPC下。具体操作,请参见添加已有节点

说明

在添加现有节点至集群的时候,需要手动添加集群的安全组。建议使用创建集群时创建的默认安全组,不要使用现有安全组。如果涉及到企业安全组和普通安全组的替换,请参见替换ECS实例的安全组

我想使用ACK运行我的一个应用,但是不知道如何把它做成Docker镜像,是否有相应指导?

ACR为您提供了便捷的容器镜像构建功能。关于制作应用Docker镜像的详细步骤,请参见在Dockerfile中使用构建打包镜像并运行。同时,您也可以使用开源工具Derrick降低您应用容器化的复杂度。

我不会制作镜像,是否可以使用ACK?

除了支持部署您在容器镜像服务中托管的镜像,ACK也支持选择官方镜像,即您在容器镜像服务上收藏或者搜索到的公开镜像。具体操作,请参见使用镜像快速创建无状态Deployment应用

创建集群前如何规划网络?

创建ACK集群时,VPC CIDR、Service CIDR和Pod CIDR不允许重叠。通常情况下,您可以选择自动创建的专有网络,使用默认的网络地址。但在某些复杂的场景下,需要您自主规划ECS地址、Kubernetes Pod地址和Service地址。具体操作,请参见Kubernetes集群网络规划

创建集群时如何选择Terway和Flannel网络插件?

Flannel使用的是简单稳定的社区CNI插件,但功能偏简单,不支持基于Kubernetes标准的Network Policy。Terway是阿里云容器服务ACK自研的网络插件,支持Network Policy和容器的带宽限流,网络性能相对Flannel也更高。具体操作,请参见使用Terway网络插件

集群创建失败,该如何处理?

您可以查看集群日志,然后根据相应的解决方法解决问题。具体操作,请参见集群管理FAQ

如何拉取私有镜像?

推荐使用aliyun-acr-credential-helper组件。该组件会默认安装在所有ACK集群中,支持在ACK集群中免密拉取容器镜像服务ACR中的私有镜像。具体操作,请参见使用免密组件拉取容器镜像