文档首页 > > 开发指南>

使用kubectl(推荐)

使用kubectl(推荐)

分享
更新时间:2021/05/06 GMT+08:00

云容器实例支持使用原生kubectl或定制的kubectl来创建负载等资源,建议优先选用原生kubectl。

下载kubectl

请到kubernetes版本发布页面下载1.15版本对应的kubectl。

下载cci-iam-authenticator

在CCI官网下载cci-iam-authenticator二进制,最新版本为v2.6.17

针对不同的操作系统,cci-iam-authenticator的下载地址如表1所示。

表1 下载地址

操作系统

下载地址

查看帮助

Linux AMD 64位

cci-iam-authenticator_linux-amd64

cci-iam-authenticator_linux-amd64_sha256

cci-iam-authenticator使用参考

安装并设置kubectl

以下操作以Linux环境为例,更多详情信息请参见安装和配置kubectl

  1. 下载kubectl中下载的kubectl赋予可执行权限,并放到PATH目录下。

    chmod +x ./kubectl

    mv ./kubectl $PATH

    其中,$PATH为PATH路径(如/usr/local/bin),请替换为实际的值。

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

    kubectl version --client=true

    Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

  2. 配置IAM认证信息并持久化到本地。

    1. 下载cci-iam-authenticator中下载的cci-iam-authenticator赋予可执行权限,并放到PATH目录下。

      chmod +x ./cci-iam-authenticator

      mv ./cci-iam-authenticator $PATH

    2. 初始化cci-iam-authenticator配置。
      初始化cci-iam-authenticator提供了AK/SK和用户名/密码两种方式,请选择其中一种执行。
      • 使用AK/SK的方式配置IAM认证信息

        cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://$endpoint --ak=xxxxxxx --sk=xxxxxx

        其中,endpoint为云容器实例的Endpoint,获取方法请参见地区和终端节点;ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。

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

        cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --ak=my-ak --sk=ABCDEFAK..

        执行上述命令后,显示如下类似信息:

        Switched to context "cci-context-cn-north-4-my-ak"

        其中,cci-context-cn-north-4-my-ak为context名,可通过kubectl config get-contexts命令查看。

      • 使用用户名/密码的方式配置IAM认证信息

        cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://$endpoint --domain-name=xxxxxxx --user-name=xxxxxx --password=xxxxxx

        其中,endpoint为云容器实例的Endpoint,domain-name为租户名,user-name为子用户名,password为子用户密码,请根据替换为实际的值。

        • 若无子用户,user-name与domain-name配置一致即可,也可以不添加user-name参数。
        • IAM的Endpoint请参见地区和终端节点,请注意需要使用与云容器实例地区相同的Endpoint。
        • 在非安全的环境中使用kubectl,建议您完成此步骤后,使用环境变量的方式重新配置认证信息,具体参考非安全环境配置kubectl

  3. 配置完成后,即可通过kubectl命令操作云容器实例的相关资源。

    例如,查看北京四的namespace资源。

    kubectl get ns

    No resources found.

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

  • 当通过API访问公有云系统时,需要使用访问用户名密码或者密钥(AK/SK)进行身份认证并对请求进行加密,确保请求的机密性、完整性和请求双方身份的正确性。请妥善保存$HOME/.kube/config配置文件,确保访问密钥不被非法使用。
  • 当开启cache缓存token提高访问性能时,token会以文件的方式保存在$HOME/.cci/cache的子目录下,请及时清理。
  • 当发现访问密钥被非法使用(包括丢失、泄露等情况),可以自行删除或者通知管理员重置访问密钥,重新配置。
  • 删除的访问密钥将无法恢复。

非安全环境配置kubectl

  1. 参照上述操作,安装并设置kubectl。
  2. 编辑kubeconfig文件,删除敏感信息参数。

    Linux系统,kubeconfig文件默认位于$HOME/.kube/config。
    表2 待删除敏感信息参数

    Command Flag

    Environment Value

    Description

    --domain-name

    DOMAIN_NAME

    租户名

    --user-name

    USER_NAME

    子用户名

    --password

    PASSWORD

    用户密码

    --ak

    ACCESS_KEY_ID

    Access Key

    --sk

    SECRET_ACCESS_KEY

    Secret Key

    --cache

    CREDENTIAL_CACHE

    是否开启缓存Token

    更多参数说明请参见cci-iam-authenticator使用参考

  3. 配置删除参数相应的环境变量来使用kubectl,以AK/SK为例。

    export ACCESS_KEY_ID=xxxxxxx

    export SECRET_ACCESS_KEY=xxxxxxx

    export CREDENTIAL_CACHE=false

    kubectl get ns

    执行上述命令后,提示如下类似信息:

    No resources found.

获取AK/SK

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

SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

  1. 登录管理控制台。
  2. 单击用户名,在下拉列表中单击“我的凭证”。
  3. 在“我的凭证”页面,单击“访问密钥”页签。
  4. 单击“新增访问密钥”,输入验证码。
  5. 单击“确定”,生成并下载访问密钥。

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

获取云容器实例Endpoint

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

表3 地区和终端节点

区域名称

区域

终端节点(Endpoint)

华北-北京四

cn-north-4

cci.cn-north-4.myhuaweicloud.com

华东-上海一

cn-east-3

cci.cn-east-3.myhuaweicloud.com

华南-广州

cn-south-1

cci.cn-south-1.myhuaweicloud.com

cci-iam-authenticator使用参考

cci-iam-authenticator作为k8s client端的认证插件,主要提供了generate-kubeconfig和token两个子命令。

A tool to authenticate to CCI using HuaweiCloud IAM credentials

Usage:
  cci-iam-authenticator [command]

Available Commands:
  generate-kubeconfig Generate or modify kubeconfig files based on user configuration
  help                Help about any command
  token               Authenticate using HuaweiCloud IAM and get token for CCI

Flags:
      --alsologtostderr   log to standard error as well as files
  -h, --help              help for cci-iam-authenticator
      --log_dir string    If non-empty, write log files in this directory
      --log_file string   If non-empty, use this log file
      --logtostderr       log to standard error instead of files (default true)
  -v, --v Level           number for the log level verbosity
      --version           version for cci-iam-authenticator

Use "cci-iam-authenticator [command] --help" for more information about a command.

其中,Flags主要为日志选项。

token

token子命令用于获取用户token,获取token的认证方式有用户名/密码、ak/sk两种,选择其中一种即可。

Authenticate using HuaweiCloud IAM and get token for CCI

Usage:
  cci-iam-authenticator token [flags]

Flags:
      --ak string                  IAM access key ID
      --cache                      Cache the token credential on disk until it expires (default true)
      --domain-name string         IAM domain name, typically your account name
  -h, --help                       help for token
      --iam-endpoint string        HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com")
      --insecure-skip-tls-verify   If true, the iam server's certificate will not be checked for validity. (default true)
      --password string            IAM user password
      --project-id string          IAM project id, project id and project name should not be empty at same time
      --project-name string        IAM project name, project id and project name should not be empty at same time
      --sk string                  IAM secret access key
      --token-only                 Return token only for other tool integration
      --user-name string           IAM user name. Same as domain-name when using main account, otherwise use iam user name

其中,Flags分为用户名密码、AKSK和公共配置。

表4 用户名/密码配置

Command Flag

Environment Value

Description

domain-name

DOMAIN_NAME

租户名,即账号名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html

user-name

USER_NAME

子用户名,即IAM用户名。若不配置与domain-name一致。

详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html

password

PASSWORD

用户或子用户密码。

表5 AK/SK配置

Command Flag

Environment Value

Description

ak

ACCESS_KEY_ID

ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。

sk

SECRET_ACCESS_KEY

表6 公共配置

Command Flag

Environment Value

Description

iam-endpoint

IAM_ENDPOINT

云容器实例的Endpoint,必须配置,详情请参见获取云容器实例Endpoint

project-name

PROJECT_NAME

项目名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html

project-id

PROJECT_ID

项目ID,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html

insecure-skip-tls-verify

INSECURE_SKIP_TLS_VERIFY

是否跳过对CCI/IAM服务端的校验,默认为true。

cache

CREDENTIAL_CACHE

是否开启将IAM Token缓存到本地,提高访问性能,默认为true。

注意:

在非安全环境,建议关闭此选项。

generate-kubeconfig

为用户直接生成kubeconfig配置,若指定的kubeconfig已存在,则会注入新的server、user、context配置,并将当前的kubeconfig context切换到此次配置的结果。 默认情况下会对用户的配置进行校验,尝试访问IAM及CCI,确保用户配置的IAM认证信息、CCI地址可用。

Generate or modify kubeconfig files based on user configuration.

Sets a cluster entry, a user entry and a context entry in kubeconfig and use this context as the current-context.

  The loading order follows these rules:

   1.  If the --kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes
place.
   2.  If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for
your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When
a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the
last file in the list.
   3.  Otherwise, ${HOME}/.kube/config is used and no merging takes place.

 Examples:
   # Generate kubeconfig to ${HOME}/.kube/config using aksk
   cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --ak=*** --sk=***
   # Generate kubeconfig to ${HOME}/.kube/config using domain name and password
   cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --domain-name=*** --password=***

Usage:
  cci-iam-authenticator generate-kubeconfig [flags]

Flags:
      --ak string                  IAM access key ID
      --cache                      Cache the token credential on disk until it expires (default true)
      --cci-endpoint string        CCI server endpoint, i.e. https://cci.cn-north-4.myhuaweicloud.com
      --domain-name string         IAM domain name, typically your account name
  -h, --help                       help for generate-kubeconfig
      --iam-endpoint string        HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com")
      --insecure-skip-tls-verify   If true, the iam server's certificate will not be checked for validity. (default true)
      --kubeconfig string          use a particular kubeconfig file
      --password string            IAM user password
      --project-id string          IAM project id, project id and project name should not be empty at same time
      --project-name string        IAM project name, project id and project name should not be empty at same time
      --sk string                  IAM secret access key
      --token-only                 Return token only for other tool integration
      --user-name string           IAM user name. Same as domain-name when using main account, otherwise use iam user name
      --validation                 Validate kubeconfig by trying to access CCI with existing config (default true)

同一个kubeconfig可以包含多个环境、认证信息,用户可以通过同一份IAM认证配置,仅修改cci-endpoint生成多个region的kubeconfig,例如:

# 生成北京4的kubeconfig,并切换到对应context 
$ cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --ak=my-ak --sk=xxxxxx 
Switched to context "cci-context-cn-north-4-my-ak". 
# 生成上海1的kubeconfig,并切换到对应context 
$ cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-east-3.myhuaweicloud.com --ak=my-ak --sk=xxxxxx 
Switched to context "cci-context-cn-east-3-my-ak". 
# 切换到北京4的context 
$ kubectl config use-context cci-context-cn-north-4-my-ak
分享:

    相关文档

    相关产品

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

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

智能客服提问云社区提问