更新时间:2023-09-07 gmt 08:00

附着集群接入失败如何解决?-凯发k8国际娱乐官网入口

问题描述

本文为集群接入的异常排查思路以及凯发k8国际娱乐官网入口的解决方案。集群接入ucs可能出现的异常情况如下:

  • 在ucs控制台中注册集群后,已在集群中部署proxy-agent,但界面一直提示“等待接入”,或在接入超时后提示“注册失败”。

    如集群已处于“注册失败”状态,请单击右上角按钮重新注册集群,然后根据排查思路进行问题定位。

  • 已接入的集群状态显示为“不可用”,请参考本文档中的排查思路解决。

排查思路

集群处于异常状态的排查思路大致可根据报错信息进行定位,如表1所示。

表1 报错信息说明

报错信息

说明

推荐排查项

“currently no agents available, please make sure the agents are correctly registered”

出现该错误的原因大概率为接入集群中的proxy-agent运行状态异常或网络异常。

“please check the health status of kube apiserver: ...”

出现该错误的原因大概率为集群内部kube-apiserver无法访问。

“cluster responded with non-successful status code: ...”

出现该错误的原因可能是多样的,请根据实际状态码进行排查。

例如状态码401表示用户没有访问权限,可能的原因是集群认证信息过期。

“cluster responded with non-successful message: ...”

出现该错误的原因可能是多样的,请根据实际信息进行排查。

例如“get "https://172.16.0.143:6443/readyz?timeout=32s\": context deadline exceeded”显示访问apiserver超时,可能是因为集群apiserver发生故障。

-

“current cluster version is not supported in ucs service.”

出现该错误的原因是集群版本不符合要求:接入ucs服务的kubernetes集群版本必须为1.19及以上。

-

排查项一:proxy-agent的运行状态

集群从ucs注销后,原有proxy-agent配置文件中包含的认证信息将会失效,请同时删除集群中已部署的proxy-agent实例。如需再次接入ucs,必须重新从ucs控制台下载proxy-agent配置文件进行部署。

  1. 登录目标集群master节点。
  2. 查看集群代理部署状态。

    kubectl -n kube-system get pod | grep proxy-agent

    如果部署成功,预期输出如下:

    proxy-agent-*** 1/1 running 0 9s

    说明proxy-agent部署正常,如proxy-agent没有处于正常running状态,可以使用kubectl -n kube-system describe pod proxy-agent-***查看pod的告警信息,详细排查思路可参考。

    proxy-agent默认部署两个pod实例,存在一个pod正常running即可使用基本功能,但是高可用性无法保证。

  3. 打印proxy-agent的pod日志,查看代理程序是否可以连接到ucs。

    kubectl -n kube-system logs proxy-agent-*** | grep "start serving"

    如没有“start serving”的日志打印但是proxy-agent实例状态正常,则需要继续检查其他排查项。

排查项二:集群与ucs网络连接状态

公网接入:

  1. 检查集群是否绑定公网ip或配置公网nat网关。
  2. 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系凯发k8国际娱乐官网入口的技术支持获取目的地址和端口号。
  3. 解决网络问题后,删掉已有的proxy-agent pod使其重新生成pod资源,查看新建pod的日志中是否存在“start serving”的日志打印。

    kubectl -n kube-system logs proxy-agent-*** | grep "start serving"

  4. 日志正常打印后,刷新ucs控制台页面,查看集群是否正常连接。

私网接入:

  1. 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系凯发k8国际娱乐官网入口的技术支持获取目的地址和端口号。
  2. 排除集群与ucs和idc/第三方云之间的网络连接故障。
    根据网络连接方式不同,请参考以下文档进行故障排除。
    • 云专线(dc):请参考。
    • 虚拟专用网络(vpn):请参考。
  3. 排除集群私网接入的vpcep故障,vpcep状态需为“已接受”。如vpcep被误删除,则需重新创建,请参见。
    图1 vpcep状态
  4. 解决网络问题后,删掉已有的proxy-agent pod使其重新生成pod资源,查看新建pod的日志中是否存在“start serving”的日志打印。

    kubectl -n kube-system logs proxy-agent-*** | grep "start serving"

  5. 日志正常打印后,刷新ucs控制台页面,查看集群是否正常连接。

排查项三:集群kube-apiserver状态

集群接入ucs时,可能出现如图2所示的异常信息,错误显示“please check the health status of kube apiserver: ...”。

图2 kube-apiserver状态异常

如出现以上信息,说明proxy-agent无法和集群apiserver进行正常通信,由于不同用户待接入集群的网络环境配置不同,这里无法提供统一的凯发k8国际娱乐官网入口的解决方案,需要您自行解决集群网络问题后进行重试。

  1. 登录ucs控制台,在左侧导航栏选择“容器舰队”页面。
  2. 登录目标集群master节点,查看apiserver地址。

    kubectl get po `kubectl get po -nkube-system | grep kube-apiserver | awk {'print $1'}` -nkube-system -oyaml | grep advertise-address.endpoint

  3. 查看集群的kubeconfig文件中“clusters.cluster.server”字段是否与2中查询的集群apiserver地址一致。

    如不一致,可能是集群提供商做了apiserver的地址转换,请替换kubeconfig文件中的集群apiserver地址后,在ucs控制台重新注册集群,并重新部署proxy-agent。

    若kubeconfig文件中“clusters.cluster.server”字段为“https://kubernetes.default.svc.cluster.local:443”可无需替换,该域名为kubernetes服务(即apiserver的clusterip)的本地域名。

  4. 检查proxy-agent的pod是否可以访问待接入集群的apiserver。

    参考命令:

    kubectl exec -ti proxy-agent-*** -n kube-system /bin/bash
    # 访问集群的kube-apiserver
    curl -kv https://*.*.*.*:*/readyz

    如无法正常访问,请解决集群网络问题后,在ucs控制台重新注册集群,并重新部署proxy-agent。

排查项四:集群认证信息变化

如错误显示“cluster responded with non-successful status: [401][unauthorized]”,可能是集群认证信息过期或者发生了变化,从而导致ucs无法访问集群kube-apiserver,请您注销该集群,使用新的kubeconfig文件重新注册集群,并重新部署proxy-agent。

  • 建议您使用永久的kubeconfig文件,防止由于集群认证信息过期导致ucs无法管理集群。
  • 部分厂商提供的第三方集群在欠费后重新续费会导致认证信息变化,请尽量避免集群欠费的情况发生。
分享:

more

网站地图