九游平台/ 云容器引擎 cce/ 用户指南/ / / 通过kubectl连接集群
更新时间:2025-03-12 gmt 08:00

通过kubectl连接集群-九游平台

kubectl是kubernetes提供的一种命令行工具,它用于与kubernetes集群进行交互,帮助用户管理集群中的资源、查看集群状态、部署应用程序、进行调试等操作。通过kubectl,您可以方便地在命令行界面上执行集群管理任务。如果客户端需要通过kubectl连接到cce集群,可以选择两种访问方式:
  • 内网访问:客户端通过内网ip地址与集群的api server进行通信,数据流量不会经过互联网,安全性更强。
  • 公网访问:集群的api server会暴露一个公共接口,客户端可以通过互联网访问kubernetes集群。

本文将以cce standard集群为例,介绍如何通过kubectl连接cce集群。

前提条件

  • 当您使用内网访问时,请确保客户端与待访问集群在同一vpc内。
  • 当您使用公网访问时,请确保客户端具备访问公网的能力,并且待访问集群已绑定公网地址。关于集群绑定公网地址的具体步骤,请参见。

    绑定公网集群的kube-apiserver将会暴露到互联网,存在被攻击的风险,建议对kube-apiserver所在节点的eip配置ddos高防服务或。

约束与限制

kubectl访问cce集群时,通过集群上生成的配置文件(kubeconfig)进行认证,kubeconfig文件内包含用户信息,cce根据用户信息的权限判断kubectl有权限访问哪些kubernetes资源。即用户所获取的kubeconfig文件中包含该用户的身份信息,因此在使用kubectl进行访问时,将继承该用户的权限。

用户拥有的权限请参见集群权限(iam授权)与命名空间权限(kubernetes rbac授权)的关系

计费说明

如果使用公网访问的方式,集群则需要绑定弹性公网ip。此时,弹性公网ip涉及一定费用,具体请参见。

使用kubectl连接集群

使用kubectl连接集群时,您需要先在客户端中安装kubectl。随后在集群中下载kubectl配置文件,并复制至客户端,在客户端中完成相关配置后即可访问对应的cce集群。使用kubectl连接集群的具体步骤如下:

  1. 下载kubectl

    您需要准备一台可访问公网的客户端计算机,并通过命令行方式安装kubectl。如果已经安装kubectl,则跳过此步骤,您可执行kubectl version命令判断是否已安装kubectl。

    本文以linux环境为例安装和配置kubectl,详情请参考。

    1. 登录到您的客户端计算机,下载kubectl。
      cd /home
      curl -lo https://dl.k8s.io/release/{v1.25.0}/bin/linux/amd64/kubectl

      其中{v1.25.0}为指定的版本号,请根据集群版本进行替换。

    2. 安装kubectl。
      chmod  x kubectl
      mv -f kubectl /usr/local/bin
  2. 获取kubectl配置文件
    1. 在集群“概览”页中的“连接信息”版块,单击kubectl后的“配置”按钮,查看kubectl的连接信息。
      图1 集群连接信息
    2. 在弹出页面中选择“内网访问”或“公网访问”,下载对应的配置文件。
      图2 下载配置文件
    • kubectl配置文件(kubeconfig)用于对接认证集群,请您妥善保存该认证凭据,防止文件泄露后,集群有被攻击的风险。
    • iam用户下载的配置文件所拥有的kubernetes权限与cce控制台上iam用户所拥有的权限一致。
    • 如果linux系统里面配置了kubeconfig环境变量,kubectl会优先加载kubeconfig环境变量,而不是$home/.kube/config,使用时请注意。
  3. 配置kubectl
    以linux环境为例配置kubectl。
    1. 登录到您的客户端计算机,复制2中下载的配置文件(以kubeconfig.yaml为例)到您客户端机器的/home目录下。
    2. 配置kubectl认证文件。
      cd /home
      mkdir -p $home/.kube
      mv -f kubeconfig.yaml $home/.kube/config
    3. 根据使用场景,切换kubectl的访问模式。
      • vpc内网接入访问请执行:
        kubectl config use-context internal
      • 互联网接入访问请执行(集群需绑定公网地址):
        kubectl config use-context external
      • 互联网接入访问如需开启双向认证请执行(集群需绑定公网地址):
        kubectl config use-context externaltlsverify

        关于集群双向认证的说明请参见域名双向认证

  4. 在客户端中执行以下命令,检查客户端能否通过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'.

域名双向认证

域名双向认证一种双向身份验证机制,它确保通信双方(即客户端和服务器)都能够验证对方的身份。这种认证方式可以增强集群与客户端之间的安全性,防止未经授权的访问。

  • 集群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进行配置。

相关操作

相关文档

网站地图