上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE 管理虚拟节点
容器引擎服务CCE
百度智能云容器引擎服务 CCE 管理虚拟节点

文档简介:
本文档主要介绍虚拟节点和BCI,以及如何通过在CCE中创建虚拟节点创建BCI Pod。 百度智能云容器实例BCI提供无服务器化的容器资源。您只需提供容器镜像及启动容器所需的配置参数,即可运行容器,而无需关心这些容器如何被调度部署到底层的物理服务器资源中。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

管理虚拟节点

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

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

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

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

准备工作

  • 注册百度账号,并完成实名认证。
  • 开通百度智能云容器实例服务。登录容器容器实例控制台开通相应的服务。
  • 创建一个容器集群,操作步骤参考创建集群。

操作指南

新版本集群(集群id为cce-开头)和老版本集群(集群id以c-开头)操作有所不同,请根据需要添加虚拟节点的目标集群选择对应的操作。

  • 新版本集群操作步骤
  • 老版本集群操作步骤

新版本集群(集群id为cce-开头)

创建虚拟节点

登录CCE管理控制台,点击 Helm-Helm模板-百度智能云模板,选择cce-virtual-kubelet模板进行安装。百度智能云模板标签页下包含较多模板,可以搜索模板名称cce-virtual-kubelet快速找到对应模板。点击安装按钮,完成模板参数后填写安装即可。

安装参数说明(带有*号的参数为用户必填项):

参数 描述 获取方式 示例
region*
地域 填写所在地域的英文缩写,仅支持开放BCI产品的地域 bj
clusterID*
CCE集群id 从集群列表页获取 cce-abcd1122
bci.subnets*
创建BCI的子网信息,需要填写子网id和子网所属可用区。
至少填写一个子网;指定多个子网时,每次创建会从子网列表中随机选择一个。
从私有网络VPC-子网页面获取
- subnetID: sbn-4syxw5hsuc7e
  zone: zoneC
bci.securityGroupID*
安全组ID 从私有网络VPC-安全组页面获取 g-f90242zt83dd
repository
virtual-kubelet镜像repository,需要覆盖默认值时填写 - registry.baidubce.com/cce-plugin-pro/bci-virtual-kubelet
tag
virtual-kubelet镜像tag,默认为空则使用默认值,需要覆盖默认值时填写 - latest
maximumLogBackups
virtual-kubelet组件日志文件保留,每份日志文件将占用所在节点/var/log下256Mi空间 - "4"
virtualNode.nodeCount
需要创建的虚拟节点数量,默认为1 - 1
virtualNode.nodeNamePrefix
虚拟节点名称前缀,虚拟节点将按照<前缀>-0,<前缀>-1, ... 依次命名 - bci-virtual-kubelet
virtualNode.cpuCapacity
虚拟节点CPU Capacity - "1000"
virtualNode.memoryCapacity
虚拟节点Memory Capacity - "4Ti"
virtualNode.podsCapacity
虚拟节点Pods Capacity - "1000"
virtualNode.ephemeralStorageCapacity
虚拟节点Ephemeral Storage Capacity - "40Ti"
virtualNode.enableNodeLease
是否开启Node Lease,K8S 1.14版本以上建议开启 - true
virtualNode.enablePodCache
是否开启Pod Cache,可以提升Pod并发创建性能,无特殊需求建议开启 - true
endpoints.apiserver
K8S APIServer Endpoint,默认为空则通过集群Service访问,需要覆盖时填写 - "https://192.168.0.1:6443"
virtualNode.ccegateway
CCE Gateway Endpoint,默认为空则使用默认值,需要覆盖时填写 - "cce-gateway.baidubce.com"
virtualNode.bci
BCI服务Endpoint,默认为空则使用默认值,需要覆盖时填写 - "bci.baidubce.com"

完成模板安装后,集群中出现名为bci-virtual-kubelet-0的节点(如果自行修改过nodeNamePrefix则节点名称与之匹配),即标识虚拟节点创建成功。

$ kubectl get nodes
NAME                    STATUS   ROLES    AGE   VERSION
192.168.0.96            Ready    <none>   1d   v1.16.8
bci-virtual-kubelet-0   Ready    agent    1m   v1.16.8-vk-baidu-bci-cce-stack_2021-08-24-1_PD_BL-2-g3d4f706f

若未能成功创建虚拟节点,可以通过 kubectl get po -n kube-system -l app=bci-virtual-kubelet 查看virtual-kubelet状态及相应日志进行检查。

在虚拟节点启动Pod

相较于常规Pod,需要在Pod Spec中添加如下的nodeSelector和tolerations字段,才能将Pod调度到虚拟节点上。

Pod Spec示例:

spec:
  nodeSelector:
    type: "virtual-kubelet"
  tolerations:
  - key: "virtual-kubelet.io/provider"
    operator: "Equal"
    value: "baidu"
    effect: "NoSchedule"

调度到虚拟节点上的Pod会以BCI Pod的形式启动。

更多BCI Pod配置项说明请参考配置BCI Pod

删除虚拟节点

  1. 通过kubectl drain <node name> --force操作停止虚拟节点上的所有Pod。
  2. 在 Helm-Helm实例页面,选择相应集群和namespace,删除虚拟节点对应的cce-virtual-kubelet实例。
  3. 通过命令kubectl delete node <node name>删除虚拟节点。

注意: 当集群中存在分配在虚拟节点上的BCI Pod时,卸载cce-virtual-kubelet组件会导致BCI实例的残留。

老版本集群(集群id以c-开头)

创建虚拟节点

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

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

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

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

参数 含义 备注
虚拟节点名称 虚拟节点名称,会在页面虚拟节点列表和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实例的安全组 -

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

管理虚拟节点

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

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

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

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

在虚拟节点启动Pod

相较于常规Pod,需要在Pod Spec中添加如下的nodeSelector和tolerations字段,才能将Pod调度到虚拟节点上。

spec:
  nodeSelector:
    type: "virtual-kubelet"
  tolerations:
  - key: "virtual-kubelet.io/provider"
    operator: "Equal"
    value: "baidu"
    effect: "NoSchedule"

调度到虚拟节点上的Pod会以BCI Pod的形式启动。

更多BCI Pod配置项说明请参考配置BCI Pod。

删除虚拟节点

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

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

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

当创建虚拟节点时,选择集群所在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。

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

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

为什么无法删除虚拟节点

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

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

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

$ kubectl drain bci-virtual-kubelet-0 --force
相似文档
  • 配置CPU和Memory资源: 当前支持通过指定Pod中每个容器的resources.requests,对BCI实例的规格进行配置。若不指定,则默认单个容器使用的资源的是1vCPU+2GiB内存。对应BCI实例的计费资源为Pod中所有容器资源的总和。
  • 本文介绍百度云CCE Serverless Kubernetes集群的产品简介,核心优势,产品定价及与普通CCE集群的对比,帮助您快速了解和使用Serverless Kubernetes集群。 CCE Serverless Kubernetes集群是百度云容器引擎服务(CCE)推出的无服务器版本Kubernetes集群。
  • 本文介绍如何创建一个百度云CCE Serverless Kubernetes集群。 前提条件: 开通BCI产品,并选择开放BCI购买的地域。 创建集群: 登录CCE管理控制台。 点击创建集群,选择创建Serverless Kubernetes集群。若用户未开通BCI资源或BCI资源在对应地域不可用,创建按钮会置灰,将光标悬停在按钮会提示具体不可用的原因。
  • 本文介绍如何在serverless集群中使用Service。根据在创建集群的时候选择的不同Cluster Service模式--kube-proxy或BLB,有下面两种方式: BLB: 采用该模式的Service都绑定一个BLB,Service的ClusterIP是BLB的VPC IP。在该模式下,用户需要为BLB付费,适合少量Service,大量后端Pod的集群。
  • 随着万物互联时代到来,互联网智能终端设备数量急剧增加;随着 5G 通信网络普及,互联网数据规模呈现指数级增长。在传统云计算的中心化架构下,数据从终端到云中心的传输、存储、计算,已经无法满足终端用户对于时效、容量、算力的需求。将云计算的能力下沉边缘侧,充分发挥容器轻量级、便迁移、易复制的特性优势,使用 Kubernetes 进行应用的统一交付、运维、管控,已成为重要的发展趋势。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部