通过CloudShell管理集群出现超时问题
更新时间:
问题描述
阿里云提供云命令行工具CloudShell,方便用户使用网页版命令行工具管理云资源。容器服务集成了CloudShell,所以用户可以通过此工具管理集群。在用户使用CloudShell管理集群时,可能会出现如下超时错误。
Unable to connect to the server: dial tcp XX.XX.XX.XX:6443: i/o timeout
问题原因
容器服务与CloudShell集成,在CloudShell环境中安装kubectl工具并配置kubeconfig文件。kubectl使用kubeconfig文件中定义的API Server公网连接端点与集群通信。如果在创建集群的时候,未开启API Server公网访问功能,则用户无法通过CloudShell管理集群。
解决方案
在未开启API Server公网访问功能的情况下,用户可以通过给集群内网SLB绑定EIP的方式赋予集群API Server公网访问能力。同时,因为API Server的证书使用内网SLB地址且无法更改,所以集群客户端只有在不检查API Server证书的情况下,使用kubeconfig访问集群。
- 在专有网络控制台申请弹性公网IP。
- 登录容器服务控制台,在侧边栏选择 集群列表,单击集群名称进入集群管理页面。
- 记录API Server内网连接端点IP地址。
- 登录负载均衡控制台,使用内网连接端点IP地址,查找集群内网SLB,并绑定第一步申请的弹性公网IP。
- 登录容器服务控制台,打开CloudShell界面,按照如下格式修改
~/.kube/config
配置文件。clusters:
- cluster:
server: https://[$Public_IP]:6443
insecure-skip-tls-verify: true注:
- [$Public_IP]为SLB绑定的EIP地址。
- 开启insecure-skip-tls-verify选项。由于容器服务默认的证书中不包含用户自添加的SLB,需跳过TLS检验。
- 确认可正常使用CloudShell管理集群。
适用于
- 容器服务Kubernetes标准版
- 容器服务Kubernetes托管版
- 容器服务Kubernetes Serverless版
文档内容是否对您有帮助?