调试集群的常见 CLI 问题

虚拟私有云 传统基础设施

查看 CLI 连接问题或命令失败的以下常见原因。

防火墙阻止 CLI 命令运行

从 CLI 运行 ibmcloudkubectloccalicoctl 命令时,它们会失败。

您可能具有企业网络策略,这些策略灰阻止通过代理或防火墙从本地系统访问公共端点。

允许 TCP 访问以使 CLI 命令能够运作

此任务需要集群的 管理员 IBM Cloud IAM 平台访问角色

kubectloc 命令不起作用

当您对群集运行 kubectloc 命令时,您的命令会出现类似以下示例的错误信息。

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

安装与集群版本匹配的 CLI 版本

如果有不同版本或不同容器平台(如 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 集群

  1. 通过在控制台中或使用 cluster lsworker ls 命令来查看集群和工作程序节点的详细信息,检查集群和工作程序节点的更新是否可用。 如果可用,请将集群和工作程序节点更新到最新版本
  2. 删除 VPN pod,重新启动 VPN pod。 这将安排另一个 VPN pod。 在其 STATUSRunning 时,尝试连接先前无法连接的 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 同步。

开始之前:

访问 Red Hat OpenShift 集群

要同步用户的 IAM 信息,您可以使用 2 选项:

  • 从 Red Hat OpenShift 控制台登录您的集群。
  • 通过运行 ibmcloud oc cluster config --cluster CLUSTER 命令来设置集群的命令行上下文。

如果将 API 密钥用于功能标识或其他用户,请确保以正确的用户身份登录。

受影响的用户完成 IAM 同步后,集群管理员可以通过使用 oc get users 命令列出用户来验证该用户是否存在于集群中。

缺少项目或 ockubectl 命令失败

虚拟私有云 传统基础设施

你看不到你能访问的所有项目。 尝试运行 ockubectl 命令时,看到类似以下内容的错误。

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 并再试一次。