连接器状态故障排除
本指南提供全面的信息,帮助您根据连接器的状态条件诊断和解决常见问题。
目录
检查连接器状态
要查看连接器的完整状态信息,包括所有条件,请执行:
kubectl describe connector <connector-name> -n <namespace>
有关更详细的信息,包括完整的状态对象和条件:
kubectl get connector <connector-name> -n <namespace> -o yaml
这些命令将显示所有条件状态,便于识别哪些特定条件出现故障。
故障排除特定条件
Ready = False
这是一个摘要条件,只有在所有其他条件为 True 时才为 True。
故障排除步骤:
- 检查所有其他条件,以识别哪个特定条件为 False
- 根据以下指南集中解决特定的失败条件
- 验证连接器规范配置是否正确
ConnectorClassReady = False
指示连接器类不存在或无效。
故障排除步骤:
- 确认 ConnectorClass 存在:
kubectl get connectorclass <class-name>
- 验证连接器配置是否正确:
kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.spec.connectorClassName}'
- 检查连接器类定义:
kubectl get connectorclass <class-name> -o yaml
常见原因:
- ConnectorClass 名称拼写错误
- ConnectorClass 未安装
- 使用了来自不同命名空间的 ConnectorClass(ConnectorClasses 是集群范围内的)
示例错误:
conditions:
- lastTransitionTime: "2023-05-15T10:25:30Z"
message: "connectorclass.connectors.alauda.io \"git\" not found"
reason: ConnectorClassNotFound
status: "False"
type: ConnectorClassReady
解决方案:
安装缺失的 ConnectorClass 或更正连接器配置中的类名。
SecretReady = False
指示身份验证密钥存在问题。
故障排除步骤:
- 确认密钥存在:
kubectl get secret <secret-name> -n <namespace>
- 验证密钥具有正确的身份验证方法类型:
kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.type}'
- 检查密钥数据是否包含所需字段:
kubectl get secret <secret-name> -n <namespace> -o yaml
常见原因:
- 密钥不存在
- 密钥在错误的命名空间中
- 密钥类型错误
- 密钥缺少所需字段
- RBAC 阻止访问密钥
示例错误:
conditions:
- lastTransitionTime: "2023-05-15T10:27:15Z"
message: "secrets \"my-git-creds\" not found"
reason: SecretNotFound
status: "False"
type: SecretReady
解决方案:
创建缺失的密钥或更正连接器配置中的密钥引用。
LivenessReady = False
指示目标服务不可达。
故障排除步骤:
- 验证连接器的地址是否正确:
kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.spec.address}'
- 测试与目标服务的连通性:
kubectl run -it --rm --restart=Never curl --image=curlimages/curl -n <namespace> -- curl -v <address>
- 检查网络策略:
kubectl get networkpolicies -n connectors-system
常见原因:
- 目标地址不正确
- 目标服务已关闭
- 网络策略阻止访问
- DNS 解析问题
- 防火墙阻止连接
示例错误:
conditions:
- lastTransitionTime: "2023-05-15T10:29:00Z"
message: "Get \"https://github.invalid.com\": dial tcp: lookup github.invalid.com: no such host"
reason: ConnectionFailed
status: "False"
type: LivenessReady
解决方案:
将地址更新为有效且可达的 URL,或修复网络连接问题。
AuthReady = False
指示提供的凭据身份验证失败。
故障排除步骤:
- 验证密钥中的凭据:
kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.data.username}' | base64 -d
kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.data.password}' | base64 -d
- 检查身份验证参数是否正确配置:
kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.spec.auth}'
- 手动测试身份验证:
kubectl run -it --rm --restart=Never curl --image=curlimages/curl -n <namespace> -- \
curl -v -u <username>:<password> <address>
常见原因:
- 用户名/密码不正确
- 令牌已过期
- 权限不足
- 身份验证类型不匹配
- 存储库/资源不存在
示例错误:
conditions:
- lastTransitionTime: "2023-05-15T10:32:20Z"
message: "Authentication failed: status code 401"
reason: AuthenticationFailed
status: "False"
type: AuthReady
解决方案:
在密钥中更新凭据或验证用户对资源拥有适当的权限。
ProxyServiceReady = False
指示代理服务配置存在问题。
故障排除步骤:
- 检查代理服务是否存在:
kubectl get service -n connectors-system -l app.kubernetes.io/name=connectors-proxy
- 验证代理服务是否具有端点:
kubectl get endpoints -n connectors-system connectors-proxy-service
- 检查代理 Pod 状态:
kubectl get pods -n connectors-system -l app.kubernetes.io/name=connectors-proxy
常见原因:
- 代理服务未部署
- 代理 Pod 未运行
- 服务配置错误
- 网络策略阻止代理访问
- 资源限制(CPU/内存)
示例错误:
conditions:
- lastTransitionTime: "2023-05-15T10:35:10Z"
message: "Service connectors-proxy-service not found in namespace connectors-system"
reason: ProxyServiceNotFound
status: "False"
type: ProxyServiceReady
解决方案:
部署 connectors-proxy 组件或修复服务配置。
高级故障排除
检查组件日志
要进行更深入的故障排除,请检查控制器组件的日志:
# 控制器管理器日志
kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-controller-manager
# 代理服务日志
kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-proxy
# CSI 驱动日志
kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-csi
其他资源