文档首页/ 云容器引擎 CCE/ 用户指南/ 集群/ 连接集群/ 通过KooCLI+kubectl连接集群
更新时间:2026-07-08 GMT+08:00
分享

通过KooCLI+kubectl连接集群

CCE现已在华为云命令行工具服务(Koo Command Line Interface,KooCLI)中集成了凭据插件,kubectl可通过执行凭据插件获得用户的IAM凭据来访问集群。该种方式避免了在本地保存用户静态证书,并且支持审计精准追溯至具体操作用户。

前提条件

  • CCE集群版本在v1.29.15-r80、v1.30.14-r80、v1.31.14-r40、v1.32.13-r10、v1.33.10-r10、v1.34.6-r10、v1.35.3-r10、v1.36.1-r0及以上。
  • 当您使用内网访问时,请确保客户端与待访问集群在同一VPC内。
  • 当您使用公网访问时,请确保待访问集群已绑定公网地址。关于集群绑定公网地址的具体步骤,请参见为API Server绑定EIP
    • 通过绑定EIP实现公网访问,集群存在风险,建议绑定的EIP配置DDoS高防服务或配置API Server访问策略
    • 绑定EIP将会短暂重启集群API Server并更新kubeconfig证书,请避免在此期间操作集群。

约束与限制

IAM联邦用户不支持使用本文描述的方式访问集群。

操作步骤

步骤一:下载kubectl

使用kubectl连接集群时,您需要先在客户端中安装kubectl。您可执行kubectl version命令判断是否已安装kubectl,如果已经安装kubectl,则跳过此步骤。本文以Linux环境为例安装和配置kubectl命令行工具,详情请参考安装kubectl

  1. 登录到您的客户端计算机,执行以下命令,下载kubectl工具。其中,v1.35.0为指定的版本号,请根据集群版本进行替换。

    cd /home
    curl -LO https://dl.k8s.io/release/v1.35.0/bin/linux/amd64/kubectl

  2. 执行以下命令,安装kubectl。

    chmod +x kubectl
    mv -f kubectl /usr/local/bin

  3. 执行以下命令,检查kubectl是否安装成功。

    kubectl version

    回显结果如下,则说明kubectl安装成功。

    Client Version: xxx
    Kustomize Version: xxx
    Server Version: xxx

步骤二:安装KooCLI

您可执行hcloud version命令判断是否已经安装KooCLI,如果已安装KooCLI且版本在7.2.12及以上,则跳过此步骤。如果已安装KooCLI但版本不满足要求,则需重新安装。

安装KooCLI的步骤请参考文档快速安装

步骤三:配置KooCLI

KooCLI支持多种配置方式,本文以常见的2种方式为例介绍如何配置KooCLI工具,更多配置方式请参考KooCLI文档

方式一:使用永久AK/SK配置(适用于大部分用户)

执行以下命令进行配置:

hcloud configure set --cli-profile=${profileName} --cli-region=${region} --cli-mode=AKSK --cli-access-key=${AK} --cli-secret-key=${SK}

查看是否配置成功

hcloud configure show --cli-profile=${profileName}

其中${profileName}为用户自定义的KooCLI配置名,${region}为局点ID,${AK}为访问密钥(永久AK/SK)中的访问密钥ID,${SK}为访问密钥(永久AK/SK)中的密码访问密钥。

方式二:使用SSO登录配置(适用于IAM身份中心用户)

执行以下命令进行配置:

# 第一步
hcloud configure set --cli-mode=SSO --cli-profile=${profileName} --cli-sso-start-url=${sso_start_url} --cli-sso-region=${region} --cli-region=${region}
# 第二步
hcloud configure sso --cli-profile=${profileName}

其中${profileName}为用户自定义的KooCLI配置名,${region}为局点ID,${sso_start_url}为IAM身份中心用户门户URL,可参考文档获取。

hcloud configure sso是交互式命令,参考其提示完成SSO登录。

KooCLI会将配置信息保存在本地,对于认证凭据(如AK/SK)等敏感信息会进行加密存储。

步骤四:使用KooCLI生成kubeconfig

  1. 执行以下命令查看当前用户下的集群。

    hcloud cce list-cluster 

    执行成功回显如下:

    UID                                      NAME                                     VERSION         STATUS          ACCESS              
    ----------------------------------------------------------------------------------------------------------------------------------
    9e07d2cf-02db-11ef-acea-0255ac100b08     cce-cluster-1                            v1.28           Unavailable     Internal                     
    6a533499-e9e8-11f0-b1d8-0255ac1001b8     cce-cluster-2                            v1.33           Available       Internal/External

  2. 选择目标集群,执行以下命令生成kubeconfig。

    # 内网访问
    hcloud cce update-kubeconfig --cluster-id=${clusterID}
    # 公网访问(仅集群绑定了公网地址的情况下支持公网访问)
    hcloud cce update-kubeconfig --cluster-id=${clusterID} --external=true

    其中,$(clusterID)为集群的UID。生成成功回显如下:

    Successfully generated/updated kubeconfig at: /root/.kube/config 
    Context: ***** 
    Cluster: *****

    hcloud cce update-kubeconfig支持多种可配参数如下表所示,您也可通过hcloud cce update-kubeconfig --help命令查看。

    参数

    说明

    --output

    生成的kubeconfig文件保存位置,默认为~/.kube/config

    --external

    是否通过公网访问集群,默认为false

    --external-tls-verify

    通过公网访问集群时是否开启双向认证,默认为false

    --ak

    Access Key ID,默认从KooCLI的配置里获取

    --sk

    Secret Access Key,默认从KooCLI的配置里获取

    --security-token

    Security token,默认从KooCLI的配置里获取

    --region

    局点ID,默认从KooCLI的配置里获取

    --project-id

    项目ID,默认从KooCLI的配置里获取

    --user-name

    生成kubeconfig中的username,默认为{cluster-name}-user

    --context-name

    生成kubeconfig中的contextname,默认为{cluster-name}-context

    --cce-endpoint

    CCE服务的访问域名,默认为https://cce.{region}.myhuaweicloud.com

  3. 执行以下命令,检查能否通过kubectl连接集群。

    kubectl cluster-info

    若回显结果如下,则说明能够通过kubectl连接集群。

    Kubernetes control plane is running at https://xx.xx.xx.xx:5443 CoreDNS is running at https://xx.xx.xx.xx:5443/api/v1/namespaces/kube-system/services/coredns:dns/proxy 
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    • 使用kubectl+凭据插件访问集群时,拥有的Kubernetes权限与CCE控制台上IAM用户所拥有的权限一致。
    • 如果Linux系统里面配置了KUBECONFIG环境变量,kubectl会优先加载KUBECONFIG环境变量,而不是$home/.kube/config,使用时请注意。
    • 当您使用公网访问时,默认不开启域名双向认证,如需开启,可在使用update-kubeconfig时设置external-tls-verify=true 参数。

相关文档