调试集群的常见 CLI 问题
虚拟私有云 传统基础设施
查看 CLI 连接问题或命令失败的以下常见原因。
防火墙阻止 CLI 命令运行
从 CLI 运行 ibmcloud、kubectl、oc 或 calicoctl 命令时,它们会失败。
您可能具有企业网络策略,这些策略灰阻止通过代理或防火墙从本地系统访问公共端点。
此任务需要集群的 管理员 IBM Cloud IAM 平台访问角色。
kubectl 或 oc 命令不起作用
当您对群集运行 kubectl 或 oc 命令时,您的命令会出现类似以下示例的错误信息。
No resources found.
Error from server (NotAcceptable): unknown (get nodes)
invalid object doesn't have additional properties
error: No Auth Provider found for name "oidc"
您的 kubectl 版本与集群版本不同。
Kubernetes 不支持 kubectl 客户端版本与服务器版本相差 2 个或更多版本(n +/- 2)。 如果您使用社区 Kubernetes 集群,那么还可能具有 kubectl 的 Red Hat OpenShift 版本,这不适用于社区
Kubernetes 集群。
要对照群集服务器版本检查客户端 kubectl 版本,请运行 oc version --short。
如果有不同版本或不同容器平台(如 Red Hat OpenShift )的多个群集,请将每个 kubectl 版本的二进制文件下载到单独的目录中。 然后,您可以在本地命令行界面(CLI)配置文件中设置一个别名,指向与您要使用的集群 kubectl 版本相匹配的 kubectl 二进制文件目录,也可以使用 brew switch kubernetes-cli <major.minor> 等工具。
尝试连接到 pod 时超时
您尝试连接到 pod,例如使用 oc exec 登录或使用 oc logs 获取日志。 pod 运行正常,但您会看到与下例类似的错误信息。
Error from server: Get https://<10.xxx.xx.xxx>:<port>/<address>: dial tcp <10.xxx.xx.xxx>:<port>: connect: connection timed out
VPN 服务器遇到配置问题,无法从其内部地址访问 pod。
开始之前 访问 Red Hat OpenShift 集群。
- 通过在控制台中或使用
cluster ls或worker ls命令来查看集群和工作程序节点的详细信息,检查集群和工作程序节点的更新是否可用。 如果可用,请将集群和工作程序节点更新到最新版本。 - 删除 VPN pod,重新启动 VPN pod。 这将安排另一个 VPN pod。 在其 STATUS 为 Running 时,尝试连接先前无法连接的 pod。
oc delete pod -n kube-system -l app=vpn
尝试通过 oc login 登录到 Red Hat OpenShift 集群时发生 500 错误
当您首次尝试通过 oc login 登录 Red Hat OpenShift 群集时,会看到与以下示例类似的错误消息。
$ oc login SERVER -u apikey -p <APIKEY>
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others.
Use insecure connections? (y/n): y
Error from server (InternalError): Internal error occurred: unexpected response: 500
最近对 IAM 用户角色的一些更改尚未同步到 Red Hat OpenShift 集群。
将 IAM 用户信息同步到 Red Hat OpenShift 集群。 执行初始用户同步后,应自动执行进一步的 RBAC 同步。
开始之前:
要同步用户的 IAM 信息,您可以使用 2 选项:
- 从 Red Hat OpenShift 控制台登录您的集群。
- 通过运行
ibmcloud oc cluster config --cluster CLUSTER命令来设置集群的命令行上下文。
如果将 API 密钥用于功能标识或其他用户,请确保以正确的用户身份登录。
受影响的用户完成 IAM 同步后,集群管理员可以通过使用 oc get users 命令列出用户来验证该用户是否存在于集群中。
缺少项目或 oc 和 kubectl 命令失败
虚拟私有云 传统基础设施
你看不到你能访问的所有项目。 尝试运行 oc 或 kubectl 命令时,看到类似以下内容的错误。
No resources found.
Error from server (Forbidden): <resource> is forbidden: User "IAM#user@email.com" can't list <resources> at the cluster scope: no RBAC policy matched
您需要为群集下载 admin 配置文件,才能运行需要 cluster-admin 群集角色的命令。
运行 ibmcloud oc cluster config --cluster <cluster_name_or_ID> --admin 并再试一次。