对接概述
所有文档
menu
没有找到结果,请重新输入

容器实例 BCI

对接概述


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

对接方式

BCI负责底层Pod容器资源的调度和管理工作,Kubernetes在BCI之上作为PaaS层来管理业务负载,例如管理Deployment、Service、StatefulSet、CronJob等。 BCI在接管Pod容器底层基础设施的管理工作后,Kubernetes不再需要直接负责单个Pod的放置、启动等工作,也不再需要关心底层虚拟机的资源情况,通过BCI即可确保Pod需要的资源随时可用。

使用场景

对于长时间运行的业务负载,您可以将此类负载的弹性流量部分调度至BCI,缩短弹性扩容的时间,减少弹性部分的扩容成本,并尽可能充分利用已有资源。当业务流量下降后,可以快速释放部署在BCI上的Pod,从而降低您的使用成本。

混合集群架构

如果您在本地IDC,或者百度云的BCC上自建了Kubernetes集群,则可以通过部署虚拟节点(VNode)的方式来使用BCI。VNode对标原生kubernetes节点,内置了virtual-kubelet、kube-proxy等组件,兼容原生kubernetes节点API。 当有Pod调度到VNode上时,VNode会自动创建并管理底层的BCI资源。 在VNode上运行的每个Pod都对应一个BCI实例,架构如下图所示: image.png

功能限制

由于公有云安全性及虚拟节点带来的限制,BCI目前还不支持Kubernetes中HostPath、DaemonSet等功能,如下表所示。

不支持的功能 说明 推荐替代方案
HostPath 挂载本地宿主机文件到容器中 使用emptyDir、云盘或者CFS文件系统
HostNetwork 将宿主机端口映射到容器上 BCI将忽略HostNetwork字段,推荐使用type=LoadBalancer的负载均衡
DaemonSet 在容器所在宿主机上部署Static Pod 通过sidecar形式在Pod中部署多个镜像
Privileged权限 容器拥有privileged权限 去除业务逻辑特权依赖
type=NodePort的Service 将宿主机端口映射到容器上 使用type=LoadBalancer的负载均衡

调度方式

对于混合使用普通节点和虚拟节点的Kubernetes集群,您可以根据需要将Pod调度到VNode,以BCI来运行。主要方式如下:

  • 手动调度通过配置nodeSelector和tolerations、指定nodeName的方式,可以手动将Pod调度到VNode。具体操作,请参见将 Pod调度到VNode。

使用BCI功能

在Kubernetes集群中创建Pod到BCI时,为充分使用BCI提供的功能,在不改变Kubernetes语义的前提下,您可以根据需求为Pod添加Annotation。Annotation需添加到Pod级别的metadata中,支持的Annotation列表以及配置示例,请参见BCI Pod Annotation。

上一篇
通过CCE使用BCI
下一篇
自建Kubernetes集群对接VNode