华为云用户手册

  • CCE事件列表 事件类告警是根据CCE上报到AOM的事件来决定是否告警,CCE上报了一系列事件到AOM,您可以在配置事件告警的处查看具体事件,根据自身需求添加事件类告警。 图2 CCE上报的事件 CCE当前支持集群数据面事件和集群控制面事件。 表2 集群数据面事件 类别 事件描述 事件名称 事件级别 更多说明 Pod Pod内存不足OOM PodOOMKilling 重要 检查Pod是否因OOM退出。 该事件依赖节点故障检测插件(1.18.41及以上版本)和云原生日志采集插件(1.3.2及以上版本)。 Pod 启动失败 FailedStart 重要 检查Pod是否启动成功。 Pod 拉取镜像失败 FailedPullImage 重要 检查Pod是否拉取镜像成功。 Pod 启动重试失败 BackOffStart 重要 检查Pod是否重启失败。 Pod 调度失败 FailedScheduling 重要 检查Pod是否调度成功。 Pod 拉取镜像重试失败 BackOffPullImage 重要 检查Pod重试拉取镜像是否成功。 Pod 创建失败 FailedCreate 重要 检查Pod创建是否成功。 Pod 状态异常 Unhealthy 次要 检查Pod状态是否正常。 Pod 删除失败 FailedDelete 次要 检查工作负载是否删除成功。 Pod 未拉取镜像异常 ErrImageNeverPull 次要 检查工作负载是否拉取镜像。 Pod 扩容失败 FailedScaleOut 次要 检查工作负载副本扩容是否正常。 Pod 待机失败 FailedStandBy 次要 检查Pod待机是否成功。 Pod 更新配置失败 FailedReconfig 次要 检查Pod更新配置是否成功。 Pod 激活失败 FailedActive 次要 检查Pod是否激活成功。 Pod 回滚失败 FailedRollback 次要 检查Pod回滚是否成功。 Pod 更新失败 FailedUpdate 次要 检查Pod更新是否成功。 Pod 缩容失败 FailedScaleIn 次要 检查Pod缩容是否失败。 Pod 重启失败 FailedRestart 次要 检查Pod重启是否成功。 Deployment 标签选择器冲突 SelectorOverlap 次要 检查集群中标签选择器是否存在冲突。 Deployment 副本集创建异常 ReplicaSetCreateError 次要 检查工作负载ReplicaSet创建副本是否正常。 Deployment 部署回滚版本未发现 DeploymentRollbackRevisionNotFound 次要 检查Deployment负载回滚版本是否存在。 DaemonSet 标签选择器异常 SelectingAll 次要 检查工作负载标签选择器是否设置异常。 Job 太多活跃Pod TooManyActivePods 次要 检查Job达到预定的Pod数后,是否还存在活动状态的Pod。 Job 太多成功Pod TooManySucceededPods 次要 检查Job达到预定的数量后,是否存在过多运行成功的Pod。 CronJob 查询失败 FailedGet 次要 查询CronJob是否成功。 CronJob 查询Pod列表失败 FailedList 次要 检查查询Pod列表是否成功。 CronJob 未知Job UnexpectedJob 次要 检查CronJob是否出现未知的Job。 Service 创建负载均衡失败 CreatingLoadBalancerFailed 次要 检查创建ELB是否成功。 Service 删除负载均衡失败 DeletingLoadBalancerFailed 次要 检查删除ELB是否成功。 Service 更新负载均衡失败 UpdateLoadBalancerFailed 次要 检查更新ELB是否成功。 Namespace 废弃节点清理 DeleteNodeWithNoServer 次要 检查是否清理废弃节点。 PV 主机卸载块存储失败 DetachVolumeFailed 次要 检查卸载块存储是否成功。 PV 卷回收策略未知 VolumeUnknownReclaimPolicy 次要 检查是否指定卷回收策略。 PV 挂载数据卷失败 SetUpAtVolumeFailed 次要 检查数据卷挂载是否成功。 PV 数据卷回收失败 VolumeFailedRecycle 次要 检查数据卷是否成功回收。 PV 等待主机挂载块存储失败 WaitForAttachVolumeFailed 次要 检查节点挂载块存储是否成功。 PV 数据卷删除失败 VolumeFailedDelete 次要 检查数据卷删除是否成功。 PV 挂载盘符失败 MountDeviceFailed 次要 检查数据卷挂盘是否成功。 PV 卸载数据卷失败 TearDownAtVolumeFailed 次要 检查数据卷卸载是否成功。 PV 卸载盘符失败 UnmountDeviceFailed 次要 检查数据卷卸载盘符是否成功。 PV 主机挂载块存储失败 AttachVolumeFailed 次要 检查节点卸载块存储是否成功。 PVC 数据卷扩容失败 VolumeResizeFailed 次要 检查数据卷扩容是否成功。 PVC 卷PVC丢失 ClaimLost 次要 检查PVC卷是否正常。 PVC 创建卷失败 ProvisioningFailed 次要 检查创建数据卷是否正常。 PVC 创建卷清理失败 ProvisioningCleanupFailed 次要 检查清理数据卷是否正常。 PVC 卷误绑定 ClaimMisbound 次要 检查PVC是否绑定错误的卷。 Node 节点重启 Rebooted 重要 检查节点是否重启。 Node 节点不可调度 NodeNotSchedulable 重要 检查节点是否可调度。 Node 节点状态异常 NodeNotReady 重要 检查节点状态是否异常。 Node 节点创建失败 NodeCreateFailed 重要 检查节点是否创建成功。 Node 节点kubelet故障 KUBELETIsDown 次要 检查节点kubelet是否正常。 Node 节点内存空间不足 NodeHasInsufficientMemory 次要 检查节点内存空间是否充足。 Node 节点上发现未注册的网络设备 UnregisterNetDevice 次要 检查节点上是否绑定了未注册的网络设备。 Node 网卡未发现 NetworkCardNotFound 次要 检查节点网卡状态。 Node 节点kube-proxy故障 KUBEPROXYIsDown 次要 检查节点上的kube-proxy是否正常。 Node 节点磁盘空间已满 NodeOutOfDisk 次要 检查节点磁盘空间是否正常。 Node 节点任务夯住 TaskHung 次要 检查节点上是否存在夯住的任务。 Node CIDR不可用 CIDRNotAvailable 次要 检查节点CIDR是否可用。 Node 节点的连接跟踪表已满 ConntrackFull 次要 检查节点的连接跟踪表是否已满。 Node 节点磁盘空间不足 NodeHasDiskPressure 次要 检查节点磁盘空间是否充足。 Node 节点纳管失败 NodeInstallFailed 次要 检查集群纳管节点是否成功。 Node 节点操作系统内核故障 KernelOops 次要 检查节点操作系统内核是否故障。 Node 节点内存不足强杀进程 OOMKilling 次要 检查节点是否出现OOM。 Node 节点docker故障 DOCKERIsDown 次要 检查节点容器引擎是否正常。 Node CIDR分配失败 CIDRAssignmentFailed 次要 检查节点CIDR分配是否成功。 Node 节点docker夯住 DockerHung 次要 检查节点Docker进程是否夯住。 Node 节点文件系统只读 FilesystemIsReadOnly 次要 检查节点文件系统是否只读。 Node 节点ntp服务故障 NTPIsDown 次要 检查节点NTP服务是否正常。 Node 节点卸载失败 NodeUninstallFailed 次要 检查节点卸载是否成功。 Node 节点磁盘卸载夯住 AUFSUmountHung 次要 检查节点磁盘卸载是否夯住。 Node 节点cni插件故障 CNIIsDown 次要 检查节点CNI插件是否故障。 Autoscaler 扩容节点超时 ScaleUpTimedOut 重要 检查节点池扩容节点是否超时。 Autoscaler 节点池资源充足 NodePoolAvailable 重要 检查节点池资源是否充足。 Autoscaler 缩容节点 ScaleDown 重要 集群正在缩容节点。 Autoscaler 未触发节点扩容 NotTriggerScaleUp 重要 检查节点是否成功触发扩容。 Autoscaler 删除未注册节点成功 DeleteUnregistered 重要 检查删除未注册的节点是否成功。 Autoscaler 缩容空闲节点成功 ScaleDownEmpty 重要 检查缩容空闲节点是否成功。 Autoscaler 缩容节点失败 ScaleDownFailed 重要 检查缩容节点是否成功。 Autoscaler 节点池扩容节点失败 FailedToScaleUpGroup 重要 检查节点池扩容节点是否异常。 Autoscaler 节点池扩容节点成功 ScaledUpGroup 重要 检查节点池扩容是否成功。 Autoscaler 扩容节点失败 ScaleUpFailed 重要 检查节点扩容是否成功。 Autoscaler 修复节点池节点个数成功 FixNodeGroupSizeDone 重要 检查修复节点池节点个数是否成功。 Autoscaler 节点池退避重试中 NodeGroupInBackOff 重要 检查节点池扩缩容是否存在回退重试。 Autoscaler 修复节点池节点个数失败 FixNodeGroupSizeError 重要 检查修复节点池节点个数是否成功。 Autoscaler 节点池资源售罄 NodePoolSoldOut 重要 检查节点池资源是否充足。 Autoscaler 触发节点扩容 TriggeredScaleUp 重要 检查节点是否触发扩容。 Autoscaler 节点池扩容节点启动 StartScaledUpGroup 重要 检查节点池扩容是否启动。 Autoscaler 删除未注册节点失败 DeleteUnregisteredFailed 重要 检查删除未注册的节点是否成功。 表3 集群控制面事件 事件名称 事件ID 事件级别 事件说明 内部故障 Internal error 重要 检查集群是否出现内部故障。 外部依赖异常 External dependency error 重要 检查集群是否存在外部依赖异常。 初始化执行线程失败 Failed to initialize process thread 重要 检查集群初始化执行线程是否成功。 更新数据库失败 Failed to update database 重要 检查集群更新数据库是否成功。 节点池触发创建节点失败 Failed to create node by nodepool 重要 检查节点池中创建节点是否成功。 节点池触发删除节点失败 Failed to delete node by nodepool 重要 检查节点池中删除节点是否成功。 创建包周期节点失败 Failed to create yearly/monthly subscription node 重要 检查集群创建包周期的节点是否成功。 解除资源租户访问控制节点镜像的授权失败 Failed to cancel the authorization of accessing the image of the master. 重要 创建集群时,检查解除资源租户访问控制节点镜像的授权是否成功。 创建虚拟IP失败 Failed to create the virtual IP for the master 重要 创建集群时检查创建虚拟IP是否成功。 删除节点虚拟机失败 Failed to delete the node VM 重要 检查集群删除节点虚拟机是否成功。 删除节点安全组失败 Failed to delete the security group of node 重要 检查集群删除节点安全组是否成功。 删除控制节点安全组失败 Failed to delete the security group of master 重要 检查集群删除控制节点安全组是否成功。 删除控制节点网卡安全组失败 Failed to delete the security group of port 重要 检查集群删除控制节点网卡安全组是否成功。 删除集群ENI/SubENI安全组失败 Failed to delete the security group of eni or subeni 重要 检查集群删除ENI/SubENI安全组是否成功。 解绑控制节点网卡失败 Failed to detach the port of master 重要 检查集群解绑控制节点网卡是否成功。 删除控制节点网卡失败 Failed to delete the port of master 重要 检查集群删除控制节点网卡是否成功。 删除控制节点虚拟机失败 Failed to delete the master VM 重要 检查集群删除控制节点虚拟机是否成功。 删除控制节点密钥对失败 Failed to delete the key pair of master 重要 检查集群删除控制节点密钥对是否成功。 删除控制节点subnet失败 Failed to delete the subnet of master 重要 检查集群删除控制节点subnet是否成功。 删除控制节点VPC失败 Failed to delete the VPC of master 重要 检查集群删除控制节点VPC是否成功。 删除集群证书失败 Failed to delete certificate of cluster 重要 检查集群删除集群证书是否成功。 删除控制节点云服务器组失败 Failed to delete the server group of master 重要 检查集群删除控制节点云服务器组是否成功。 删除虚拟IP失败 Failed to delete the virtual IP for the master 重要 检查集群删除虚拟IP是否成功。 获取控制节点浮动IP失败 Failed to get floating IP of the master 重要 检查获取控制节点浮动IP是否成功。 获取集群规格信息失败 Failed to get cluster flavor 重要 检查获取集群规格信息是否成功。 获取集群endpoint失败 Failed to get cluster endpoint 重要 检查获取集群endpoint是否成功。 获取Kubernetes集群连接失败 Failed to get kubernetes connection 重要 检查获取Kubernetes集群连接是否成功。 更新集群Secret失败 Failed to update secret 重要 检查更新集群Secret是否成功。 处理用户操作超时 Operation timed out 重要 检查处理用户操作是否超时。 连接Kubernetes集群超时 Connecting to Kubernetes cluster timed out 重要 检查连接Kubernetes集群是否超时。 检查组件状态失败或组件状态异常 Failed to check component status or components are abnormal 重要 检查集群检查组件状态是否成功,或组件状态是否异常。 无法在Kubernetes集群中找到该节点 The node is not found in kubernetes cluster 重要 检查是否能在Kubernetes集群中找到该节点。 节点在Kubernetes集群中状态异常 The status of node is not ready in kubernetes cluster 重要 检查节点在Kubernetes集群中状态是否正常。 无法在ECS服务中找到该节点对应的虚拟机 Can't find corresponding vm of this node in ECS 重要 检查能否在ECS服务中找到该节点对应的虚拟机。 升级控制节点失败 Failed to upgrade the master 重要 检查升级控制节点是否成功。 升级节点失败 Failed to upgrade the node 重要 检查升级节点是否成功。 变更控制节点规格失败 Failed to change flavor of the master 重要 检查变更控制节点规格是否成功。 变更控制节点规格超时 Change flavor of the master timeout 重要 检查变更控制节点规格是否超时。 创建包周期节点校验不通过 Failed to pass verification while creating yearly/monthly subscription node 重要 检查创建包周期节点校验是否成功。 安装节点失败 Failed to install the node 重要 检查集群安装节点是否成功。 清理VPC中集群容器网络路由表条目失败 Failed to clean routes of cluster container network in VPC 重要 检查清理VPC中集群容器网络路由表条目是否成功。 集群状态不可用 Cluster status is Unavailable 重要 检查集群状态是否可用。 集群状态故障 Cluster status is Error 重要 检查集群是否出现故障。 集群状态长时间不更新 Cluster status is not updated for a long time 重要 检查集群状态是否长时间不更新。 集群升级超时后更新控制节点状态失败 Failed to update master status after upgrading cluster timeout 重要 检查集群升级超时后更新控制节点状态是否成功。 集群升级超时后更新运行中的任务失败 Failed to update running jobs after upgrading cluster timeout 重要 检查集群升级超时后更新运行中的任务是否成功。 更新集群状态失败 Failed to update cluster status 重要 检查更新集群状态是否成功。 更新节点状态失败 Failed to update node status 重要 检查更新节点状态是否成功。 纳管节点超时后移除数据库中的节点记录失败 Failed to remove the static node from database 重要 检查纳管节点超时后移除数据库中的节点记录是否成功。 节点处理超时后更新节点状态为异常失败 Failed to update node status to abnormal after node processing timeout 重要 检查节点处理超时后,是否更新节点状态为异常。 更新集群访问地址失败 Failed to update the cluster endpoint 重要 检查更新集群访问地址是否成功。 删除不可用的Kubernetes连接失败 Failed to delete the unavailable connection of the Kubernetes cluster 重要 检查删除不可用的Kubernetes连接是否成功。 同步集群证书失败 Failed to sync the cluster cert 重要 检查同步集群证书是否成功。
  • 插件相关操作 您可以在“插件中心”执行表2中的操作。 表2 插件相关操作 操作 说明 操作步骤 安装 安装指定的插件。 登录CCE控制台,单击集群名称进入集群,在左侧导航栏选择“插件中心”。 单击需要安装插件下的“安装”。 由于不同插件支持的配置参数不同,详细步骤请参见插件章节。 设置完插件参数后,单击“确定”。 升级 将插件升级至新版。 登录CCE控制台,单击集群名称进入集群,在左侧导航栏选择“插件中心”。 如存在可升级的插件,该插件将提供“升级”按钮。 单击“升级”。由于不同插件支持的配置参数不同,详细步骤请参见插件章节。 设置完插件参数后,单击“确定”。 编辑 编辑插件参数。 登录CCE控制台,单击集群名称进入集群,在左侧导航栏选择“插件中心”。 单击需要编辑插件下的“编辑”。 由于不同插件支持的配置参数不同,详细步骤请参见插件章节。 设置完插件参数后,单击“确定”。 卸载 将插件从集群中卸载。 登录CCE控制台,单击集群名称进入集群,在左侧导航栏选择“插件中心”。 单击需要编辑插件下的“卸载”。 在弹出的确认窗口中单击“是”。 卸载操作无法恢复,请谨慎操作。 回滚 将插件回滚至升级前版本。 说明: 插件升级后,可回滚到升级前的版本,如仅编辑插件参数将无法使用回滚功能。 插件回滚后,无法再一次回滚。 登录CCE控制台,单击集群名称进入集群,在左侧导航栏选择“插件中心”。 如存在可回滚的插件,该插件将提供“回滚”按钮。 单击“回滚”。 在弹出的确认窗口中单击“是”。 插件回滚能力需要插件版本支持,支持的插件及版本如下: coredns:1.25.11及以上版本支持回滚 everest:2.1.19及以上版本支持回滚 autoscaler: v1.21集群:1.21.22及以上版本支持回滚 v1.23集群:1.23.24及以上版本支持回滚 v1.25集群:1.25.14及以上版本支持回滚 kube-prometheus-stack:3.7.2及以上版本支持回滚 volcano:1.11.4及以上版本支持回滚 npd:1.18.22及以上版本支持回滚
  • 容器网络插件 插件名称 插件简介 CoreDNS域名解析 CoreDNS域名解析插件是一款通过链式插件的方式为Kubernetes提供域名解析服务的DNS服务器。 NGINX Ingress控制器 NGINX Ingress控制器为Service提供了可直接被集群外部访问的虚拟主机、负载均衡、SSL代理、HTTP路由等应用层转发功能。 节点本地域名解析加速 NodeLocal DNSCache通过在集群节点上作为守护程序集运行DNS缓存代理,提高集群DNS性能。
  • 其他插件 插件名称 插件简介 Kubernetes Dashboard Kubernetes Dashboard是Kubernetes集群基于Web的通用UI,集合了命令行可以操作的所有命令。它允许用户管理在集群中运行应用程序并对其进行故障排除,以及管理集群本身。 Kubernetes Web终端(停止维护) Kubernetes Web终端(web-terminal)是一款支持在Web界面上使用Kubectl的插件。它支持使用WebSocket通过浏览器连接Linux,提供灵活的接口便于集成到独立系统中,可直接作为一个服务连接,通过cmdb获取信息并登录服务器。 CCE集群备份恢复(停止维护) CCE集群备份恢复插件提供集群备份恢复能力。它将用户应用数据和业务数据备份到OBS桶中,并提供数据的本地备份和远程备份的能力。
  • 插件生命周期 生命周期是指插件从安装到卸载历经的各种状态。 表1 插件生命周期状态说明 状态 状态属性 说明 运行中 稳定状态 插件正常运行状态,所有插件实例均正常部署,插件可正常使用。 部分就绪 稳定状态 插件正常运行状态,部分插件实例未正常部署。此状态下,插件功能可能无法正常使用。 不可用 稳定状态 插件异常状态,所有插件实例均未正常部署。 安装中 中间状态 插件正处于部署状态。 如遇到插件配置错误或资源不足所有实例均无法调度等情况,系统会在10分钟后将该插件置为“不可用”状态。 安装失败 稳定状态 插件安装失败,需要卸载后重新安装。 升级中 中间状态 插件正处于更新状态。 升级失败 稳定状态 插件升级失败,可重试升级或卸载后重新安装。 回滚中 中间状态 插件正在回滚中。 回滚失败 稳定状态 插件回滚失败,可重试回滚或卸载后重新安装。 删除中 中间状态 插件处于正在被删除的状态。 如果长时间处于该状态,则说明出现异常。 删除失败 稳定状态 插件删除失败,可重试卸载。 未知状态 稳定状态 插件模板实例不存在。 当插件处于“安装中”或“删除中”等中间状态时,不可进行编辑、卸载等相关操作。 当插件状态处于“未知状态”且对应插件返回信息的status.Reason字段为"don't install the addon in this cluster"时,一般为集群中对应插件的helm release关联secret被误删导致,此类场景可先卸载插件,然后以相同配置参数重新安装插件恢复。
  • 云原生可观测性插件 插件名称 插件简介 云原生监控插件 kube-prometheus-stack通过使用Prometheus-operator和Prometheus,提供简单易用的端到端Kubernetes集群监控能力。 使用kube-prometheus-stack可将监控数据与监控中心对接,在监控中心控制台查看监控数据,配置告警等。 云原生日志采集插件 log-agent是基于开源fluent-bit和opentelemetry构建的云原生日志采集插件。log-agent支持基于CRD的日志采集策略,可以根据您配置的策略规则,对集群中的容器标准输出日志、容器文件日志、节点日志及K8s事件日志进行采集与转发。 CCE节点故障检测 CCE节点故障检测插件(node-problem-detector,简称NPD)是一款监控集群节点异常事件的插件,以及对接第三方监控平台功能的组件。它是一个在每个节点上运行的守护程序,可从不同的守护进程中搜集节点问题并将其报告给apiserver。node-problem-detector可以作为DaemonSet运行, 也可以独立运行。 CCE容器网络扩展指标 CCE容器网络扩展指标是一款容器网络流量监控管理插件。支持流量统计信息ipv4发送公网报文数和字节数、ipv4接收报文数和字节数以及ipv4发送报文数和字节数,且支持通过PodSelector来对监控后端作选择,支持多监控任务、可选监控指标,且支持用户获取Pod的label标签信息。监控信息已适配Prometheus格式,可以通过调用Prometheus接口查看监控数据。 Kubernetes Metrics Server Metrics-Server是集群核心资源监控数据的聚合器。 Grafana Grafana是一款开源的数据可视化和监控平台,可以为您提供丰富的图表和面板,用于实时监控、分析和可视化各种指标和数据源。 Prometheus(停止维护) Prometheus是一套开源的系统监控报警框架。在云容器引擎CCE中,支持以插件的方式快捷安装Prometheus。
  • 容器调度与弹性插件 插件名称 插件简介 Volcano调度器 Volcano调度器提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,通过接入AI、大数据、基因、渲染等诸多行业计算框架服务终端用户。 CCE集群弹性引擎 集群自动扩缩容插件autoscaler,是根据pod调度状态及资源使用情况对集群的工作节点进行自动扩容缩容的插件。 CCE容器弹性引擎 CCE容器弹性引擎插件是一款CCE自研的插件,能够基于CPU利用率、内存利用率等指标,对无状态工作负载进行弹性扩缩容。 CCE突发弹性引擎(对接CCI) Virtual Kubelet是基于社区Virtual Kubelet开源项目开发的插件,该插件支持用户在短时高负载场景下,将部署在CCE上的无状态负载(Deployment)、有状态负载(StatefulSet)、普通任务(Job)三种资源类型的容器实例(Pod),弹性创建到云容器实例CCI服务上,以减少集群扩容带来的消耗。
  • 更新弹性伸缩配置 登录CCE控制台,单击集群名称进入集群。 单击左侧导航栏的“节点管理”,在目标节点池所在行右上角单击“弹性伸缩”。 若未安装autoscaler插件,请根据业务需求配置插件参数后单击“安装”,并等待插件安装完成。插件配置详情请参见CCE集群弹性引擎。 若已安装autoscaler插件,则可直接配置弹性伸缩策略。 配置节点池弹性伸缩策略。 伸缩配置 自定义扩容规则:单击“添加规则”,在弹出的添加规则窗口中设置参数。您可以设置多条节点弹性策略,最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。 规则类型可选择“指标触发”或“周期触发”,两种类型区别如下: 表1 自定义规则类型 规则类型 参数设置 指标触发 触发条件:请选择“CPU分配率”或“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。 说明: 分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。 如果多条规则同时满足条件,会有如下两种执行的情况: 如果同时配置了“CPU分配率”和“内存分配率”的规则,两种或多种规则同时满足扩容条件时,执行扩容节点数更多的规则。 如果同时配置了“CPU分配率”和“周期触发”的规则,当达到“周期触发”的时间值时CPU也满足扩容条件时,较早执行的A规则会将节点池状态置为伸缩中状态,导致B规则无法正常执行。待A规则执行完毕,节点池状态恢复正常后,B规则也不会执行。 配置了“CPU分配率”和“内存分配率”的规则后,策略的检测周期会因autoscaler每次循环的处理逻辑而变动。只要一次检测出满足条件就会触发扩容(还需要满足冷却时间、节点池状态等约束条件)。 当集群中的节点数已到达集群规模上限时,或CPU、内存达到autoscaler插件设置的上限时,将不会触发指标扩容。 执行动作:达到触发条件后所要执行的动作。 自定义:为节点池增加指定数量的节点。 自动计算:当达到触发条件时,自动扩容节点,将分配率恢复到触发条件以下。计算公式如下: 扩容节点数 = 节点池容器组(Pod)资源申请值 / (单节点可用资源值 * 目标分配率) - 当前节点数 + 1 周期触发 触发时间:可选择每天、每周、每月或每年的具体时间点。 执行动作:达到触发时间值后所要执行的动作,为节点池增加指定数量的节点。 节点数范围:弹性伸缩时节点池下的节点数量会始终介于节点数范围内。 冷却时间:指当前节点池扩容出的节点多长时间不能被缩容。 伸缩对象 规格选择:对节点池中的节点规格单独设置是否开启弹性伸缩。 配置完成后,单击“确定”。
  • 约束与限制 该特性从以下版本开始支持: v1.19集群:v1.19.16-r5及以上版本 v1.21集群:v1.21.8-r0及以上版本 v1.23集群:v1.23.6-r0及以上版本 v1.25集群:v1.25.2-r0及以上版本 v1.25以上版本集群 不允许同时配置 "kubernetes.io/elb.health-check-option" 和 "kubernetes.io/elb.health-check-options"。 target_service_port字段必须配置,且不能重复。 TCP端口只能配置健康检查协议为TCP、HTTP,UDP端口必须配置健康检查协议为UDP。
  • 收费场景 监控中心:集群内配置的除基础指标以外的自定义指标(基础指标不收费)会根据AOM的收费规则进行收费。详情请参见计费项。 日志中心:对超出每月免费限额(500MB/月)的日志读写、日志索引流量、日志存储量进行收费。详情请参见LTS服务的收费标准。 告警中心:告警中心依赖SMN消息通知服务对告警进行推送,联系组当前只支持短信和邮件,超过SMN免费范围(短信数量小于100/条/月、邮件数量小于1000/封/月的,推送免费)的将会收费。详情请参见SMN计费说明。
  • 免费场景 监控中心自身免费使用,监控中心所使用的指标都上报并存储在AOM服务,其中在AOM范畴内的基础指标不收费,存储时长15天(暂不支持修改)。详情请参见基础指标。 日志中心自身免费使用,集群内产生的日志都上报并存储在LTS服务,云日志服务的计费项由日志读写流量、日志索引流量、日志存储量的费用组成(有500MB/月的免费额度)。 告警中心自身免费使用,集群内产生的告警由SMN消息通知服务进行推送,在短信数量小于100/条/月、邮件数量小于1000/封/月的,推送免费。其中短信条数计算规则请参见短信内容长度计算规则。
  • 文件存储挂载参数 CCE的存储插件everest在挂载文件存储时默认设置了如表1所示的参数。 表1 文件存储挂载参数 参数 参数值 描述 keep-original-ownership 无需填写 表示是否保留文件挂载点的ownership,使用该参数时,要求everest插件版本为1.2.63或2.1.2以上。 默认为不添加该参数,此时挂载文件存储时将会默认把挂载点的ownership修改为root:root。 如添加该参数,挂载文件存储时将保持文件系统原有的ownership。 vers 3 文件系统版本,目前只支持NFSv3。取值:3 nolock 无需填写 选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。 timeo 600 NFS客户端重传请求前的等待时间(单位为0.1秒)。建议值:600。 hard/soft 无需填写 挂载方式类型。 取值为hard,即使用硬连接方式,若NFS请求超时,则客户端一直重新请求直至成功。 取值为soft,即软挂载方式挂载系统,若NFS请求超时,则客户端向调用程序返回错误。 默认为hard。 sharecache/nosharecache 无需填写 设置客户端并发挂载同一文件系统时数据缓存和属性缓存的共享方式。设置为sharecache时,多个挂载共享共享同一缓存。设为nosharecache时,每个挂载各有一个缓存。默认为sharecache。 说明: 设置nosharecache禁用共享缓存会对性能产生一定影响。每次挂载都会重新获取挂载信息,会增加与NFS服务器的通信开销和NFS客户端的内存消耗,同时同客户端设置nosharecache存在cache不一致的风险。因此,应该根据具体情况进行权衡,以确定是否需要使用nosharecache选项。 除了以上参数外,您还可以设置其他的文件存储挂载参数,具体请参见挂载NFS文件系统到云服务器(Linux)。
  • 启动后处理 登录CCE控制台,在创建工作负载时,配置容器信息,选择“生命周期”。 在“启动后处理”页签,设置启动后处理的参数。 表3 启动后处理-参数说明 参数 说明 命令行脚本方式 在容器中执行指定的命令,配置为需要执行的命令。命令的格式为Command Args[1] Args[2]…(Command为系统命令或者用户自定义可执行程序,如果未指定路径则在默认路径下寻找可执行程序),如果需要执行多条命令,建议采用将命令写入脚本执行的方式。不支持后台执行和异步执行的命令。 如需要执行的命令如下: exec: command: - /install.sh - install_agent 请在执行脚本中填写: /install install_agent。这条命令表示容器创建成功后将执行install.sh。
  • 停止前处理 登录CCE控制台,在创建工作负载时,配置容器信息,选择“生命周期”。 在“停止前处理”页签,设置停止前处理的命令。 表4 停止前处理 参数 说明 命令行脚本方式 在容器中执行指定的命令,配置为需要执行的命令。命令的格式为Command Args[1] Args[2]…(Command为系统命令或者用户自定义可执行程序,如果未指定路径则在默认路径下寻找可执行程序),如果需要执行多条命令,建议采用将命令写入脚本执行的方式。 如需要执行的命令如下: exec: command: - /uninstall.sh - uninstall_agent 请在执行脚本中填写: /uninstall uninstall_agent。这条命令表示容器结束前将执行uninstall.sh。
  • YAML样例 本节以nginx为例,说明kubectl命令设置容器生命周期的方法。 在以下配置文件中,您可以看到postStart命令在容器目录/bin/bash下写了个install.sh命令。 preStop执行uninstall.sh命令。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx command: - sleep 3600 #启动命令 imagePullPolicy: Always lifecycle: postStart: exec: command: - /bin/bash - install.sh #启动后命令 preStop: exec: command: - /bin/bash - uninstall.sh #停止前命令 name: nginx imagePullSecrets: - name: default-secret
  • 启动命令 在默认情况下,镜像启动时会运行默认命令,如果想运行特定命令或重写镜像默认值,需要进行相应设置。 Docker的镜像拥有存储镜像信息的相关元数据,如果不设置生命周期命令和参数,容器运行时将运行镜像制作时提供的默认的命令和参数,Docker将这两个字段定义为ENTRYPOINT和 CMD。 如果在创建工作负载时填写了容器的运行命令和参数,将会覆盖镜像构建时的默认命令ENTRYPOINT、CMD,规则如下: 表1 容器如何执行命令和参数 镜像 ENTRYPOINT 镜像CMD 容器运行命令 容器运行参数 最终执行 [touch] [/root/test] 未设置 未设置 [touch /root/test] [touch] [/root/test] [mkdir] 未设置 [mkdir] [touch] [/root/test] 未设置 [/opt/test] [touch /opt/test] [touch] [/root/test] [mkdir] [/opt/test] [mkdir /opt/test] 登录CCE控制台,在创建工作负载时,配置容器信息,选择“生命周期”。 在“启动命令”页签,输入运行命令和运行参数。 表2 容器启动命令 命令方式 操作步骤 运行命令 输入可执行的命令,例如“/run/server”。 若运行命令有多个,需分行书写。 说明: 多命令时,运行命令建议用/bin/sh或其他的shell,其他全部命令作为参数来传入。 运行参数 输入控制容器运行命令参数,例如--port=8080。 若参数有多个,多个参数以换行分隔。
  • 通过控制台设置 登录CCE控制台,单击集群名称进入集群。 选择左侧导航栏的“服务”,在右侧选择“路由”页签,单击右上角“创建路由”。 设置Ingress访问控制参数。 允许所有IP访问:不设置访问控制。 白名单:仅所选IP地址组可以访问ELB地址。 黑名单:所选IP地址组无法访问ELB地址。 关于其他Ingress参数配置的详情,请参见通过控制台创建ELB Ingress。 配置完成后,单击“确定”。
  • 极速文件存储挂载参数 CCE的存储插件everest在挂载极速文件存储时默认设置了如表1所示的参数。 表1 极速文件存储挂载参数 参数 参数值 描述 keep-original-ownership 无需填写 表示是否保留文件挂载点的ownership,使用该参数时,要求everest插件版本为1.2.63或2.1.2以上。 默认为不添加该参数,此时挂载极速文件存储时将会默认把挂载点的ownership修改为root:root。 如添加该参数,挂载极速文件存储时将保持文件系统原有的ownership。 vers 3 文件系统版本,目前只支持NFSv3。取值:3 nolock 无需填写 选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。 timeo 600 NFS客户端重传请求前的等待时间(单位为0.1秒)。建议值:600。 hard/soft 无需填写 挂载方式类型。 取值为hard,即使用硬连接方式,若NFS请求超时,则客户端一直重新请求直至成功。 取值为soft,即软挂载方式挂载系统,若NFS请求超时,则客户端向调用程序返回错误。 默认为hard。 sharecache/nosharecache 无需填写 设置客户端并发挂载同一文件系统时数据缓存和属性缓存的共享方式。设置为sharecache时,多个挂载共享共享同一缓存。设为nosharecache时,每个挂载各有一个缓存。默认为sharecache。 说明: 设置nosharecache禁用共享缓存会对性能产生一定影响。每次挂载都会重新获取挂载信息,会增加与NFS服务器的通信开销和NFS客户端的内存消耗,同时同客户端设置nosharecache存在cache不一致的风险。因此,应该根据具体情况进行权衡,以确定是否需要使用nosharecache选项。 除了以上参数外,您还可以设置其他的文件存储挂载参数,具体请参见挂载NFS文件系统到云服务器(Linux)。
  • 在PV中设置挂载参数 在PV中设置挂载参数可以通过mountOptions字段实现,如下所示,mountOptions支持挂载的字段请参见极速文件存储挂载参数。 使用kubectl连接集群,详情请参见通过kubectl连接集群。 在PV中设置挂载参数,示例如下: apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: everest-csi-provisioner name: pv-sfsturbo # PV的名称 spec: accessModes: - ReadWriteMany # 访问模式,极速文件存储必须为ReadWriteMany capacity: storage: 500Gi # 极速文件存储容量大小 csi: driver: sfsturbo.csi.everest.io # 挂载依赖的存储驱动 fsType: nfs volumeHandle: {your_volume_id} # 极速文件存储的ID volumeAttributes: everest.io/share-export-location: {your_location} # 极速文件存储的共享路径 everest.io/enterprise-project-id: {your_project_id} # 极速文件存储的项目ID storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner persistentVolumeReclaimPolicy: Retain # 回收策略 storageClassName: csi-sfsturbo # SFS Turbo存储类名称 mountOptions: # 挂载参数 - vers=3 - nolock - timeo=600 - hard PV创建后,可以创建PVC关联PV,然后在工作负载的容器中挂载,具体操作步骤请参见通过静态存储卷使用已有极速文件存储。 验证挂载参数是否生效。 本例中将PVC挂载至使用nginx:latest镜像的工作负载,并通过mount -l命令查看挂载参数是否生效。 查看已挂载文件存储的Pod,本文中的示例工作负载名称为web-sfsturbo。 kubectl get pod | grep web-sfsturbo 回显如下: web-sfsturbo-*** 1/1 Running 0 23m 执行以下命令查看挂载参数,其中web-sfsturbo-***为示例Pod。 kubectl exec -it web-sfsturbo-*** -- mount -l | grep nfs 若回显中的挂载信息与设置的挂载参数一致,说明挂载参数设置成功。 {您的挂载地址} on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=**.**.**.**,mountvers=3,mountport=20048,mountproto=tcp,local_lock=all,addr=**.**.**.**)
  • 解决方案 问题场景一:包管理器命令执行失败 检查到包管理器命令rpm或dpkg命令执行失败,请登录节点排查下列命令的可用性。 rpm系统: rpm -qa dpkg系统: dpkg -l 问题场景二:systemctl status命令执行失败 检查到节点systemctl status命令不可用,将影响众多检查项,请登录节点排查下列命令的可用性。 systemctl status kubelet
  • 故障定位步骤 NVML显存重映射行数查询异常 GPU驱动或GPU设备存在异常,请根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。 GPU设备DBE错误与SBE错误总数过高 GPU驱动或GPU设备存在异常,请根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。 GPU设备存在Uncorrectable ECC错误 登录GPU隔离事件发生的节点。 进入/usr/local/nvidia/bin目录,执行nvidia-smi -q命令。 若nvidia-smi命令不存在或执行失败,有可能是驱动安装未就绪导致,可以重新安装GPU驱动后,再重试。 观察执行结果中的ECC ERROR(发生ECC故障的记录)。 Correctable Error:不会影响业务,不会触发GPU隔离。 Uncorrectable Error:会导致业务中断,会触发GPU隔离。 若存在Uncorrectable Error,可以尝试通过以下手段恢复: 配置目标节点污点(taints),驱逐目标节点存量的业务负载。 重启目标节点。 若重启后仍有该现象,则需要收集nvidia-smi -q命令的输出,然后根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。 NVML获取设备UUID异常 登录GPU隔离事件发生的节点。 进入/usr/local/nvidia/bin目录。 执行nvidia-smi,观察执行结果中的设备ID,例如:00:0D.0。 若nvidia-smi命令不存在或执行失败,有可能是驱动安装未就绪导致,可以重新安装GPU驱动后,再重试。 执行lspci | grep NVIDIA,观察执行结果中的设备ID。 比对上述两者结果,若存在不匹配的现象,收集两者输出结果,然后根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。 GPU设备存在Xid错误 登录GPU隔离事件发生的节点。 执行dmesg -T | grep -i NVRM,观察结果输出。 假如存在Xid(PCI:0000:00:0x): xx格式的信息,则需要收集错误码,根据Nvidia Xid Error页面中确认详细原因。然后将详细原因和错误信息,根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。 GPU虚拟化设备可用内存远小于GPU物理显存 登录GPU虚拟化节点。 执行/usr/local/nvidia/bin/nvidia-smi,观测目标GPU卡的物理显存,记录其序号。 执行cat /proc/xgpu/{GPU卡序号}/meminfo,注意替换命令中的{GPU卡序号}为步骤2获取的GPU卡序号,观测GPU虚拟化的可用显存。 比较步骤2和步骤3的可用显存。 由于GPU厂商的驱动程序,本身就会占用一定量的物理显存,量级在300MB左右,这属于正常现象。例如Tesla T4配套510.47.03,驱动程序默认会占用280MiB;而该显存占用与厂商的驱动程序版本也有一定相关性,例如535系列驱动比470系列占用更多。 若发现GPU虚拟化的可用显存远小于GPU卡的物理显存,一般是因为存在一些非GPU虚拟化发放的容器,占用了显存。 通过CCE控制台或kubectl命令,将目标节点的GPU负载排空。 执行rmmod xgpu_km,进行GPU虚拟化模块的删除。 通过CCE控制台或kubectl命令,将目标节点的nvidia-gpu-device-plugin Pod进行删除。 等待nvidia-gpu-device-plugin Pod重建完成后,重新按照步骤2和步骤3进行结果核验。
  • 修复计划 如果您使用EulerOS 2.9的节点,请确认节点内核核版本是否满足以下要求。如节点内核版本过低,可以选择重置节点或者重新创建节点解决该问题。 已修复的内核版本如下: x86:4.18.0-147.5.1.6.h686.eulerosv2r9.x86_64 ARM: 4.19.90-vhulk2103.1.0.h584.eulerosv2r9.aarch64 K8s社区issue:https://github.com/kubernetes/kubernetes/issues/81775
  • IPVS连接复用参数带来的问题 问题1 当net.ipv4.vs.conn_reuse_mode=0时,对于端口复用的连接,IPVS不会主动进行新的调度,也并不会触发结束连接或DROP操作,新连接的数据包会被直接转发到之前使用的后端pod。如果此时后端pod已经被删除或重建就会出现异常,根据当前的实现逻辑,高并发访问Service场景下,不断有端口复用的连接请求发来,旧的转发连接不会被kube-proxy删除,导致访问Service失败。 问题2 当net.ipv4.vs.conn_reuse_mode=1时,高并发场景下发生源端口与之前链接重复的情况,不会复用链接,而是会重新进行调度。根据ip_vs_in()的处理逻辑,当开启了net.ipv4.vs.conntrack时,这种情况会先DROP掉第一个SYN包,导致SYN的重传,有1秒延迟。导致性能下降。
  • 排查项三:节点安全组是否被修改或删除 问题现象: 在CCE集群中新增节点时创建失败。 解决方法: 您可单击集群名称,查看“集群信息”页面。在“网络信息”中单击“节点默认安全组”后的按钮,检查集群的节点默认安全组是否被删除,且安全组规则需要满足集群安全组规则配置。 如果您的账号下含有多个集群,需要统一管理节点的网络安全策略,您也可以指定自定义的安全组,具体操作方法及约束限制请参见更改集群节点的默认安全组。
  • 排查项一:提示子网配额不足 问题现象: CCE集群中新增节点时无法添加新的节点,提示子网配额不足。 原因分析: 例: VPC网段为:192.168.66.0/24 子网网段为:192.168.66.0/24 当前192.168.66.0/24子网内私有IP已占用251个。 解决方法: 如需扩容需先扩容VPC。 登录控制台,在服务列表中单击“虚拟私有云 VPC”,在虚拟私有云列表中找到需要扩容的VPC,单击“操作”栏中的“编辑网段”。 如下: 修改子网掩码为16位,单击“确定”按钮。 单击VPC名称,在“基本信息”页签下单击右侧子网后的数字,在子网页面中创建新的子网规划。 返回CCE新增节点页面,选择新的子网即可创建。 扩容后原VPC内子网192.168.66.0/24网段正常使用不受影响。 创建CCE时选择新的子网网段即可,新子网网段上限也为251个私有IP,如仍无法满足业务需求,可继续新增子网。 同VPC下不同子网间内网也是可以互信通信的。
  • 注意事项 同一集群下的节点镜像保证一致,后续新建/添加/纳管节点时需注意。 新建节点时,数据盘如需分配用户空间,分配目录注意不要设置关键目录,例如:如需放到home下,建议设置为/home/test,不要直接写到/home/下。 请注意“挂载路径”不能设置为根目录“/”,否则将导致挂载失败。挂载路径一般设置为: /opt/xxxx(但不能为/opt/cloud) /mnt/xxxx(但不能为/mnt/paas) /tmp/xxx /var/xxx (但不能为/var/lib、/var/script、/var/paas等关键目录) /xxxx(但不能和系统目录冲突,例如bin、lib、home、root、boot、dev、etc、lost+found、mnt、proc、sbin、srv、tmp、var、media、opt、selinux、sys、usr等) 注意不能设置为/home/paas、/var/paas、/var/lib、/var/script、/mnt/paas、/opt/cloud,否则会导致系统或节点安装失败。
  • 排查项二:后端服务器健康检查是否有异常 在Service更新ELB后端服务器的过程中,为保证流量不中断,会先增加后端服务器,在确保新加的后端服务器可用后,再删除原先的后端服务器。 但在后端服务器配额已满的情况下,无法再新增后端服务器,会出现以上超出配额上限的错误,此时会直接更新已有的后端服务器。如果在更新Service时配置出现错误,导致更新后的后端服务器全部健康检查失败,在保证流量不中断的逻辑下,Service此时并不会删除原先正常的后端服务器,最终导致只有部分后端服务器更新为错误配置,其余后端服务器仍保持原先配置。 解决方法:在后端服务器配额已满的情况下,更新Service时需要配置正确的健康检查协议、端口,查看健康检查是否成功。
  • 问题现象 负载均衡型Service更新时出现错误,信息如下: (combined from similar events):Details:Update member of listener/pool(dc9098a3-e004-4e60-ac6c-44a9a04bd8f8/539490e1-51c2-4c09-b4df-10730f77e35f) error: Failed to create member :(error_msg":"Quota exceeded for resources: members_per_pool","error_code":"ELB.8905","request_id":"e064fd46211318ff57f455b29c07c821"},status code: 409
  • 排查项七:工作负载挂载的密钥值不符合要求 事件详情中出现以下错误: Error: failed to start container "filebeat": Error response from daemon: OCI runtime create failed: container_linux.go:330: starting container process caused "process_linux.go:381: container init caused \"setenv: invalid argument\"": unknown 出现以上问题的根因是由于工作负载中挂载了Secret,但Secret对应的值没有进行base64加密。 解决方案: 通过控制台创建Secret,Secret对应的值会自动进行base64加密。 如果通过YAML进行创建,需要手动对密钥值进行base64加密: # echo -n "待编码内容" | base64
  • 排查项二:(退出码:137)健康检查执行失败 工作负载配置的健康检查会定时检查业务,异常情况下pod会报实例不健康的事件且pod一直重启失败。 工作负载若配置liveness型(工作负载存活探针)健康检查,当健康检查失败次数超过阈值时,会重启实例中的容器。在工作负载详情页面查看事件,若K8s事件中出现“Liveness probe failed: Get http…”时,表示健康检查失败。 解决方案: 请在工作负载详情页中,切换至“容器管理”页签,核查容器的“健康检查”配置信息,排查健康检查策略是否合理或业务是否已异常。
共100000条