onectl是阿里云注册集群的命令行工具,可以帮您一键安装和配置Addon组件。本文介绍如何在注册集群中使用onectl。
前提条件
已创建注册集群并接入本地数据中心集群,且集群状态为运行中。
索引
步骤一:安装onectl
- 执行以下命令,安装onectl。支持macOS和Linux系统安装。
curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh |bash
- 执行以下命令,验证onectl是否安装成功。
onectl version
预期输出:
onectl: v1.0.0+435cb69 BuildDate: 2023-02-16T07:55:15Z GitCommit: 435cb69c9efdf369f036e3f5864c07ae871a793d GitTreeState: clean GoVersion: go1.18.9 Compiler: gc Platform: linux/amd64
步骤二:为RAM用户授权
阿里云账号管理员首先需要完成RAM用户的授权操作,该授权用于访问注册集群中Addon组件相关的云资源。
您可以通过以下两种方式为RAM用户授权。
通过onectl方式为RAM用户授权
- 对于新建RAM用户,需要先创建RAM用户,然后生成AK并授权。执行以下命令,创建RAM用户,生成AK并授权。
预期输出:onectl subuser create --name <subaccount_name> --main-access-key <main_access_key> --main-access-secret <main_access_secret>
Successfully create subuser account: name: **** new accessKeyId: LTAI5tRf5ipP1h81PL**** new accessKeySecret: ****
- 对于已有RAM用户,需要执行以下命令,为RAM用户授权。
预期输出:onectl subuser grant --name <subaccount_name> --new-ak=false --main-access-key <main_access_key> --main-access-secret <main_access_secret>
Successfully grant init ram policy subuser account granted rampolicy name: externalK8sPolicy-init
通过控制台方式为RAM用户授权
- 创建RAM用户。具体操作,请参见创建RAM用户。
- 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey。
- 创建自定义权限策略externalK8sPolicy-tmp,具体权限策略内容如下。具体操作,请参见创建自定义权限策略。
{ "Statement": [ { "Action": [ "cs:InstallClusterAddons" ], "Effect": "Allow", "Resource": [ "acs:cs:*:*:cluster/*" ] }, { "Action": [ "ram:GetPolicy", "ram:CreatePolicy", "ram:AttachPolicyToUser" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "1" }
- 为RAM用户添加权限。具体操作,请参见为RAM用户授权。
步骤三:配置onectl
本文以安装logtail-ds Addon为例介绍如何配置onectl,配置步骤中使用的AK将用于执行以下操作。
- 检查RAM用户是否已授权logtail-ds所需的RAM权限
"ram:GetPolicy"
,权限策略名称将自动被命名为externalK8sPolicy-logtail-ds。若不存在,则创建该策略ram:CreatePolicy
,并将该权限策略添加至RAM用户ram:AttachPolicyToUser
。 - 使用该AK在注册集群中创建Secret,logtail-ds将挂载该Secret并使用AK访问日志服务相关的云资源。
使用步骤二:为RAM用户授权生成的RAM用户账号及AK信息,执行以下命令,完成onectl配置。
onectl configure
预期输出:
Configuring profile 'default' ...
Access Key Id [LTAI5tRf5ipP1h81PL****]:
Access Key Secret [****]:
Default SubAccount Username [xxxx]:
Default Cluster Id (ClusterId of ACK Regitry Cluster) [c696eaff87cd44d2ea8c18cd54e6****]:
Default Kubeconfig Path (default is ~/.kube/config) []:
Saving profile[default] ...
Done.
参数 | 说明 |
---|---|
Access Key Id | RAM用户的AccessKey信息。onectl使用AK的两个用途如下:
|
Access Key Secret | |
SubAccount Username | RAM用户的用户名。例如,您RAM用户的登录名称为shuwei@18807*****.onaliyun.com,此处SubAccount Username 为shuwei 。 |
Cluster Id | 注册集群的Cluster ID。 |
Kubeconfig Path | IDC自建集群的KubeConfig路径,默认为~/.kube/config。 |
步骤四:使用onectl一键安装Addon组件
执行以下命令,安装日志组件logtail-ds。
onectl addon install logtail-ds
预期输出:
Addon logtail-ds installed
步骤五:使用onectl对节点池创建进行前置检查
创建节点池的前置检查
以下命令行功能用于检测当前集群配置是否满足创建节点池需求,并不会自动化创建节点池。关于创建节点池具体操作请参见创建节点池。
执行以下命令,完成创建节点池的前置检查。
onectl nodepool check
预期输出:
Have you add nodeaffinity to avoid your network plugin running one ecs node? [y/n]
y
Is connected with intranet............... true
Is customized node init script added..... true
Is nodeaffinity added.................... true
Is terway addon installed................ true
nodepool check passed. [help doc: ]
创建自动弹性伸缩节点池的前置检查
执行以下命令,完成创建自动弹性伸缩节点池的前置检查。
onectl nodepool check --enable-autoscaler=true
预期输出:
Have you add nodeaffinity to avoid your network plugin running one ecs node? [y/n]
y
Is connected with intranet............... true
Is customized node init script added..... true
Is nodeaffinity added.................... true
Is terway addon installed................ true
Is autoscaler addon installed............ true
nodepool check passed. [help doc: ]
常见问题
使用onectl安装Addon时,onectl后台执行了哪些动作?
使用onectl安装Addon前,请确保您已完成以上步骤一:安装onectl到步骤三:配置onectl的操作。以安装日志组件logtail-ds为例,安装时后台会执行的操作如下。
- 检查RAM用户账号下是否已创建名为externalK8sPolicy-logtail-ds的自定义策略。若不存在,请创建此自定义策略并授权给RAM用户。具体操作,请参见步骤二:为RAM用户授权。
- 使用您已获取的AK在注册集群中创建名为
alibaba-addon-secret
的Secret资源。 - 调用OpenAPI安装logtail-ds日志组件。更多信息,请参见安装集群组件。
节点池创建的前置检查失败后如何处理?
- Is connected with intranet............... false
您需要使用注册集群的内网导入代理配置接入IDC自建集群。在此之前,请确保云上云下网络已互联互通。更多信息,请参见混合网络概述。
- Is customized node init script added..... false
Kubernetes集群的初始化方式和集群版本都要保持一致。您在使用注册集群节点池为IDC自建集群扩容云上ECS之前,需要首先制作和配置自定义的节点初始化脚本。此节点初始化脚本的内容需要跟您IDC自建集群的节点初始化方式保持一致。在此基础上,请配置注册集群下发的ALIBABA_CLOUD_LABELS、ALIBABA_CLOUD_NODE_NAME等环境变量,这些变量将会在ECS初始化时赋值。更多信息,请参见使用自定义节点添加脚本。
- Is nodeaffinity added.................... false
云下IDC自建集群扩容云上ECS的集群,需要保证云下节点只运行云下集群的容器网络组件,云上ECS只运行Terway容器网络组件。
注册集群节点池扩容的云上ECS都默认打标签
alibabacloud.com/external=true
。您需要在云下集群的容器网络组件中添加nodeAffinity
,使其不要被调度到云上ECS。更多信息,请参见场景二:本地数据中心容器网络模式为BGP网络。 - Is terway addon installed................ false
云下IDC自建集群中的节点运行云下集群的容器网络组件,云上ECS只能运行Terway容器网络组件,在使用节点池扩容ECS之前,请确保在注册集群中已安装Terway组件且运行正常。 您可以通过
onectl addon install terway-eniip
进行一键安装和配置Terway组件。 - Is autoscaler addon installed............ false
如果您需要启用自动弹性伸缩节点池,请确保在注册集群中已安装autoscaler组件且运行正常。您可以通过
onectl addon install autoscaler
进行一键安装和配置autoscaler组件。