全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:集群检查项及修复方案

更新时间:Aug 23, 2023

容器服务平台支持集群升级检查、集群迁移检查和组件检查。本文介绍集群检查项及异常检查项修复方案。

索引

集群检查项

集群升级检查

Kubernetes自身的复杂性,以及升级K8s版本时引入的运行时变更、API废弃、特性变更等操作,导致集群升级存在较高操作风险。为保障集群平稳升级,ACK引入了集群升级前置检查。集群升级时会首先触发集群升级检查,仅当检查通过后才可以进行集群升级。

集群升级检查包含以下两类:

  • 集群资源:检查ACK Serverless集群相关的云资源,例如SLB、VPC等。

  • 集群组件:检查ACK Serverless集群配置、组件配置及应用配置,例如组件版本是否满足要求、应用是否使用过期API等。

不同的类型、版本及运行时的集群检查项有所差别。下表仅供参考,请以实际检查项为准。

类别

检查项

描述

集群资源

APIServer SLB

SLB实例是否存在。

SLB实例状态是否正常。

SLB监听(端口及协议)配置是否正常。

SLB实例后端服务器组配置是否正常。

SLB访问控制配置是否正确,若不存在,则直接通过。

VPC

VPC实例是否存在。

VPC实例是否正常。

vSwitch

交换机是否存在。

交换机是否正常。

交换机的可用IP数量大于等于2。

集群组件

Kube Proxy Master

组件是否存在。

Kube Proxy Worker

组件是否存在。

API Service

是否存在不可用的API Service。

集群组件

Terway组件版本是否符合要求。

CoreDNS组件版本是否符合要求。

Cloud Controller Manager组件版本是否符合要求。

Nginx Ingress Controller组件版本是否符合要求。

Metric Server组件版本是否符合要求。

废弃API

集群中是否使用已废弃的API。

集群配置

iptables配置

iptables配置是否正常。

操作系统

操作系统是否支持升级。

yum

yum是否正常。

Kubelet

Kubelet配置是否符合预期。

容器运行时

Docker运行时或Containerd运行时是否正常。

Manifest配置

Manifest文件是否符合预期。

集群迁移检查

在集群迁移前会触发迁移前置检查,仅当迁移检查通过后才能进行集群迁移。适用于以下场景:

ACK Serverless集群基础版迁移至ACK Serverless集群Pro版

集群迁移检查包含以下四类:

  • 集群资源:检查ACK Serverless集群相关的云资源,例如SLB、VPC等。

  • 集群组件:检查ACK Serverless集群中组件配置,例如是否存在不可用的API Service等。

不同的类型、版本及运行时的集群迁移检查项有所差别,下表仅供参考,请以实际检查项为准。

类别

检查项

描述

集群资源

APIServer SLB

SLB实例是否存在。

SLB实例状态是否正常。

SLB监听(端口及协议)配置是否正常。

SLB实例后端服务器组配置是否正常。

SLB访问控制配置是否正确。若不存在,则直接通过。

VPC

VPC实例是否存在。

VPC实例是否正常。

vSwitch

交换机是否存在。

交换机是否正常。

交换机的可用IP数量大于等于2。

集群组件

Kube Proxy Master

组件是否存在。

Kube Proxy Worker

组件是否存在。

API Service

是否存在不可用的API Service。

组件检查

组件检查适用于组件升级场景。在组件升级前首先会触发组件升级检查,仅当组件升级检查通过后才能进行组件升级。

不同的类型、版本及运行时的组件检查项有所差别,下表仅供参考,请以实际检查项为准。

类别

检查项

描述

cloud-controller-manager

Addon_CCM

升级该组件是否会导致SLB变更。

Component_Block_Version

是否可以升级CCM版本。

csi-plugin

DaemonSet_Annotation

DaemonSet的注解是否符合预期。

Csi_Driver_Attributes

CSI Driver属性是否符合要求。

csi-provisioner

Stateful_Set_Exist

是否为StatefulSet。

Deployment_Annotation

Deployment注解是否符合预期。

Storage_Class_Attributes

StorageClass属性是否符合要求。

nginx-ingress-controller

Deployment_Healthy

Nginx Ingress Deployment是否健康。

Deployment_Not_Under_HPA

Deployment是否配置HPA。

Deployment_Not_Modified

Deployment是否发生过变更。

Nginx_Ingress_Pod_Error_Log

Nginx是否存在错误日志。

LoadBalancer_Service_Healthy

Nginx Service是否健康。

Nginx_Ingress_Configuration

Ingress是否存在不兼容配置。

aliyun-acr-credential-helper

RamRole_Exist

该组件是否对AliyunCSManagedAcrRole进行授权。

ack-cost-exporter

RamRole_Exist

该组件是否对AliyunCSManagedCostRole进行授权。

异常检查项修复方案

异常检查项

修复方案

Aliyun_ARMS_CMonitor_Role权限策略不存在

为集群添加阿里云Prometheus监控授权策略。具体操作,请参见接入Kubernetes监控的手动添加ARMS和链路追踪权限策略内容。

组件版本过低

升级对应组件版本。具体操作,请参见管理组件

APIService不可用

  1. 执行以下命令,查找不可用的APIService。

    kubectl -n kube-system get apiservices |grep -i false
  2. 确认异常APIService的用途。如果无需使用,执行以下命令,删除该APIService。

    重要

    误删除APIService会导致集群异常。如果您不清楚异常APIService用途,请提交工单联系我们。

    kubectl -n kube-system delete apiservices ${your-abnormal-apiservice-name}

集群中存在废弃API

判断废弃API的来源,对废弃API采取对应处理措施。具体操作,请参见废弃API说明

废弃API说明

Kubernetes 1.20及之后版本的集群升级前检查时,支持检查废弃API信息。在检查结果的实例列表中可以看到集群使用的废弃API。

例如从Kubernetes 1.20版本升级至Kubernetes 1.22版本时,系统会扫描过去一天的审计日志,检查1.20版本集群中是否使用了废弃API。

  • 如果1.20版本集群中使用了废弃API,检查结果不会影响升级流程,仅作为提示信息。

  • 如果集群在1.22版本中继续使用废弃API,可能会有安全隐患。

废弃API根据请求来源(User Agent)分为以下四类,建议在升级前,通过以下表格中的类别判断废弃API的来源,对废弃API采取对应处理措施。

类别

处理建议

举例

core

Kubernetes核心组件:ACK会在集群升级时由后台自动升级,检查页面不会展示,不需要您进行升级。

apiserver、scheduler、kube-controller-manager

ack

ACK组件:由ACK提供的组件,需要您自行判断升级时机,ACK会展示并引导您在组件管理页面升级组件。

说明
  • 您可以在容器服务管理控制台运维管理 > 组件管理页面升级组件,组件升级完成后的第二天,废弃API将不再展示。

  • 在某些情况下,CoreDNS组件可能会在1.24及以上版本的K8s集群中使用废弃API。如果检查结果中包含coredns,请参考为什么CoreDNS正在使用废弃的API?进行处理。

  • 废弃API仅作为提示信息,不影响您的升级流程。集群升级后,会将已经废弃的API资源替换为新的资源。建议您在集群升级后不要使用废弃的API创建资源,避免造成安全隐患。

metrics-server、nginx-ingress-controller、coredns

opensource

开源组件:社区的部分开源组件,ACK会展示清单,但需要您自行判断是否升级,自行完成升级。如果有遗漏,会显示在unknown分类中。

说明

废弃API仅作为提示信息,不影响您的升级流程。请您按需对组件进行升级,避免影响部分功能。

rancher、elasticsearch-operator等

unknown

未知来源:以上规则均无法匹配时,会标记为未知来源,ACK会展示清单,但需要您自行判断是否升级,自行完成升级。

说明

废弃API仅作为提示信息,不影响您的升级流程。请您按需对组件进行升级,避免影响部分功能。

kubectl、agent、Go-http-client、okhttp