本文主要为您介绍集群管理常见问题。

集群创建失败

查看失败原因。
您可以通过查看集群的创建事件来查看集群创建失败的原因。
  1. 登录 ROS 管理控制台
  2. 选择集群所在的地域,选择所需的集群并单击右侧的管理,单击左侧导航栏中的事件 ,将鼠标移动到失败事件上查看具体的失败报错信息。
    查看失败原因

    上图中的报错信息显示由于 VPC 达到配额导致集群创建失败。

  3. 您可以参考以下失败异常码及解决方法进行修复。
    • Resource CREATE failed: ResponseException: resources.k8s_SNat_Eip: Elastic IP address quota exceeded Code: QuotaExceeded.Eip

      解决方法:

      释放多余的 EIP 或者提交 VPC 工单提高 EIP 限额。

    • Resource CREATE failed: ResponseException: resources.k8s_master_slb_internet: The maximum number of SLB instances is exceeded. Code: ORDER.QUANTITY_INVALID

      解决方法:

      释放多余的 SLB 实例或者提交 SLB 工单提高 SLB 限额。

    • Resource CREATE failed: ResponseException: resources.k8s_vpc: VPC quota exceeded. Code: QuotaExceeded.Vpc

      解决方法:

      释放多余的 VPC 或者提交 VPC 工单提高 VPC 限额。

    • Status Code: 403 Code: InvalidResourceType.NotSupported Message: This resource type is not supported;

      解决方法:

      ECS 没有库存或者类型不支持,请选择其他 ECS 规格重试。

    • Resource CREATE failed: ResponseException: resources.k8s_master_1: The specified image does not support cloud-init. Code: ImageNotSupportCloudInit

      解决方法:

      使用自定义镜像创建集群,自定义镜像必须是基于最新的 CentOS 镜像。

    • Resource CREATE failed: ResponseException: resources.k8s_nodes: The resource is out of stock in the specified zone. Please try other types, or choose other regions and zones. Code: OperationDenied.NoStock

      解决方法:

      当前所选实例规格已售罄,请选择其他可用区或实例规格。

    • Resource CREATE failed: ResponseException: resources.k8s_NAT_Gateway: A route entry already exists, which CIDR is '0.0.0.0/0' Code: RouterEntryConflict.Duplicated

      解决方法:

      当前 VPC 路由表内已存在默认路由,请移除默认路由,或取消勾选为专有网络创建 SNAT后重试。

    • Resource CREATE failed: ResponseException: resources.KubernetesWorkerRole: The number of role is limited to 200. Code: LimitExceeded.Role

      解决方法:

      RAM 角色数量已达到配额限制,请清理部分角色或提交 RAM 工单提高配额。

    • Resource CREATE failed: ResponseException: resources.k8s_NAT_Gateway: The Account failed to create order. Code: OrderFailed

      解决方法:

      下单失败,请提交工单咨询。

    • Resource CREATE failed: ResponseException: resources.k8s_master_1: This operation is forbidden by Aliyun RiskControl system. Code: Forbidden.RiskControl

      解决方法:

      您的账户出现异常,详情请联系客服

    • Resource CREATE failed: ResponseException: resources.k8s_master_slb_internet: Your account does not have enough balance. Code: PAY.INSUFFICIENT_BALANCE

      解决方法:

      创建按量付费实例需要您账户余额大于100元,请先充值。

    • Resource CREATE failed: ResponseException: resources.k8s_nodes: Your account does not have enough balance. Code: InvalidAccountStatus.NotEnoughBalance

      解决方法:

      创建按量付费实例需要您账户余额大于100元,请先充值。

    • Resource CREATE failed: WaitConditionFailure: resources.k8s_node_cloudinit_wait_cond: See output value for more details.

      解决方法:

      配置集群出错,请稍后重试或提交工单咨询。

    • Resource CREATE failed: WaitConditionTimeout: resources.k8s_master1_cloudinit_wait_cond: 0 of 2 received:

      解决方法:

      配置集群出错,请稍后重试或提交工单咨询。

    • Resource CREATE failed: ResponseException: resources.k8s_master_1: The request processing has failed due to some unknown error. Code: UnknownError

      解决方法:

      未知错误,请稍后重试或提交工单咨询。

    • Resource CREATE failed: ResponseException: resources.k8s_nodes: The request processing has failed due to some unknown error. Code: UnknownError

      解决方法:

      未知错误,请稍后重试或提交工单咨询。

删除 Kubernetes 集群失败:ROS stack 无法删除

用户在 ROS 创建的资源下手动添加了一些资源(例如在 ROS 创建的 VPC 下手动添加了一个 VSwitch),ROS 是没有权限删除这些资源的。这就会导致 ROS 删除 Kubernetes 资源时无法处理该 VPC,最终导致删除失败。
说明 有关创建 Kubernetes 集群时 ROS 自动创建的资源,参见创建Kubernetes 集群
  1. 集群删除失败时(集群的状态显示删除失败),跳转到 ROS 管理控制台
    失败报错
  2. 选择集群所在的地域,找到集群对应的资源栈 k8s-for-cs-{cluster-id},可以看到其状态为删除失败
    失败显示
  3. 单击资源栈的名称进入资源栈详情页面,单击左侧导航栏中的资源
    您可以看到哪些资源删除失败了。本示例中负载均衡下的 VSwitch 删除失败。
    失败定位
  4. 进入删除失败的资源所在产品的控制台,并找到该资源。
    本示例中,登录 VPC 管理控制台,找到集群所在的 VPC,并在该 VPC 下找到删除失败的 VSwitch。
    vswitch
  5. 单击 VSwitch 右侧的删除 尝试手动删除。
    本示例中,由于 VSwitch 下还有资源未释放,所以删除失败。
    错误提示
    手动释放该 VSwitch 下的资源,然后再次尝试删除该 VSwitch。
  6. 使用类似的方法手动删除 Kubernetes 集群下所有删除失败的资源,然后再次尝试删除 Kubernetes 集群。

收集 Kubernetes 诊断信息

当Kubernetes集群出现问题,或者节点异常时,您需要收集Kubernetes诊断信息。
说明
  • 当集群异常时,需要在master节点完成收集。
  • 当worker节点异常时,则需要在master节点和异常的worker节点上完成收集。

完成以下步骤在master/worker节点收集诊断信息。

  1. 在 master/worker节点下载诊断脚本,并增加运行权限。
    curl -o /usr/local/bin/diagnose_k8s.sh http://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh
    chmod u+x /usr/local/bin/diagnose_k8s.sh
  2. 执行诊断脚本。
    diagnose_k8s.sh
     ......
     + echo 'please get diagnose_1514939155.tar.gz for diagnostics'   ##每次执行诊断脚本,产生的日志文件的名称不同
     please get diagnose_1514939155.tar.gz for diagnostics
     + echo '请上传 diagnose_1514939155.tar.gz'
     请上传 diagnose_1514939155.tar.gz
  3. 列出并上传产生的日志文件。
    cd /usr/local/bin
    ls -ltr|grep diagnose_1514939155.tar.gz           ##注意替换为生成的日志文件名

排查Kubernetes管控集群链路问题

控制台访问超时,或者打不开。例如,单击集群 > 命名空间时,出现如下图所示报错。访问报错
可能原因:
  • SLB被误删
  • 内网SLB配置了ACL
  • 专有版Kubernetes集群Master节点被误删
  • 专有版Kubernetes集群Master节点的安全组配置了白名单
  1. 通过 kubectl 连接 Kubernetes 集群
  2. 在集群内节点上,执行kubectl get ns ,查看返回结果。
    如下图所示表示返回结果正常。返回结果
    • 返回结果显示正常,执行下一步。
    • 返回结果异常或为空,则为集群内部问题。请执行步骤4
  3. 在 Kubernetes 菜单下, 单击左侧导航栏中集群 > 命名空间,查看命名空间是否显示正常。
    如下图所示表示命名空间显示异常。命名空间异常
    • 正常,说明管控链路正常,操作结束。
    • 异常,请执行步骤5
  4. 在控制台单击概览,查看概览页面。
    如下图所示表示无法查看节点状态。
    • 可以看到节点状态,组件状态,warning事件,请根据提示信息进行修复。操作结束。
    • 否则,在节点上用kubectl命令查询节点/组件状态。
    如果以上操作仍然不能解决,请继续执行下一步操作。
  5. 登录SLB控制台,单击左侧导航栏中实例 > 实例管理,找到并单击目标实例,查看监听端口、公网/内网SLB及访问控制设置等信息是否正确。
    您可以分别通过如下操作进行查看:
    • 单击监听页签,查看监听端口是否为6443。
      如下图所示表示监听端口正确。
    • 单击默认服务器组页签,查看公网/内网SLB是否正确。
      如下图所示表示公网/内网SLB显示正确。
    • 单击监听页签,在操作列选择更多 > 访问控制设置,查看访问控制设置是否正确。
      如下图所示,访问控制未启用,或者启用访问控制,且100.104.0.0/16网段已加入白名单,均设置正确。未启用acl启用acl

    如果以上配置不正确,请参考示例截图进行配置。