通过kubectl连接集群-九游平台
操作场景
本文将以cce standard集群为例,介绍如何通过kubectl连接cce集群。
权限说明
kubectl访问cce集群是通过集群上生成的配置文件(kubeconfig)进行认证,kubeconfig文件内包含用户信息,cce根据用户信息的权限判断kubectl有权限访问哪些kubernetes资源。即哪个用户获取的kubeconfig文件,kubeconfig就拥有哪个用户的信息,这样使用kubectl访问时就拥有这个用户的权限。
用户拥有的权限请参见集群权限(iam授权)与命名空间权限(kubernetes rbac授权)的关系。
使用kubectl连接集群
若您需要从客户端计算机连接到kubernetes集群,可使用kubernetes命令行客户端kubectl,您可登录cce控制台,单击待连接集群名称,在集群总览页面查看访问地址以及kubectl的连接步骤,如图1所示。
- 内网访问:访问集群的客户端机器需要位于集群所在的同一vpc内。
- 公网访问:访问集群的客户端机器需要具备访问公网的能力,并为集群绑定公网地址。
通过“公网访问”方式访问集群,您需要在总览页中的“连接信息”版块为集群绑定公网地址,如图1所示。绑定公网集群的kube-apiserver将会暴露到互联网,存在被攻击的风险,建议对kube-apiserver所在节点的eip配置ddos高防服务或。
图1 集群连接信息
您需要先下载kubectl以及配置文件,复制到您的客户端机器,完成配置后,即可以访问kubernetes集群。使用kubectl连接集群的步骤如下:
- 下载kubectl
您需要准备一台可访问公网的客户端计算机,并通过命令行方式安装kubectl。如果已经安装kubectl,则跳过此步骤,您可执行kubectl version命令判断是否已安装kubectl。
本文以linux环境为例安装和配置kubectl,详情请参考。
- 登录到您的客户端机器,下载kubectl。
cd /home curl -lo https://dl.k8s.io/release/{v1.25.0}/bin/linux/amd64/kubectl
其中{v1.25.0}为指定的版本号,请根据集群版本进行替换。
- 安装kubectl。
chmod x kubectl mv -f kubectl /usr/local/bin
- 登录到您的客户端机器,下载kubectl。
- 获取kubectl配置文件
在集群总览页中的“连接信息”版块,单击kubectl后的“配置”按钮,查看kubectl的连接信息,并在弹出页面中选择“内网访问”或“公网访问”,然后下载对应的配置文件。
图2 下载配置文件
- kubectl配置文件(kubeconfig)用于对接认证集群,请您妥善保存该认证凭据,防止文件泄露后,集群有被攻击的风险。
- iam用户下载的配置文件所拥有的kubernetes权限与cce控制台上iam用户所拥有的权限一致。
- 如果linux系统里面配置了kubeconfig环境变量,kubectl会优先加载kubeconfig环境变量,而不是$home/.kube/config,使用时请注意。
- 配置kubectl
以linux环境为例配置kubectl。
- 登录到您的客户端机器,复制2中下载的配置文件(以kubeconfig.yaml为例)到您客户端机器的/home目录下。
- 配置kubectl认证文件。
cd /home mkdir -p $home/.kube mv -f kubeconfig.yaml $home/.kube/config
- 根据使用场景,切换kubectl的访问模式。
- vpc内网接入访问请执行:
kubectl config use-context internal
- 互联网接入访问请执行(集群需绑定公网地址):
kubectl config use-context external
- 互联网接入访问如需开启双向认证请执行(集群需绑定公网地址):
kubectl config use-context externaltlsverify
关于集群双向认证的说明请参见域名双向认证。
- vpc内网接入访问请执行:
域名双向认证
cce当前支持域名双向认证。
- 集群api server绑定eip后,使用kubectl连接集群时域名双向认证默认不开启,可通过 kubectl config use-context externaltlsverify 命令切换到externaltlsverify这个context开启使用。
- 集群绑定或解绑弹性ip、配置或更新自定义域名时,集群服务端证书将同步签入最新的集群访问地址(包括集群绑定的弹性ip、集群配置的所有自定义域名)。
- 异步同步集群通常耗时约5-10min,同步结果可以在操作记录中查看“同步证书”。
- 对于已绑定eip的集群,如果在使用双向认证时出现认证不通过的情况(x509: certificate is valid),需要重新绑定eip并重新下载kubeconfig.yaml。
- 早期未支持域名双向认证时,kubeconfig.yaml中包含"insecure-skip-tls-verify": true字段,如图3所示。如果需要使用双向认证,您可以重新下载kubeconfig.yaml文件并配置开启域名双向认证。
图3 未开启域名双向认证
常见问题
- error from server forbidden
使用kubectl在创建或查询kubernetes资源时,显示如下内容:
# kubectl get deploy error from server (forbidden): deployments.apps is forbidden: user "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "deployments" in api group "apps" in the namespace "default"
原因是用户没有操作该kubernetes资源的权限,请参见为用户授权。
- the connection to the server localhost:8080 was refused
使用kubectl在创建或查询kubernetes资源时,显示如下内容:
the connection to the server localhost:8080 was refused - did you specify the right host or port?
原因是由于该kubectl客户端未配置集群认证,请参见3进行配置。
相关操作
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨