全部产品
Search
文档中心

对接概述

更新时间: 2021-07-20

ECI为Kubernetes提供了基础的容器Pod运行环境,但业务间的依赖、负载均衡、弹性伸缩、定期调度等能力依然需要Kubernetes来提供。本文为您介绍Kubernetes与ECI如何对接,使用ECI作为Pod的运行资源。

对接方式介绍

ECI为Kubernetes提供一种层次化的解决方案:即ECI负责底层Pod容器资源的调度和管理工作,Kubernetes在ECI之上作为PaaS层来管理业务负载(例如:Deployment、Service、StatefulSet、CronJob)。

ECI在接管Pod容器底层基础设施的管理工作后,Kubernetes不再需要直接负责单个Pod的放置、启动等工作,也不再需要关心底层虚拟机的资源情况,通过ECI即可确保Pod需要的资源随时可用。

基于Kubernetes社区的Virtual Kubelet(简称VK)技术,ECI通过虚拟节点与Kubernetes实现无缝对接,使得Kubernetes集群可以轻松获得极大的弹性能力,而不必受限于集群的节点计算容量。更多信息,请参见Virtual Kubelet

ECI与Kubernetes的对接分为以下两种方式:

对接方式

说明

完全基于ECI

部署Serverless Kubernetes集群,整个Kubernetes集群运行在ECI上,无需关注底层虚拟机的运维和容量问题。

混合使用ECI和传统服务器

ECI作为虚拟节点加入到Kubernetes集群中,可以提升集群的资源利用率和弹性效率,降低运行成本。

完全基于ECI(Serverless Kubernetes)

依托ECI免运维的特性,Kubernetes可以完全依托ECI来构建,即所有Pod均运行在ECI上,Kubernetes仅需要负责管理业务负载,以保证业务的稳定运行。

如果您正在进行Kubernetes集群的选型,强烈推荐您选用阿里云容器服务Serverless Kubernetes(ASK)。ASK可以为您提供完全基于ECI运行的Kubernetes集群,为您的在线和离线业务、仿真环境、开发测试环境等提供免运维、低成本的Kubernetes环境。

关于如何通过ASK使用ECI,请参见ASK使用ECI

混合使用ECI和传统服务器

如果您已经建立了Kubernetes集群,可以把ECI作为虚拟节点加入到集群中。对于长时间运行的业务负载,您可以将此类负载的弹性流量部分调度至ECI,缩短弹性扩容的时间,减少弹性部分的扩容成本,并尽可能充分利用已有资源。当业务流量下降后,Kubernetes集群可以快速释放部署在ECI上的Pod从而降低您的使用成本。

根据您已有Kubernetes集群的情况,对接ECI包括以下几种方式:

  • 如果您使用阿里云容器服务Kubernetes(ACK)部署集群,可以通过容器服务管理控制台直接添加虚拟节点来使用ECI,更多信息,请参见ACK使用ECI

  • 如果您在阿里云ECS上自建了Kubernetes集群,需要部署Virtual Kubelet来使用ECI,更多信息,请参见自建Kubernetes集群使用ECI

  • 如果您在线下IDC或者其他云上部署Kubernetes集群,需要部署Virtual Kubelet来使用阿里云的ECI,更多信息,请参见线下Kubernetes集群使用ECI。如需进一步帮助,可咨询与您对接的阿里云解决方案架构师。

管理工具介绍

您可以通过以下方式管理Kubernetes及ECI实例的运行情况:

  • 弹性容器实例控制台

    您可以通过弹性容器实例控制台查看ECI实例的运行情况。操作步骤如下:

    1. 登录弹性容器实例控制台

    2. 在顶部菜单栏左上角处选择地域。

    3. 容器组页面,您可以查看该地域下已经创建的ECI实例。

  • 容器服务管理控制台

    您可以通过容器服务管理控制台来操作ASK集群或ACK集群,并查看ECI实例的运行情况。查看ECI实例的操作步骤如下:

    1. 登录容器服务管理控制台

    2. 在左侧导航栏单击集群

    3. 在集群列表中找到想要查看的集群,单击集群ID进入详情页面。

    4. 在左侧导航栏,选择工作负载>容器组

    5. 容器组页面,选择命名空间,您可以查看该命名空间下的ECI实例。

  • 阿里云CloudShell

    您可以通过阿里云提供的CloudShell来管理Kubernetes集群。具体操作,请参见在CloudShell上通过kubectl管理Kubernetes集群

  • kubectl客户端

    您可以通过kubectl客户端在本地计算机来访问远端的Kubernetes集群。具体操作,请参见通过kubectl连接Kubernetes集群

功能限制和说明

基于公有云的安全性和虚拟节点本身带来的限制,ECI目前还不支持Kubernetes中HostPath、DaemonSet等功能,具体如下表所示。

不支持的功能

说明

推荐替代方案

HostPath

挂载本地宿主机文件到容器中

使用emptyDir、云盘或者NAS文件系统

HostNetwork

将宿主机端口映射到容器上

使用type=LoadBalancer的负载均衡

DaemonSet

在容器所在宿主机上部署Static Pod

通过sidecar形式在Pod中部署多个镜像

Privileged权限

容器拥有privileged权限

使用Security Context为Pod添加Capability

type=NodePort的Service

将宿主机端口映射到容器上

使用type=LoadBalancer的负载均衡

通过Serverless Kubernetes或者通过Kubernetes扩展虚拟节点的方式使用ECI时,请注意以下信息:

  • Serverless Kubernetes集群和Kubernetes集群共享容器镜像仓库,您可以先将容器镜像上传到容器镜像仓库中,便于镜像拉取。推荐您使用阿里云容器镜像服务ACR,并使用专有网络的镜像地址(registry-vpc.xxx)。

  • Serverless Kubernetes和Kubernetes扩展虚拟节点均支持Deployment、ReplicaSet、Job、Cronjob、StatefulSet等常见controller,可以直接运行。

  • Serverless Kubernetes和Kubernetes扩展虚拟节点均支持利用PrivateZone实现服务发现,建议您在创建集群时开启PrivateZone。

  • Serverless Kubernetes和Kubernetes+虚拟节点扩展均支持负载均衡,即配置type=LoadBalancer的Service。