文档首页> > 开发指南> 使用kubectl

使用kubectl

分享
更新时间: 2019/07/04 08:39

云容器实例提供了定制的kubectl工具,支持使用Kubectl命令行创建负载等资源。

支持的kubectl命令

相比Kubernetes社区的kubectl,云容器实例提供的kubectl进行了适配,您可以在云容器实例 kubectl 命令参考查看云容器实例支持的 kubectl 命令。kubectl的命令是通过调用API操作云容器实例资源(Pod、Deployment、Job等等),其能操作的资源和能力与云容器实例API一致。

下载kubectl

云容器实例提供定制化kubectl,最新版本为v2.4.20

Linux版本下载地址:https://cci-kubectl.obs.cn-north-1.myhuaweicloud.com/kubectl-linux.zip

Mac版本下载地址:https://cci-kubectl-for-mac.obs.cn-north-1.myhuaweicloud.com/kubectl-darwin.zip

说明:

仅提供最新版本下载地址。

表1 kubectl版本

版本

修订记录

2.4.20(最新)

第四次发布。

修复非root用户使用kubectl概率性失败的问题。

v2.4.2

第三次发布。

禁用kubectl cp命令,规避kubernetes安全漏洞。

v2.2.23

第二次发布。

修改问题:

  • 修复aksk认证方式无法执行kubectl exec命令的问题。
  • 修复从文件中读取aksk内容进行aksk认证概率性失败的问题。

v1.1.13

第一次发布。

配置kubectl

下载后解压到任意目录,无需安装,解压后目录结构如下:

kubectl
README.md

执行如下命令将kubectl所在目录添加到环境变量,并赋予kubectl可执行权限。其中/DIR/TO/KUBECTL为kubectl所在目录,请替换为实际的路径。

export PATH=/DIR/TO/KUBECTL:$PATH

chmod +x /DIR/TO/KUBECTL/kubectl

执行kubectl --help,查看支持命令与资源的范围,如果回显如下,则说明kubectl可以正常使用。

# kubectl --help
kubectl controls the Kubernetes cluster manager. 

Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
  create        Create a resource from a file or from stdin.
  expose        Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
  run           Run a particular image on the cluster
  set           Set specific features on objects

......

您还可以通过kubectl version命令查看kubectl的版本,如下所示。

# kubectl version
Client Version: v2.2.23, Build Date: 2019-02-23T10:28:53Z

获取云容器实例Endpoint

Endpoint在地区和终端节点页面获取,如下图所示。

使用kubectl

  1. 设置服务端点。

    kubectl config set-cluster $cluster_name --server=https://CCI_ENDPOINT

    其中$cluster_name 为设置集群名称,可自定义;CCI_ENDPOINT 为云容器实例的Endpoint。

    示例如下:

    kubectl config set-cluster cci-cluster --server=https://cci.cn-north-1.myhuaweicloud.com

  2. 设置认证信息。

    使用 kubectl 每次执行时需要带上认证信息,当前支持 Token 和 AK/SK 两种认证方式,您可以选择其中一种进行认证鉴权。

    • Token认证:Token 的有效期为24小时,Token 获取方法请参见获取Token

      kubectl config set-credentials $credential_name --token=$token

      其中,$credential_name 为设置的 credential 名称,可以自定义;$token 为Token。

      例如 credential 名称设置为 credential-token,token值为 MIIEYwYJKoZIhvcNAQc...,则命令如下所示:

      kubectl config set-credentials credential-token --token=MIIEYwYJKoZIhvcNAQc...
    • AK/SK认证:AK/SK 长期有效,AK/SK 获取方法请参见获取AK/SK
      首先需要将 AK/SK 设置成 credential,支持下面两种方式:
      • 指定 Access Key Secret Key 的值,示例命令如下:

        kubectl config set-credentials $credential_name --auth-provider=hws --auth-provider-arg=ak=$ak --auth-provider-arg=sk=$sk

        其中,$credential_name 为设置的 credential 名称,可以自定义,$ak 为文件中 Access Key 部分, $sk 为文件中 Secret Key 部分

        例如 ak 的值为 ABCDEFAK.. ,sk的值为 ABCDEFSK.. ,则命令如下所示:

        kubectl config set-credentials credential-aksk --auth-provider=hws --auth-provider-arg=ak=ABCDEFAK..  --auth-provider-arg=sk=ABCDEFAK..
      • 指定 Access Key Secret Key 文件所在的目录,示例命令如下:

        kubectl config set-credentials $credential_name --auth-provider=hws --auth-provider-arg=akskDir=$akskDir

        指定目录的方式需要事前将 Access Key Secret Key 分别保存到文件Access Key 对应的文件名为 akSecret Key 对应的文件名为 sk),保存后放置于 $akskDir 对应的目录。

        例如在 /home/aksk 文件夹下存放了名为 ak 和 sk 的文件,则命令如下所示:

        kubectl config set-credentials credential-aksk --auth-provider=hws --auth-provider-arg=akskDir=/home/aksk

  3. 设置kubectl上下文。

    先根据前面步骤的信息创建一个kubectl上下文。

    kubectl config set-context $context --user=$credential_name --cluster=$cluster_name

    其中,$context 为上下文的名称,可以自定义;$credential_name 为设置的 credential 名称,与2中设置的名称一致,$cluster_name 为端点信息,与1中设置的名称一致。

    例如上下文的名称设置为 cci-context,则命令如下

    kubectl config set-context cci-context --user=credential-aksk  --cluster=cci-cluster

    把上面创建的上下文切换为current-context

    kubectl config set current-context $context

    示例如下:

    kubectl config set current-context cci-context

    kubectl 上下文设置好后,就可以使用 kubectl 命令直接操作云容器实例的相关资源。

    如下所示,执行kubectl get namespace,查看资源。

    # kubectl get namespace
    No resources found.

    您可以从回显中看到这里没有任何命名空间,在云容器实例中创建资源首先需要创建一个命名空间,具体方法请参见Namespace和Network

获取Token

发送“POST https://IAM的Endpoint/v3/auth/tokens”,详情请参考《统一身份认证服务API参考》。

IAM的Endpoint请参见地区和终端节点,请注意需要使用与云容器实例地区相同的Endpoint。

请求内容示例如下:
{
  "auth": {
    "identity": {
      "methods": [
        "password"
      ],
      "password": {
        "user": {
          "name": "username",
          "password": "******",
          "domain": {
            "name": "domainname"
          }
        }
      }
    },
    "scope": {
      "project": {
         "name": "cn-north-1"
      }
    }
  }
}

请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

获取AK/SK

AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。

SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
  1. 登录管理控制台。
  2. 单击用户名,在下拉列表中单击“我的凭证”。
  1. 单击“管理访问密钥”。
  2. 单击“新增访问密钥”,进入“新增访问密钥”页面。
  3. 输入当前用户的登录密码。
  4. 通过邮箱或者手机进行验证,输入对应的验证码。
    说明:

    在统一身份服务中创建的用户,如果创建时未填写邮箱或者手机号,则只需校验登录密码。

  5. 单击“确定”,下载访问密钥。
    说明:

    为防止访问密钥泄露,建议您将其保存到安全的位置。

如果您喜欢这篇文档,您还可以:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区