多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

目前阿里云云原生产品家族已经支持多集群管理功能,允许使用阿里云容器服务Kubernetes(简称ACK)控制台或kubectl命令接入、统一纳管其他公有云、客户IDC自建K8s集群,集中管理部署K8s工作负载;并可以针对工作负载流量统一管理,支持服务就近访问、故障转移能力。
本文重点介绍如何使用ACK控制台来接入一个外部Kubernetes集群,无论这个集群是否提供公网访问能力,或者该集群是来自其他公有云提供商,亦或是用户IDC自定义集群。

前提条件

  • 您需要开通容器服务、弹性伸缩(ESS)服务和访问控制(RAM)服务。
    登录 容器服务管理控制台 、 RAM 管理控制台 和 弹性伸缩控制台 开通相应的服务。
  • 修改Kubernetes集群仍然必须在原有的集群中进行完成,包括添加与删除节点、升级Kubernetes集群版本以及更改Kubernetes组件参数等。
  • 该功能目前只针对白名单客户开放,扫描以下二维码开启邀测:
    多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

Demo示例

为了帮助您更好地理解,以下是我们制作的一个简短的视频Demo,演示如何在ACK控制台上统一纳管一个Google GKE K8s集群。

创建自有Kubernetes集群用于接入外部集群

按照以下步骤可以在ACK控制台中创建自有Kubernetes集群用于接入外部集群,具体如下:

  • 登录 容器服务管理控制台, 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,进入集群列表页面。
  • 单击页面右上角的创建 Kubernetes 集群,在弹出的选择集群模板中,选择导入已有Kubernetes集群,单击创建。
    多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群
  • 默认进入导入已有 Kubernetes 集群配置页面,如下所示。
    多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群
  • 填写集群的名称,例如test-external-cluster1。集群名称应包含1-63个字符,可包含数字、汉字、英文字符或连字符(-)。
  • 选择集群所在的地域和可用区。
  • 设置集群的网络。Kubernetes 集群仅支持专有网络。您可以在已有 VPC 列表中选择所需的 VPC 和交换机。需要绑定EIP,用于建立集群链接。
  • 单击创建集群,启动创建过程。

接入外部Kubernetes集群

按照以下步骤可以在ACK控制台中接入外部Kubernetes集群,具体如下:

  • 在新集群test-external-cluster1右侧单击管理,进入基本信息页面。在页面下方,可以看到集群导入代理配置:
    多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群
  • 单击复制,将其中的yaml文件内容拷贝到agent.yaml文件中,并在目标集群中执行命令:
    kubectl apply -f agent.yaml
  • 在目标集群中执行kubectl get all -n ack-system命令,查看代理运行状况。
NAME                                     READY   STATUS    RESTARTS   AGE
pod/ack-cluster-agent-655b75c987-dwp6b   1/1     Running   0          9s

NAME                                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ack-cluster-agent   1         1         1            1           26m

NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/ack-cluster-agent-655b75c987   1         1         1       26m
  • 可以在容器服务管理控制台的 Kubernetes 集群列表页面,看到新集群的状态为运行中。
    在集群列表页面中,找到新集群test-external-cluster1,单击操作列中的管理,查看新集群的基本信息和连接信息。

多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

使用ACK控制台或者kubectl管理接入的集群

接入成功之后,可以通过 kubectl 连接 Kubernetes 集群,执行kubectl get node命令,查看新集群test-external-cluster1的节点信息。此时,您可以使用该kubeconfig连接远程的被接入集群,进行应用负载的部署。
多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

同样地,可以在该接入的集群中通过使用Helm来发布管理应用:
多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

总结

目前阿里云云原生产品家族已经支持多集群管理功能,允许使用阿里云容器服务Kubernetes(简称ACK)控制台或kubectl命令导入、统一纳管其他公有云、客户IDC自建K8s集群,集中管理部署K8s工作负载;并可以针对工作负载流量统一管理,支持服务就近访问、故障转移能力。本文重点介绍了如何使用ACK控制台来接入一个外部Kubernetes集群,后续讲继续介绍如何在接入的多个集群中统一部署管理应用以及如何实现工作负载、流量的统一管理。

上一篇:阿里云DSW实例运行LeNet Sample


下一篇:【直播预告】:Java Spring Boot开发实战系列课程【第11讲】:消息中间件 RabbitMQ 与api源码解析