容器引擎CCE

    管理虚拟节点

    目录

    1. 虚拟节点和百度智能云容器实例BCI
    2. 准备工作
    3. 操作指南
      3.1 创建虚拟节点
      3.2 管理虚拟节点
      3.2 删除虚拟节点
    4. 常见问题
      4.1 为什么创建虚拟节点时提示有网络冲突
      4.2 为什么无法删除虚拟节点

    管理虚拟节点

    本文档主要介绍虚拟节点和BCI,以及如何通过在CCE中创建虚拟节点创建BCI Pod。

    虚拟节点和百度智能云容器实例BCI

    百度智能云容器实例BCI提供无服务器化的容器资源。您只需提供容器镜像及启动容器所需的配置参数,即可运行容器,而无需关心这些容器如何被调度部署到底层的物理服务器资源中。BCI服务将为您完成IaaS层资源的调度和运维工作,从而简化您对容器的使用流程,降低部署和维护成本。同时BCI只会对您创建容器时申请的资源计费,因此实现真正的按需付费。

    虚拟节点Virtual Node来源于Kubernetes社区的virtual-kubelet技术,实现了在CCE集群中调度BCI实例,使用户无需购买物理集群节点即可快速启动和编排容器。启动容器的数量不受物理节点的容量限制,赋予了集群极大的弹性伸缩能力。

    image.png

    准备工作

    操作指南

    创建虚拟节点

    登录CCE管理控制台,点击需要添加虚拟节点的集群,选择左侧导航栏中的虚拟节点标签,点击页面上的创建虚拟节点按钮。

    注意: 如果用户尚未开通容器实例服务,创建按钮将置灰,点击创建按钮会提示需要开通容器实例服务。

    image.png

    点击创建按钮后,进入虚拟节点创建页面,相关参数说明如下:

    基本信息定义了虚拟节点的属性:

    参数 含义 备注
    虚拟节点名称 虚拟节点名称,会在页面虚拟节点列表和kubernetes node列表中展示 同一个集群中节点名称不可重复
    CPU使用限额 虚拟节点的CPU Quota,限制虚拟节点上可以调度的BCI实例CPU总量 需要显式声明BCI Pod的resource quota才会生效
    内存使用限额 虚拟节点的Memory Quota,限制虚拟节点上可以调度的BCI实例内存总量 需要显式声明BCI Pod的resource quota才会生效

    容器实例属性定义了在虚拟节点上启动的BCI实例的属性:

    参数 含义 备注
    VPC BCI实例所在VPC 如果选择VPC与集群所在VPC不同,可能导致网络地址的冲突,详见网络冲突说明
    可用区及子网 BCI实例所在的可用区及子网 只显示对应VPC下可以创建BCI实例的可用区及子网
    安全组 应用于BCI实例的安全组 -

    点击确认后跳转到虚拟节点列表页面,列表中会展示刚刚添加的虚拟节点及其状态。

    image.png

    管理虚拟节点

    在虚拟节点列表中,可以查看虚拟节点当前的状态,以及虚拟节点的属性信息。

    • 虚拟节点名称:虚拟节点名称。
    • 虚拟节点状态:

      • 创建中:虚拟节点正在创建中,一般创建时间不超过一分钟。
      • 正常:虚拟节点Ready,可以将Pod调度到虚拟节点上启动对应的BCI实例。
      • 异常:虚拟节点NotReady,可以查看对应的virtual-kubelet排查异常原因。
      • 删除中:点击删除按钮后,虚拟节点状态会变为删除中,直至该虚拟节点被完全删除。
    • 操作:

      • 查看virtual-kubelet:查看该虚拟节点对应的virtual-kubelet运行状态。
      • 删除:删除该虚拟节点。
      • 如何使用:提供将Pod调度到对应虚拟节点需要指定的Pod Spec字段。

    删除虚拟节点

    在虚拟节点列表中点击对应虚拟节点的删除按钮,确认需要删除的虚拟节点后,点击确认,虚拟节点进入删除中状态,直至在列表中不可见即为删除成功。

    如果删除时提示禁止删除,请参考为什么无法删除虚拟节点

    常见问题

    为什么创建虚拟节点时提示有网络冲突

    当创建虚拟节点时,选择集群所在VPC(称为VPC A)以外的其他VPC(称为VPC B)作为容器实例VPC后,虚拟节点上运行的BCI实例将运行在B VPC中。

    VPC A与VPC B的地址空间可能存在重合,同时CCE集群容器网络也会占用A VPC地址空间以外的一段地址作为容器网段,这段地址也可能会和VPC B的地址空间存在重合。因此,BCI Pod的IP地址代表的是VPC B中对应的网络地址,在VPC A中可能存在另一个实体拥有相同的IP地址。此时如果在集群中访问BCI实例的IP地址,实际访问到的对象并不是该BCI实例,而是VPC A中的拥有相同IP地址的网络实体,此时就可能会出现非预期的访问结果。

    即下图中在VPC A中访问172.16.0.3的流量并不会走虚线路径打到BCI实例上,而是会走实线路径打到集群中的另一个Pod。

    image.png

    如果在充分理解这种场景可能带来的问题的情况下,仍有业务场景需要在VPC B中调度容器实例,可以继续进行创建。

    我们强烈建议仅让CCE集群调度处于与集群相同VPC的BCI实例。

    为什么无法删除虚拟节点

    当仍有运行中的BCI实例位于某个虚拟节点时,CCE不允许删除该虚拟节点,因为直接删除虚拟节点可能导致运行在该虚拟节点上的BCI实例泄漏。

    通常情况下我们无需删除虚拟节点,虚拟节点不同于真实节点,不会占用集群计算资源。如果用户需要删除虚拟节点,我们建议手动停止运行在虚拟节点上的Pod,或者驱逐虚拟节点上的所有Pod。

    驱逐虚拟节点上的Pod可以使用kubectl命令行工具执行以下命令进行操作,假设需要删除的虚拟节点名称为bci-virtual-kubelet-0:

    $ kubectl drain bci-virtual-kubelet-0 --force
    上一篇
    镜像仓库
    下一篇
    在虚拟节点启动Pod