文档首页 > > 开发指南> 使用kubectl(定制)

使用kubectl(定制)

分享
更新时间:2020/08/20 GMT+08:00

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

使用kubectl(推荐)中提供的原生kubectl,定制版kubectl近期将下线。

使用kubectl工具时,必须确保当前用户具有cci_admin角色权限,否则执行kubectl get ns命令时,会提示error: the server doesn't have a resource type "ns"(出现上述提示可通过kubectl get ns -v=8查看详情日志)。

支持的kubectl命令

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

下载kubectl

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

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.10.11(最新)

第五次发布。

  • 修复kubectl rollout命令提示信息错误。
  • 新增kubectl config init命令,支持一键完成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. 配置kubeconfig文件。

    kubeconfig文件默认为“${HOME}/.kube”目录下的config文件,用于保存集群访问信息,包含Endpoint地址、身份认证信息等。

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

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

      kubectl config init --server=https://CCI_ENDPOINT --token=$token

      其中,CCI_ENDPOINT 为云容器实例的Endpoint;$token 为Token。

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

      例如,Endpoint为https://cci.cn-north-1.myhuaweicloud.com,token值为MIIEYwYJKoZIhvcNAQc...,则命令如下所示:

      kubectl config init --server=https://cci.cn-north-1.myhuaweicloud.com --token=MIIEYwYJKoZIhvcNAQc...
    • AK/SK认证:AK/SK 长期有效,AK/SK 获取方法请参见获取AK/SK
      AK/SK认证支持下面两种配置方式:
      • 指定 Access Key 和 Secret Key 的值,命令如下:

        kubectl config init --server=https://CCI_ENDPOINT --auth-provider=hws --auth-provider-arg=ak=$ak --auth-provider-arg=sk=$sk

        其中,CCI_ENDPOINT 为云容器实例的Endpoint;$ak为文件中 Access Key 部分, $sk 为文件中 Secret Key 部分。

        例如,Endpoint为https://cci.cn-north-1.myhuaweicloud.com,ak 的值为 ABCDEFAK.. ,sk的值为 ABCDEFSK.. ,则命令如下所示:

        kubectl config init --server=https://cci.cn-north-1.myhuaweicloud.com --auth-provider=hws --auth-provider-arg=ak=ABCDEFAK..  --auth-provider-arg=sk=ABCDEFAK..
      • 指定 Access Key 和 Secret Key 文件所在的目录,命令如下:

        kubectl config init --server=https://CCI_ENDPOINT --auth-provider=hws --auth-provider-arg=akskDir=$akskDir

        其中,CCI_ENDPOINT 为云容器实例的Endpoint;指定目录的方式需要提前将Access Key 和 Secret Key 分别保存到文件(Access Key 对应的文件名为 ak,Secret Key 对应的文件名为sk),保存后存放在 $akskDir对应的目录下。

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

        kubectl config init --server=https://cci.cn-north-1.myhuaweicloud.com --auth-provider=hws --auth-provider-arg=akskDir=/home/aksk

        使用kubectl config init命令实际上是一步完成了kubectl config set-cluster、kubectl config set-credentials、kubectl config set-context、kubectl config set current-context四条命令的工作,如需自定义配置可参考云容器实例 kubectl config命令参考

  2. kubeconfig文件配置完成后,可以通过kubectl命令直接操作云容器实例的相关资源。

    例如,执行kubectl get namespace,查看资源。

    # kubectl get namespace
    No resources found.

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

    执行kubectl命令时,若提示证书认证失败,请在使用kubectl命令时,添加--insecure-skip-tls-verify=true字段,即可正常使用kubectl命令。但这将不会检查服务器证书的有效性,会使您的HTTPS连接不安全。

获取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. 单击“确定”,生成并下载访问密钥。

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

分享:

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

智能客服提问云社区提问