
# 附着集群接入失败怎么办？
#### 问题描述
本文为集群接入的异常排查思路以及解决方案。集群接入UCS可能出现的异常情况如下：
- 在UCS控制台中注册集群后，已在集群中部署proxy-agent，但界面一直提示"等待接入"，或在接入超时后提示"注册失败"。
  ![](https://support.huaweicloud.com/ucs_faq/public_sys-resources/note_3.0-zh-cn.png)
  如集群已处于"注册失败"状态，请单击右上角![](https://support.huaweicloud.com/ucs_faq/zh-cn_image_0000001300113678.png "点击放大")按钮重新注册集群，然后根据[排查思路]进行问题定位。
  
- 已接入的集群状态显示为"不可用"，请参考本文档中的[排查思路]解决。
 
 #### 排查思路
集群处于异常状态的排查思路大致可根据报错信息进行定位，如[表1]所示。
 表1报错信息说明 
| 报错信息                                                                                  | 说明                                                                                                                                                                                   | 推荐排查项                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| "currently no agents available, please make sure the agents are correctly registered" | 出现该错误的原因大概率为接入集群中的proxy-agent运行状态异常或网络异常。                                                                                                                                            | - [排查项一：proxy-agent的运行状态]  - [排查项二：集群与UCS网络连接状态]   |
| "please check the health status of kube apiserver: ..."                               | 出现该错误的原因大概率为集群内部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的运行状态
![](https://support.huaweicloud.com/ucs_faq/public_sys-resources/notice_3.0-zh-cn.png)
集群从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部署失败怎么办？](https://support.huaweicloud.com/ucs_faq/ucs_faq_0014.html)。
   ![](https://support.huaweicloud.com/ucs_faq/public_sys-resources/note_3.0-zh-cn.png)
   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. 检查集群安全组的出方向是否放通。如需对出方向做访问控制，请联系技术支持获取目的地址和端口号。
3. 解决网络问题后，删掉已有的proxy-agent Pod使其重新生成Pod资源，查看新建Pod的日志中是否存在"Start serving"的日志打印。 
   **kubectl -n kube-system logs proxy-agent-\*\*\* \| grep "Start serving"**
   
   
4. 日志正常打印后，刷新UCS控制台页面，查看集群是否正常连接。
**私网接入：**
1. 检查集群安全组的出方向是否放通。如需对出方向做访问控制，请联系技术支持获取目的地址和端口号。
2. 排除集群与UCS和IDC/第三方云之间的网络连接故障。 
   根据网络连接方式不同，请参考以下文档进行故障排除。
   - 云专线（DC）：请参考[故障排除](https://support.huaweicloud.com/trouble-dc/zh-cn_topic_0167035574.html)。
   
   - 虚拟专用网络（VPN）：请参考[故障排除](https://support.huaweicloud.com/trouble-vpn/vpn_06_0000.html)。
    
   
   
3. 排除集群私网接入的VPCEP故障，VPCEP状态需为"已接受"。如VPCEP被误删除，则需重新创建，请参见[私网接入的集群误删除VPCEP后如何恢复](https://support.huaweicloud.com/ucs_faq/ucs_faq_0011.html)。
   
   图1VPCEP状态   
   ![](https://support.huaweicloud.com/ucs_faq/zh-cn_image_0000001920035142.png "点击放大")
   
   
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: ..."。
图2kube-apiserver状态异常   
![](https://support.huaweicloud.com/ucs_faq/zh-cn_image_0000001311123897.png "点击放大")
如出现以上信息，说明proxy-agent无法和集群apiserver进行正常通信，由于不同用户待接入集群的网络环境配置不同，这里无法提供统一的解决方案，需要您自行解决集群网络问题后进行重试。
1. 登录[UCS控制台](https://console.huaweicloud.com/ucs/?#/aether/dashboard)，在左侧导航栏选择"容器舰队"页面。
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。
   ![](https://support.huaweicloud.com/ucs_faq/public_sys-resources/note_3.0-zh-cn.png)
   若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。
![](https://support.huaweicloud.com/ucs_faq/public_sys-resources/note_3.0-zh-cn.png)
- 建议您使用永久的KubeConfig文件，防止由于集群认证信息过期导致UCS无法管理集群。
- 部分厂商提供的第三方集群在欠费后重新续费会导致认证信息变化，请尽量避免集群欠费的情况发生。
 
