华为云用户手册

  • 无状态负载(Deployment) Pod是Kubernetes创建或部署的最小单位,但是Pod是被设计为相对短暂的一次性实体,Pod可以被驱逐(当节点资源不足时)、随着集群的节点崩溃而消失。Kubernetes提供了Controller(控制器)来管理Pod,Controller可以创建和管理多个Pod,提供副本管理、滚动升级和自愈能力,其中最为常用的就是Deployment。 图2 Deployment 一个Deployment可以包含一个或多个Pod副本,每个Pod副本的角色相同,所以系统会自动为Deployment的多个Pod副本分发请求。 Deployment集成了上线部署、滚动升级、创建副本、恢复上线的功能,在某种程度上,Deployment实现无人值守的上线,大大降低了上线过程的复杂性和操作风险。
  • 普通任务(Job)和定时任务(CronJob) Job和CronJob是负责批量处理短暂的一次性任务(short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。 Job:是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、StatefulSet)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出(Pod自动删除)。 CronJob:是基于时间的Job,就类似于Linux系统的crontab文件中的一行,在指定的时间周期运行指定的Job。 任务负载的这种用完即停止的特性特别适合一次性任务,比如持续集成。
  • 工作负载生命周期说明 表1 状态说明 状态 说明 运行中 所有实例都处于运行中、或实例数为0时显示此状态。 未就绪 容器处于异常、负载下实例没有正常运行时显示此状态。 处理中 负载没有进入运行状态但也没有报错时显示此状态。 可用 当多实例无状态工作负载运行过程中部分实例异常,可用实例不为0,工作负载会处于可用状态。 执行完成 任务执行完成,仅普通任务存在该状态。 已停止 触发停止操作后,工作负载会处于停止状态,实例数变为0。v1.13之前的版本存在此状态。 删除中 触发删除操作后,工作负载会处于删除中状态。
  • 注意事项 删除节点会涉及Pod迁移,可能会影响业务,请在业务低峰期操作。 操作过程中可能存在非预期风险,请提前做好相关的数据备份。 操作过程中,后台会把当前节点设置为不可调度状态。 删除节点仅对工作节点生效,不会删除控制节点。 退订包年/包月节点时,订单处理需要一定时间,在此期间节点处于不可用状态,预计5-10分钟后自动清理该节点。 当您的包年/包月资源到期未续订或按需资源欠费时会依次进入宽限期和保留期,宽限期内续费,资源不受影响,超过宽限期进入保留其后,资源将被冻结,详情请参见宽限期保留期。
  • 约束与限制 CCE正在使用的虚拟机节点不支持在E CS 页面进行退订或删除。 对于1.17.11及之后版本的集群,在BMS页面退订或删除裸金属服务器后,集群中对应的节点也会自动删除。 删除节点会导致与节点关联的本地持久卷类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。删除节点时使用了本地持久存储卷的Pod会从删除的节点上驱逐,并重新创建Pod,Pod会一直处于pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。
  • Volcano Scheduler Volcano Scheduler是负责Pod调度的组件,它由一系列action和plugin组成。action定义了调度各环节中需要执行的动作;plugin根据不同场景提供了action 中算法的具体实现细节。Volcano Scheduler具有高度的可扩展性,您可以根据需要实现自己的action和plugin。 图1 Volcano Scheduler工作流 Volcano Scheduler的工作流程如下: 客户端提交的Job被调度器识别到并缓存起来。 周期性开启会话,一个调度周期开始。 将没有被调度的Job发送到会话的待调度队列中。 遍历所有的待调度Job,按照定义的次序依次执行enqueue、allocate、preempt、reclaim、backfill等动作,为每个Job找到一个最合适的节点。将该Job 绑定到这个节点。action中执行的具体算法逻辑取决于注册的plugin中各函数的实现。 关闭本次会话。
  • Volcano自定义资源 Pod组(PodGroup):Pod组是Volcano自定义资源类型,代表一组强关联Pod的集合,主要用于批处理工作负载场景,比如Tensorflow中的一组ps和worker。 队列(Queue):容纳一组PodGroup的队列,也是该组PodGroup获取集群资源的划分依据。 作业(Volcano Job,简称vcjob):Volcano自定义的Job资源类型。区别于Kubernetes Job,vcjob提供了更多高级功能,如可指定调度器、支持最小运行Pod数、 支持task、支持生命周期管理、支持指定队列、支持优先级调度等。Volcano Job更加适用于机器学习、大数据、科学计算等高性能计算场景。
  • 验证数据持久化及共享性 查看部署的应用及文件。 执行以下命令,查看已创建的Pod。 kubectl get pod | grep web-demo 预期输出如下: web-demo-846b489584-mjhm9 1/1 Running 0 46s web-demo-846b489584-wvv5s 1/1 Running 0 46s 依次执行以下命令,查看Pod的/data路径下的文件。 kubectl exec web-demo-846b489584-mjhm9 -- ls /data kubectl exec web-demo-846b489584-wvv5s -- ls /data 两个Pod均无返回结果,说明/data路径下无文件。 执行以下命令,在/data路径下创建static文件。 kubectl exec web-demo-846b489584-mjhm9 -- touch /data/static 执行以下命令,查看/data路径下的文件。 kubectl exec web-demo-846b489584-mjhm9 -- ls /data 预期输出如下: static 验证数据持久化 执行以下命令,删除名称为web-demo-846b489584-mjhm9的Pod。 kubectl delete pod web-demo-846b489584-mjhm9 预期输出如下: pod "web-demo-846b489584-mjhm9" deleted 删除后,Deployment控制器会自动重新创建一个副本。 执行以下命令,查看已创建的Pod。 kubectl get pod | grep web-demo 预期输出如下,web-demo-846b489584-d4d4j为新建的Pod: web-demo-846b489584-d4d4j 1/1 Running 0 110s web-demo-846b489584-wvv5s 1/1 Running 0 7m50s 执行以下命令,验证新建的Pod中/data路径下的文件是否更改。 kubectl exec web-demo-846b489584-d4d4j -- ls /data 预期输出如下: static static文件仍然存在,则说明数据可持久化保存。 验证数据共享性 执行以下命令,查看已创建的Pod。 kubectl get pod | grep web-demo 预期输出如下: web-demo-846b489584-d4d4j 1/1 Running 0 7m web-demo-846b489584-wvv5s 1/1 Running 0 13m 执行以下命令,在任意一个Pod的/data路径下创建share文件。本例中选择名为web-demo-846b489584-d4d4j的Pod。 kubectl exec web-demo-846b489584-d4d4j -- touch /data/share 并查看该Pod中/data路径下的文件。 kubectl exec web-demo-846b489584-d4d4j -- ls /data 预期输出如下: share static 由于写入share文件的操作未在名为web-demo-846b489584-wvv5s的Pod中执行,在该Pod中查看/data路径下是否存在文件以验证数据共享性。 kubectl exec web-demo-846b489584-wvv5s -- ls /data 预期输出如下: share static 如果在任意一个Pod中的/data路径下创建文件,其他Pod下的/data路径下均存在此文件,则说明两个Pod共享一个存储卷。
  • 约束与限制 使用对象存储时,挂载点不支持修改属组和权限。 对象存储PVC挂载方式是通过obsfs/s3fs工具实现,负载每挂载一个对象存储卷,后端会产生一个常驻进程。当负载使用对象存储数过多或大量读写对象存储文件时,常驻进程会占用大量内存,为保证负载稳定运行,建议负载使用的对象存储卷数量不超过其申请的内存GiB数量,如负载的申请的内存规格为4GiB,则建议其使用的对象存储数不超过4。 支持多个PV挂载同一个对象存储,但有如下限制: 多个不同的PVC/PV使用同一个底层对象存储卷时,如果挂载至同一Pod使用,会因为PV的volumeHandle参数值相同导致无法挂载,请避免该使用场景。 PV中persistentVolumeReclaimPolicy参数建议设置为Retain,否则可能存在一个PV删除时,级联删除底层卷,其他关联这个底层卷的PV会由于底层存储被删除导致使用出现异常。 重复用底层存储时,数据一致性由您自行维护。建议在应用层做好多读多写的隔离保护,合理规划文件使用时间,避免出现多个客户端写同一个文件的情况,防止产生数据覆盖和丢失。
  • 解决方案 检查到节点状态异常,请优先恢复 若检查发现节点不可用,请登录CCE控制台,单击集群名称进入集群控制台,前往“节点管理”页面并切换至“节点”页签查看节点状态,请确保节点处于“运行中”状态。节点处于“安装中”、“删除中”状态时,均不支持升级。 若节点状态异常,请参考 集群可用,但节点状态为“不可用”修复节点后,重试检查任务。 图1 查看节点状态 检查到节点操作系统不支持升级 当前集群升级支持的节点操作系统范围如下表所示,若您的节点OS不在支持列表之内,暂时无法升级。您可将节点重置为列表中可用的操作系统。 表1 节点OS支持列表 操作系统 限制 EulerOS 2.x 目标版本为v1.27以下时,无限制 目标版本为v1.27及以上时,仅支持EulerOS 2.9、EulerOS 2.10 CentOS 7.x 无限制 Ubuntu 部分局点受限,若检查结果不支持升级,请联系技术支持人员 说明: 目标版本为v1.27及以上时,仅支持Ubuntu 22.04。 Huawei Cloud EulerOS 部分局点受限,若检查结果不支持升级,请联系技术支持人员 检查到节点属于默认节点池,但是含有普通节点池标签,将影响升级流程 由节点池迁移至默认节点池的节点,"cce.cloud.com/cce-nodepool"该标签影响集群升级。请确认该节点上的负载调度是否依赖该标签: 若无依赖,请删除该标签。 若存在依赖,请修改负载调度策略,解除依赖后再删除该标签。 检查到节点含有CNIProblem污点,请优先恢复 检查到节点含有key为node.cloudprovider.kubernetes.io/cni-problem,效果为不可调度(NoSchedule)的污点。该污点由NPD插件检查添加,建议您优先升级NPD插件至最新版本,再重新检查,若仍然有问题,请联系支持人员。 检查到节点对应的k8s node不存在,该节点可能正在删除中,请稍后重试检查 请稍后重试检查。 检查控制节点操作系统为EulerOS 2.5,不支持升级到v1.27.5-r0版本 您可选择升级至1.25或1.28。如果您选择升级至1.28版本,升级过程中EulerOS 2.5将会被滚动升级成HCE 2.0。如果您有其他需求,请提交工单联系技术支持人员。
  • 弹性云服务器-物理机 表2 弹性云服务器-物理机节点操作系统 操作系统 集群版本 CCE Standard集群 CCE Turbo 集群 最新内核信息 VPC网络模型 容器隧道网络模型 云原生网络2.0 EulerOS release 2.10 v1.29 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.28 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.27 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.25 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.23 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.21(停止维护) √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.19.16(停止维护) √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64
  • 裸金属服务器 该服务器的规格信息请参见裸金属服务器实例家族。 表3 裸金属服务器节点操作系统 操作系统 集群版本 CCE Standard集群 CCE Turbo集群 最新内核信息 VPC网络模型 容器隧道网络模型 云原生网络2.0 Huawei Cloud EulerOS 2.0 v1.29 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.28 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.27 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.25 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.23 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 EulerOS release 2.9(受限使用,请提交工单申请) v1.29 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.28 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.27 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.25 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.23 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.21(停止维护) √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.19(停止维护) √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 EulerOS release 2.3(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.23(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.21(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.19(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.17(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.15.11(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64
  • 弹性云服务器-虚拟机 表1 弹性云服务器-虚拟机节点操作系统 操作系统 集群版本 CCE Standard集群 CCE Turbo集群 最新内核信息 VPC网络模型 容器隧道网络模型 云原生网络2.0 Huawei Cloud EulerOS 2.0 v1.29 √ √ √ 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.28 √ √ √ 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.27 √ v1.27.3-r0及以上版本支持 √ 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.25 √ v1.25.6-r0及以上版本支持 √ 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.23 √ v1.23.11-r0及以上版本支持 √ 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 Huawei Cloud EulerOS 2.0 (ARM) v1.29 √ √ √ 5.10.0-60.18.0.50.r1083_58.hce2.aarch64 v1.28 √ √ √ 5.10.0-60.18.0.50.r1083_58.hce2.aarch64 v1.27 √ v1.27.3-r0及以上版本支持 √ 5.10.0-60.18.0.50.r1083_58.hce2.aarch64 v1.25 √ v1.25.6-r0及以上版本支持 √ 5.10.0-60.18.0.50.r1083_58.hce2.aarch64 v1.23 √ v1.23.11-r0及以上版本支持 √ 5.10.0-60.18.0.50.r1083_58.hce2.aarch64 Ubuntu 22.04 v1.29 √ × √ 5.15.0-92-generic v1.28 √ × √ 5.15.0-92-generic v1.27 √ × √ 5.15.0-92-generic v1.25 √ × √ 5.15.0-92-generic v1.23 √ × √ 5.15.0-92-generic Huawei Cloud EulerOS 1.1 v1.29 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.28 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.27 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.25 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.23 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.21 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 CentOS Linux release 7.6 v1.29 √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.28 √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.27 √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.25 √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.23 √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.21(停止维护) √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.19(停止维护) √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.17.17(停止维护) √ √ √ 3.10.0-1160.15.2.el7.x86_64 v1.17.9(停止维护) √ √ √ 3.10.0-1062.12.1.el7.x86_64 v1.15.11(停止维护) √ √ √ 3.10.0-1062.12.1.el7.x86_64 v1.15.6-r1(停止维护) √ √ √ 3.10.0-1062.1.1.el7.x86_64 v1.13.10-r1(停止维护) √ √ √ 3.10.0-957.21.3.el7.x86_64 v1.13.7-r0(停止维护) √ √ √ 3.10.0-957.21.3.el7.x86_64 EulerOS release 2.9 v1.29 √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 v1.28 √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 v1.27 √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 v1.25 √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 v1.23 √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 v1.21(停止维护) √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 v1.19(停止维护) √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 EulerOS release 2.9 (ARM) v1.29 √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 v1.28 √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 v1.27 √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 v1.25 √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 v1.23 √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 v1.21(停止维护) √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 v1.19(停止维护) √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 EulerOS release 2.8(ARM)(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.23(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.21(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.19.16(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.19.10(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h962.eulerosv2r8.aarch64 v1.17.17(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h962.eulerosv2r8.aarch64 v1.15.11(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h702.eulerosv2r8.aarch64 EulerOS release 2.5(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.23(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.21(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.19.16(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.19.10(停止维护) √ √ √ 3.10.0-862.14.1.5.h520.eulerosv2r7.x86_64 v1.19.8(停止维护) √ √ √ 3.10.0-862.14.1.5.h520.eulerosv2r7.x86_64 v1.17.17(停止维护) √ √ √ 3.10.0-862.14.1.5.h470.eulerosv2r7.x86_64 v1.17.9(停止维护) √ √ √ 3.10.0-862.14.1.5.h428.eulerosv2r7.x86_64 v1.15.11(停止维护) √ √ √ 3.10.0-862.14.1.5.h428.eulerosv2r7.x86_64 v1.15.6-r1(停止维护) √ √ √ 3.10.0-862.14.1.5.h328.eulerosv2r7.x86_64 v1.13.10-r1(停止维护) √ √ √ 3.10.0-862.14.1.2.h249.eulerosv2r7.x86_64 v1.13.7-r0(停止维护) √ √ √ 3.10.0-862.14.1.0.h197.eulerosv2r7.x86_64 Ubuntu 18.04 server 64bit(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ × √ 4.15.0-171-generic v1.23(停止维护) √ × √ 4.15.0-171-generic v1.21(停止维护) √ × √ 4.15.0-171-generic v1.19.16(停止维护) √ × √ 4.15.0-171-generic v1.19.8(停止维护) √ × √ 4.15.0-136-generic v1.17.17(停止维护) √ × √ 4.15.0-136-generic
  • 使用kubectl创建配置项 请参见通过kubectl连接集群配置kubectl命令。 创建并编辑cce-configmap.yaml文件。 vi cce-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: cce-configmap data: SPECIAL_LEVEL: Hello SPECIAL_TYPE: CCE 表2 关键参数说明 参数 说明 apiVersion 固定值为v1。 kind 固定值为ConfigMap。 metadata.name 配置项名称,可自定义。 data 配置项的数据,需填写键值对形式。 创建配置项。 kubectl create -f cce-configmap.yaml 查看已创建的配置项。 kubectl get cm NAME DATA AGE cce-configmap 3 7m
  • 操作场景 配置项(ConfigMap)是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在容器工作负载中作为文件或者环境变量使用。 配置项允许您将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。 配置项价值如下: 使用配置项功能可以帮您管理不同环境、不同业务的配置。 方便您部署相同工作负载的不同环境,配置文件支持多版本,方便您进行更新和回滚工作负载。 方便您快速将您的配置以文件的形式导入到容器中。
  • 操作步骤 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“配置与密钥”,在右上角单击“创建配置项”。 填写参数。 表1 新建配置参数说明 参数 参数说明 名称 新建的配置项名称,同一个命名空间里命名必须唯一。 命名空间 新建配置项所在的命名空间。若不选择,默认为default。 描述 配置项的描述信息。 配置数据 配置项的数据。 键值对形式,单击添加。其中值支持String、JSON和YAML格式。 标签 配置项的标签。键值对形式,输入键值对后单击“确认添加”。 配置完成后,单击“确定”。 工作负载配置列表中会出现新创建的工作负载配置。
  • 集群控制面组件说明 当前CCE支持收集以下三种类型的控制面日志,每个日志流对应一个Kubernetes控制层面组件。关于这些组件的更多信息,请参见Kubernetes组件。 表1 集群控制面组件说明 类别 组件 日志流 说明 控制面组件日志 kube-apiserver kube-apiserver-{{clusterID}} kube-apiserver组件是暴露Kubernetes API接口的控制层面的组件。更多信息,请参见kube-apiserver。 kube-controller-manager kube-controller-manager-{{clusterID}} kube-controller-manager组件是Kubernetes集群内部的管理控制中心,内嵌了Kubernetes发布版本中核心的控制链路。更多信息,请参见kube-controller-manager。 kube-scheduler kube-scheduler-{{clusterID}} kube-scheduler组件是Kubernetes集群的默认调度器。更多信息,请参见kube-scheduler。
  • 查看集群控制面组件日志 通过CCE控制台查看目标集群控制面组件日志 登录CCE控制台,进入一个已有的集群,在左侧导航栏中选择“日志中心”。 选择“控制面组件日志”页签,在控制面日志中选中需要查看的日志主题,支持的控制面组件日志请参见集群控制面组件说明。关于该页面的操作详情,请参见LTS用户指南。 图3 查看控制面组件日志 通过LTS控制台查看目标集群控制面组件日志 登录LTS控制台,选择“日志管理”页面。 通过集群ID查到对应的日志组,单击该日志组名称,查看日志流,详情请参见LTS用户指南。 图4 通过LTS控制台查看控制面组件日志
  • 工作负载事件中出现Cluster pod max limit exceeded如何解决? 创建工作负载时,事件中出现以下错误: Cluster pod max limit exceeded(x) 该事件信息表示集群中的Pod数量达到上限值,无法再新建Pod,其中x为集群Pod数量上限,默认为500。 解决方案 请合理规划集群中的Pod数量,避免达到上限值。 集群中安装的插件实例会占用Pod配额,请合理规划。
  • 创建工作负载时无法拉取SWR镜像如何解决? 在Autopilot集群中创建工作负载时,出现以下错误: Failed to pull image "swr.cn-north-**.myhuaweicloud.com/**/nginx:latest": rpc error: code = Unknown desc = failed to pull and unpack image "swr.cn-north-7.myhuaweicloud.com/**/nginx:latest": failed to resolve reference "swr.cn-north-7.myhuaweicloud.com/**/nginx/latest": failed to do request: Head "https://swr.cn-north-**.myhuaweicloud.com/v2/**/nginx/manifests/latest": dial tcp 100.79.**.**:443: i/o timeout 报错信息中说明创建工作负载时无法拉取SWR镜像,请检查OBS和SWR终端节点是否正常。 解决方案 如果未创建OBS和SWR终端节点,请参考配置访问SWR和OBS服务的 VPC终端节点 进行配置。
  • 运维工程师:WILL IAM 运维工程师“WILLIAM”虽然也有了所有集群和命名空间的只读权限,但还需要在 统一身份认证 服务 IAM中为其设置区域的集群管理权限,因此单独为其创建一个用户组“cce-sre-b4”,然后配置区域项目的“CCE FullAccess”。 图7 为用户WILLIAM所在的用户组配置北京四项目的集群管理权限 由于之前已经为其设置过所有命名空间的只读权限,所以运维工程师“WILLIAM”现在就拥有了区域的集群管理权限和所有命名空间的只读权限。
  • 概述 随着容器技术的快速发展,原有的分布式任务调度模式正在被基于Kubernetes的技术架构所取代。云容器引擎(Cloud Container Engine,简称CCE)是高度可扩展的、高性能的企业级Kubernetes集群,支持社区原生应用和工具。借助云容器引擎,您可以在云上轻松部署、管理和扩展容器化应用程序,快速高效的将微服务部署在云端。 为方便企业中的管理人员对集群中的资源权限进行管理,CCE后台提供了多种维度的细粒度权限策略和管理方式。CCE的权限管理包括“集群权限”和“命名空间权限”两种能力,分别从集群和命名空间两个层面对用户组或用户进行细粒度授权,具体解释如下: 集群权限:是基于IAM系统策略的授权,可以让用户组拥有“集群管理”、“节点管理”、“节点池管理”、“模板市场”、“插件管理”权限。 命名空间权限:是基于Kubernetes RBAC能力的授权,可以让用户或用户组拥有Kubernetes资源的权限,如“工作负载”、“网络管理”、“存储管理”、“命名空间”等的权限。 基于IAM系统策略的“集群权限”与基于Kubernetes RBAC能力的“命名空间权限”,两者是完全独立的,互不影响,但要配合使用。同时,为用户组设置的权限将作用于用户组下的全部用户。当给用户或用户组添加多个权限时,多个权限会同时生效(取并集)。
  • 主管:DAVID 用户“DAVID”为该公司某部门的主管,根据权限设计需要为其配置CCE服务的所有权限(包括集群权限和命名空间权限),因此需要在统一身份认证服务 IAM中单独为DAVID创建用户组“cce-admin”,并配置所有项目的权限:“CCE Administrator”,这样主管DAVID的权限就配置好了。 CCE Administrator:CCE的管理员权限,拥有该服务的所有权限,不需要再赋予其他权限。 CCE FullAccess、CCE ReadOnlyAccess:CCE的集群管理权限,仅针对与集群相关的资源(如集群、节点)有效,您必须确保同时配置了“命名空间权限”,才能有操作Kubernetes资源(如工作负载、Service等)的权限。
  • 运维组长:JAMES 用户“JAMES”为该部门的运维组长,需要设置所有项目的集群权限和所有命名空间的只读权限。 在统一身份认证服务 IAM中先为用户“JAMES”单独创建并加入用户组“cce-sre”,然后为用户组“cce-sre”配置所有项目的集群权限:“CCE FullAccess”,用户组“cce-sre”便拥有了所有项目的集群管理权限,接下来还需要为其设置命名空间的只读权限。 图2 为运维组长JAMES所在的用户组授权 为所有组长和工程师添加所有集群和命名空间的只读权限 在统一身份认证服务 IAM中再创建一个只读用户组“read_only”,然后将相关用户都添加到此用户组中。 两个开发工程师虽然不需要配置集群的管理权限,但也需要查看CCE控制台,因此需要有集群的只读权限才能满足需求。 运维工程师需要某区域集群的管理权限,为方便管理,这里先为其赋予集群的只读权限。 运维组长已经拥有了所有集群的管理权限,为方便管理,也可以将其添加到“read_only”用户组中,为其赋予集群的只读权限。 将JAMES、ROBERT、WILLIAM、LINDA、PETER五个用户都添加到用户组“read_only”中。 图3 将相关用户添加到“read_only”用户组中 接下来为用户组“read_only”赋予集群的只读权限。 图4 为用户组赋予集群的只读权限 然后返回CCE控制台,为这五个用户所在的用户组“read_only”增加命名空间的只读权限,单击左侧栏目树中的“权限管理”,为用户组“read_only”逐个赋予所有集群的只读权限。 图5 为用户组赋予命名空间的只读权限 设置完成后,运维组长“JAMES”就拥有了所有项目的集群管理权限和所有命名空间的只读权限,而开发组长“ROBERT”、运维工程师“WILLIAM”以及两位开发工程师“LINDA”和“PRTER”则拥有了所有集群和命名空间的只读权限。
  • 配置镜像拉取策略 创建工作负载会从镜像仓库拉取容器镜像到节点上,当前Pod重启、升级时也会拉取镜像。 默认情况下容器镜像拉取策略imagePullPolicy是IfNotPresent,表示如果节点上有这个镜像就直接使用节点已有镜像,如果没有这个镜像就会从镜像仓库拉取。 容器镜像拉取策略还可以设置为Always,表示无论节点上是否有这个镜像,都会从镜像仓库拉取,并覆盖节点上的镜像。 apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi imagePullPolicy: Always imagePullSecrets: - name: default-secret 在CCE控制台也可以设置镜像拉取策略,在创建工作负载时设置“更新策略”:勾选表示总是拉取镜像(Always),不勾选则表示按需拉取镜像(IfNotPresent)。 图1 设置更新策略 建议您在制作镜像时,每次制作一个新的镜像都使用一个新的Tag,如果不更新Tag只更新镜像,当拉取策略选择为IfNotPresent时,CCE会认为当前节点已经存在这个Tag的镜像,不会重新拉取。 父主题: 容器设置
  • CCE Turbo集群Pod批量创建性能说明 CCE Turbo集群的Pod容器网卡申请自VPC的弹性网卡或者辅助弹性网卡,目前Pod与网卡(弹性网卡或辅助弹性网卡)的关联操作发生在Pod调度完成之后,Pod创建的速度受网卡创建与绑定速度的影响,具体限制如下表所示。 表3 容器网卡创建耗时 节点类型 网卡类型 可支持的最大网卡数 网卡绑定到节点上的操作 网卡可用耗时 并发控制 节点上的容器网卡默认预热配置 ECS节点 辅助弹性网卡 256 指定该节点的弹性网卡创建辅助弹性网卡 1s以内 租户级别:600/分钟 1.19.16-r2、1.21.5-r0、1.23.3-r0之前的集群版本:容器网卡不预热 1.19.16-r2、1.21.5-r0、1.23.3-r0到1.19.16-r4、1.21.7-r0、1.23.5-r0之间的集群版本:容器网卡动态预热(nic-minimum-target=10;nic-warm-target=2) 1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0及以上集群版本:容器网卡动态预热(nic-minimum-target=10;nic-maximum-target=0;nic-warm-target=2;nic-max-above-warm-target=2) BMS节点 弹性网卡 128 节点绑定弹性网卡 20s-30s 节点级别:3并发 1.19.16-r4、1.21.7-r0、1.23.5-r0之前的集群版本:容器网卡总数高低水位预热(nic-threshold=0.3:0.6) 1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0、1.28.1-r0及以上集群版本:容器网卡动态预热(nic-minimum-target=10;nic-maximum-target=0;nic-warm-target=2;nic-max-above-warm-target=2) 容器网卡预热会提前消耗容器子网的IP地址,进而影响集群可运行的Pod数规模,请根据业务规模合理规划配置容器网卡动态预热参数,详情请参见CCE Turbo配置容器网卡动态预热。 ECS节点创建Pod说明(采用辅助弹性网卡) 当Pod调度的节点上没有可用的已经预热的容器网卡时,会调用辅助弹性网卡的创建API,在该节点的一个弹性网卡上创建一个辅助弹性网卡;并把该辅助弹性网卡分配给该Pod。 当Pod调度的节点上有可用的已经预热的容器网卡时,会选择创建时间最长且未使用的一张辅助弹性网卡分配给该Pod。 受限于辅助弹性网卡的租户并发创建速度,容器网卡不预热的场景下,每分钟最多创建成功600个Pod;如果有更高的弹性要求,可根据业务场景合理配置容器网卡动态预热参数。 BMS节点创建Pod说明(采用弹性网卡) 当Pod调度的节点上没有可用的已经预热的容器网卡时,会调用节点绑定网卡的API,在该节点上绑定一个弹性网卡;并把该弹性网卡分配给该Pod。目前BMS节点绑定一张弹性网卡直至完全可用大约耗时在20s到30s不等。 当Pod调度的节点上有可用的已经预热的容器网卡时,会选择创建时间最长且未使用的一张弹性网卡分配给该Pod。 受限于BMS节点绑定弹性网卡的速度,容器网卡不预热的场景下,同一节点的Pod启动速度为:3个/20秒;所以针对BMS节点,强烈建议用户配置容器网卡全预热。
  • 云原生网络2.0网络模型 云原生网络2.0是自研的新一代容器网络模型,深度整合了 虚拟私有云VPC 的弹性网卡(Elastic Network Interface,简称ENI)和辅助弹性网卡(Sub Network Interface,简称Sub-ENI)的能力,直接从VPC网段内分配容器IP地址,支持ELB直通容器,绑定安全组,绑定弹性公网IP,享有高性能。 图1 云原生网络2.0 说明如下: 裸金属节点上Pod使用ENI网卡;ECS节点上Pod使用Sub-ENI网卡,Sub-ENI网卡通过VLAN子接口挂载在ENI上。 节点内Pod间通信:直接通过VPC的弹性网卡/弹性辅助网卡进行流量转发。 跨节点Pod间通信:直接通过VPC的弹性网卡/弹性辅助网卡进行流量转发。
  • 网段规划建议 在集群网络构成中介绍集群中网络地址可分为节点网络、容器网络、服务网络三块,在规划网络地址时需要从如下方面考虑: 三个网段不能重叠,否则会导致冲突。且集群所在VPC下所有子网(包括扩展网段子网)不能和容器网段、服务网段冲突。 保证每个网段有足够的IP地址可用。 节点网段的IP地址要与集群规模相匹配,否则会因为IP地址不足导致无法创建节点。 容器网段的IP地址要与业务规模相匹配,否则会因为IP地址不足导致无法创建Pod。 云原生网络2.0模型下,由于容器网段与节点网段共同使用VPC下的网络地址,建议容器子网与节点子网不要使用同一个子网,否则容易出现IP资源不足导致容器或节点创建失败的情况。 另外云原生网络2.0模型下容器网段支持在创建集群后增加子网,扩展可用IP数量,此时需要注意增加的子网不要与容器网段其他子网存在网络冲突。 图4 网段配置(创建集群时配置)
  • 步骤1:创建工作负载,并通过Ingress对外暴露服务 在cluster-1集群中部署应用,并测试访问。 复制以下文件保存到nginx-deploy.yaml文件。 apiVersion: apps/v1 kind: Deployment metadata: labels: version: v1 name: nginx namespace: default spec: selector: matchLabels: app: nginx version: v1 template: metadata: labels: app: nginx version: v1 spec: containers: - name: container-1 image: nginx:latest imagePullPolicy: IfNotPresent terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst replicas: 1 --- apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx namespace: default spec: selector: app: nginx externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 port: 80 protocol: TCP type: NodePort --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx namespace: default spec: rules: - host: example.com http: paths: - path: / backend: service: name: nginx port: number: 80 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: nginx 对cluster-1集群执行以下命令,创建工作负载。 kubectl apply -f nginx-deploy.yaml 在cluster-2集群中部署相同的应用,重复执行以上命令,创建相同的工作负载。
  • Node-problem-controller故障隔离 故障隔离仅1.16.0及以上版本的插件支持。 默认情况下,若多个节点发生故障,NPC至多为10%的节点添加污点,可通过参数npc. maxTaintedNode提高数量限制。 开源NPD插件提供了故障探测能力,但未提供基础故障隔离能力。对此,CCE在开源NPD的基础上,增强了Node-problem-controller(节点故障控制器组件,简称NPC),该组件参照Kubernetes节点控制器实现,针对NPD探测上报的故障,自动为节点添加污点以进行基本的节点故障隔离。 表11 参数说明 参数 说明 默认值 npc.enable 是否启用npc 1.18.0及以上版本不再支持该参数 true npc.maxTaintedNode 单个故障在多个节点间发生时,至多多少节点允许被npc添加污点,避免雪崩效应 支持int格式和百分比格式 10% 值域: int格式,数值范围为1到无穷大 百分比格式,数值范围为1%到100%,与集群节点数量乘积计算后最小值为1。 npc.nodeAffinity Controller的节点亲和性配置 N/A
共100000条