您可以通过容器服务管理控制台非常方便地快速创建 Kubernetes 集群。

前提条件

您需要开通容器服务、资源编排(ROS)服务、弹性伸缩(ESS)服务和访问控制(RAM)服务。

登录 容器服务管理控制台ROS 管理控制台RAM 管理控制台弹性伸缩控制台 开通相应的服务。

说明 容器服务 Kubernetes 集群部署依赖阿里云资源编排 ROS 的应用部署能力,所以创建 Kubernetes 集群前,您需要开通 ROS。

背景信息

创建集群过程中,容器服务会进行如下操作:
  • 创建 ECS,配置管理节点到其他节点的 SSH 的公钥登录,通过 CloudInit 安装配置 Kubernetes 集群。
  • 创建安全组,该安全组允许 VPC 入方向全部 ICMP 端口的访问。
  • 创建 VPC 路由规则。
  • 创建 NAT 网关和共享带宽包(或EIP)。
  • 创建 RAM 子账号和 AK,该子账号拥有 ECS 的查询、实例创建和删除的权限,添加和删除云盘的权限,SLB 的全部权限,云监控的全部权限,VPC 的全部权限,日志服务的全部权限,NAS 的全部权限。Kubernetes 集群会根据用户部署的配置相应的动态创建 SLB,云盘,VPC路由规则。
  • 创建内网 SLB,暴露 6443 端口。
  • 给内网SLB挂载EIP,暴露 6443端口(如果您在创建集群的时候选择开放公网 SSH 登录,则会暴露 22 端口;如果您选择不开放公网 SSH 访问,则不会暴露 22 端口)。
集群使用过程中,有如下限制:
  • 用户账户需有 100 元的余额并通过实名认证,否则无法创建按量付费的 ECS 实例和负载均衡。
  • 随集群一同创建的负载均衡实例只支持按量付费的方式。
  • Kubernetes 集群仅支持专有网络 VPC。
  • 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。请在创建集群前确认您的配额。如果您需要提高您的配额,请提交工单申请。
    • 每个账号默认最多可以创建 5 个集群(所有地域下),每个集群中最多可以添加 40 个节点。如果您需要创建更多的集群或者节点,请提交工单申请。
      说明 Kubernetes集群中,VPC默认路由条目不超过48条,意味着Kubernetes集群使用VPC时,默认节点上限是48个,如果需要更大的节点数,需要您先对目标VPC开工单,提高VPC路由条目,再对容器服务提交工单。
    • 每个账号默认最多可以创建 100 个安全组。
    • 每个账号默认最多可以创建 60 个按量付费的负载均衡实例。
    • 每个账号默认最多可以创建 20 个EIP。
  • ECS 实例使用限制:
    • 仅支持 CentOS 操作系统。
    • 支持创建按量付费和包年包月的ECS实例。

操作步骤

  1. 登录 容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,进入集群列表页面。
  3. 单击页面右上角的创建 Kubernetes 集群,在弹出的选择集群模板中,选择标准专有集群页面,单击创建
    默认进入Kubernetes 集群配置页面。

    创建k8s
  4. 可选: 选择集群所在的资源组。

    资源组
  5. 填写集群的名称。

    集群名称应包含 1~63 个字符,可包含数字、汉字、英文字符或连字符(-)。


    集群名称
  6. 选择集群所在的地域。

    地域
  7. 设置集群的网络。Kubernetes 集群仅支持专有网络。
    您可以在已有 VPC 列表中选择所需的 VPC。

    专有网络
    • 如果您使用的 VPC 中当前已有 NAT 网关,容器服务会使用已有的 NAT 网关。
    • 如果 VPC 中没有 NAT 网关,系统会默认自动为您创建一个 NAT 网关。如果您不希望系统自动创建 NAT 网关,可以取消勾选页面下方的为专有网络配置 SNAT
      说明 若选择不自动创建 NAT 网关,您需要自行配置 NAT 网关实现 VPC 安全访问公网环境,或者手动配置 SNAT,否则 VPC 内实例将不能正常访问公网,会导致集群创建失败。
  8. 设置虚拟交换机。
    您可以在已有 vswitch 列表中,根据可用区选择1~3个交换机 。如果没有您需要的交换机,可以通过单击创建虚拟交换机进行创建,请参见管理交换机
    虚拟交换机
  9. 设置节点类型,容器服务支持按量付费和包年包月两种节点类型。
  10. 设置 Master 节点的配置信息。
    您需要选择 Master 节点的实例规格。

    master节点设置
    说明
    • 目前支持 CentOS、Windows 操作系统。
    • 目前支持创建 3 个或者5个 Master 节点。
    • 默认为Master节点挂载系统盘,支持SSD云盘和高效云盘。
  11. 设置 Worker 节点的配置信息。您可选择新增实例或添加已有实例。
    • 若您选择新增实例,则需要进行如下配置。

      worker节点配置
      • 实例规格:支持选择多个实例规格。参见实例规格族
      • 已选规格:选中的规格呈现在这里。
      • 数量:新增 Worker 实例的数量。
      • 系统盘:支持 SSD 云盘和高效云盘。
      • 挂载数据盘:支持 SSD 云盘、高效云盘和普通云盘。
    • 若您选择添加已有实例,则需要预先在此地域下创建 ECS 云服务器。

      worker实例
  12. 显示当前支持的Docker版本和Kubernetes版本,您可查看对应版本,并根据需要进行选择。
    版本
  13. 配置登录方式。
    • 设置密钥。
      您需要在创建集群的时候选择密钥对登录方式,单击新建密钥对,跳转到ECS云服务器控制台,创建密钥对,参见创建 SSH 密钥对。密钥对创建完毕后,设置该密钥对作为登录集群的凭据。

      登录方式
    • 设置密码。
      • 登录密码:设置节点的登录密码。
      • 确认密码:确认设置的节点登录密码。
  14. 设置启用的网络插件,支持Flannel和Terway网络插件,具体可参考如何选择Kubernetes集群网络插件:Terway和Flannel
    网络插件
    • Flannel:简单稳定的社区的Flannel CNI插件。但功能偏简单,支持的特性少,例如:不支持基于Kubernetes标准的Network Policy。
    • Terway:阿里云容器服务自研的网络插件,支持将阿里云的弹性网卡分配给容器,支持Kubernetes的Network Policy来定义容器间的访问策略,支持对单个容器做带宽的限流。
  15. 设置Pod网络 CIDRService CIDR
    网段地址
    您需要指定Pod 网络 CIDRService CIDR,两者都不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复,创建成功后不能修改。而且 Service 地址段也不能和 Pod 地址段重复,有关 kubernetes 网络地址段规划的信息,请参考VPC下 Kubernetes 的网络地址段规划
  16. 设置是否为专有网络配置 SNAT 网关。

    配置SNAT
    说明 若不勾选为专有网络配置 SNAT ,您需要自行配置NAT 网关实现 VPC 安全访问公网环境;或者手动配置 SNAT,否则 VPC 内实例将不能正常访问公网,会导致集群创建失败。
  17. 设置是否开放使用 EIP 暴露 API Server
    API Server提供了各类资源对象(Pod,Service等)的增删改查及watch等HTTP Rest接口。

    公网访问
    • 如果选择开放,会创建一个 EIP,并挂载到内网 SLB 上。此时,Master 节点的6443端口(对应API Server)暴露出来,用户可以在外网通过kubeconfig 连接/操作集群。
    • 如果选择不开放,则不会创建 EIP,用户只能在 VPC 内部用 kubeconfig 连接/操作集群。
  18. 设置是否开放公网 SSH 登录。
    说明 您需要开放使用 EIP 暴露 API Server,才能设置公网SSH登录。

    SSH
    • 选择开放公网 SSH 登录,您可以 SSH 访问集群。
    • 选择不开放公网 SSH 登录,将无法通过 SSH 访问集群,也无法通过 kubectl 连接 集群。如果您需要通过 SSH 访问集群实例,可以手动为 ECS 实例绑定 EIP,并配置安全组规则,开放 SSH(22)端口,具体操作参见SSH访问Kubernetes集群
  19. 设置是否启用云监控插件。
    您可以选择在 ECS 节点上安装云监控插件,从而在云监控控制台查看所创建 ECS 实例的监控信息。

    云监控插件
  20. 设置是否启用日志服务,您可使用已有Project或新建一个Project。
    勾选使用日志服务,会在集群中自动配置日志服务插件。创建应用时,您可通过简单配置,快速使用日志服务,详情参见使用日志服务进行Kubernetes日志采集
    日志服务
  21. 设置是否安装 Ingress 组件。
    默认勾选安装 Ingress 组件 ,请参见Ingress 支持

    ingress
  22. 设置RDS白名单。
    将节点 IP 添加到 RDS 实例的白名单。
    RDS白名单
  23. 设置是否启用实例保护。

    实例保护
    说明 为防止通过控制台或 API 误删除释放集群节点,默认启用实例保护。
  24. 为集群绑定标签。

    输入键和对应的值,单击添加


    标签
    说明
    • 是必需的,而 是可选的,可以不填写。
    • 不能是 aliyun、http:// 、https:// 开头的字符串,不区分大小写,最多 64 个字符。
    • 不能是 http:// 或 https://,可以为空,不区分大小写,最多 128 个字符。
    • 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。
    • 如果一个资源已经绑定了 20 个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。
  25. 是否启用高级选项。
    1. 设置节点 Pod 数量,是指单个节点可运行 Pod 数量的上限,建议保持默认值。

      节点Pod
    2. 设置kube-proxy代理模式,支持iptables和IPVS两种模式。

      Kube-proxy代理
      • iptables:成熟稳定的kube-proxy代理模式,Kubernetes service的服务发现和负载均衡使用iptables规则配置,但性能一般,受规模影响较大,适用于集群存在少量的service。
      • IPVS:高性能的kube-proxy代理模式,Kubernetes service的服务发现和负载均衡使用Linux ipvs模块进行配置,适用于集群存在大量的service,对负载均衡有高性能要求的场景。
    3. 设置节点服务端口范围。
      默认端口范围为30000~32767。
      服务节点
    4. 设置CPU policy。

      CPU策略
      • none:默认策略,表示启用现有的默认 CPU 亲和方案。
      • static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占性。
    5. 设置是否使用自定义集群CA。如果勾选自定义集群 CA,可以将 CA 证书添加到 Kubernetes 集群中,加强服务端和客户端之间信息交互的安全性。

      集群CA
    6. 设置是否使用AGS
      • 如果勾选 AGS,则创建集群时系统自动安装 AGS 工作流插件。
      • 如果不勾选,则需要手动安装 AGS 工作流插件,请参见AGS命令行帮助
  26. 单击创建集群,在弹出的当前配置确认页面,单击创建,启动部署。
    说明 一个包含多节点的 Kubernetes 集群的创建时间一般需要十几分钟。

执行结果

集群创建成功后,您可以在容器服务管理控制台的 Kubernetes 集群列表页面查看所创建的集群。

集群列表
  • 您可以单击操作列的查看日志,进入集群日志信息页面查看集群的日志信息。 您也可以在集群日志信息页面中,单击资源栈事件查看更详细的信息。

    集群日志信息
  • 在集群列表中,找到刚创建的集群,单击操作列中的管理,查看集群的基本信息和连接信息。

    集群基本信息
    其中:
    • API Server 公网连接端点:Kubernetes 的 API server 对公网提供服务的地址和端口,可以通过此服务在用户终端使用 kubectl 等工具管理集群。
    • API Server 内网连接端点:Kubernetes 的 API server 对集群内部提供服务的地址和端口。此 IP 为负载均衡的地址,后端有 3 台 Master 提供服务。
    • Pod 网络 CIDR:每个 Pod 的 IP 地址段。创建成功后不能修改,且 Service 地址段也不能和 Pod 地址段重复。
    • Service CIDR:Service 的 IP 地址段。创建成功后不能修改,且 Service 地址段也不能和 Pod 地址段重复。
    • Master 节点 SSH 连接地址:可以直接通过 SSH 登录到 Master 节点,以便对集群进行日常维护。
    • 测试域名:为集群中的服务提供测试用的访问域名。测试域名后缀是<cluster_id>.<region_id>.alicontainer.com
    • kube-proxy 代理模式:Kubernetes service的服务发现和负载均衡需要通过服务代理进行配置,支持iptables和IPVS两种模式。
    • 节点 Pod 数量:单个节点可运行 Pod 数量的上限,默认值为128。
    例如,您可以通过 kubectl 连接 Kubernetes 集群,执行kubectl get node查看集群的节点信息。

    集群查看结果

    可以发现,一共有 10 个节点,包括 5 个 Master 节点和我们在参数设置步骤填写的 5 个 Worker 节点。