使用kubectl(定制)
云容器实例提供了定制的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。

仅提供最新版本下载地址。
版本 |
修订记录 |
---|---|
2.10.11(最新) |
第五次发布。
|
2.4.20 |
第四次发布。 修复非root用户使用kubectl概率性失败的问题。 |
v2.4.2 |
第三次发布。 禁用kubectl cp命令,规避kubernetes安全漏洞。 |
v2.2.23 |
第二次发布。 修改问题:
|
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
使用kubectl
- 配置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。
例如,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命令参考。
- 指定 Access Key 和 Secret Key 的值,命令如下:
- Token认证:Token 的有效期为24小时,Token 获取方法请参见获取Token。
- 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值。
