ACK注册集群CLI使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ACK注册集群CLI使用

一、前置条件

  • 已创建注册集群并接入自建Kubernetes集群,集群状态为运行中


二、安装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

三、配置onectl

使用说明

以onectl安装logtail-ds addon为例,本步骤中使用的AK将被用于执行以下操作:

  • 检查RAM账号下是否已授权logtail-ds addon所需的RAM权限("ram:GetPolicy"),自动以权限策略名称为externalK8sPolicy-logtail-ds,若不存在,则创建该策略(ram:CreatePolicy),并将该策略添加至RAM账号下(ram:AttachPolicyToUser);
  • 使用该AK,在ACK注册集群中创建secret,logtail-ds addon将挂载该secret并使用AK访问日志服务相关云资源。


强烈建议您使用RAM子账号并创建AK用于ACK注册集群。您需要向账号管理员申请子账号并为子账号完成以下操作:

  • 为子账号生成AK
  • 为子账号授予以下RAM权限


以下为账号管理员的操作:

(1)onectl方式:

onectl  subuser create --name <subaccount_name> --main-access-key <main_access_key> --main-access-secret <main_access_secret>

预期输出:

Successfully create subuser account:
name: xxxx
new accessKeyId: xxxx
new accessKeySecret: xxxx

若您只需为指定RAM账户授权RAM Policy的话,可以执行:

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

(2)控制台方式:

  1. 创建RAM用户。具体操作,请参见创建RAM用户
  2. 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey
  3. 创建自定义权限策略externalK8sPolicy-tmp,具体权限策略内容如下。具体操作,请参见创建自定义权限策略
{
  "Statement": [
    {
      "Action": [
        "cs:InstallClusterAddons"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cs:*:*:cluster/*"
      ]
    },
    {
      "Action": [
        "ram:GetPolicy",
        "ram:CreatePolicy",
        "ram:AttachPolicyToUser"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ],
  "Version": "1"
}
  1. 为RAM用户添加权限。具体操作,请参见为RAM用户授权


完成配置

使用主账户管理员为您生成的RAM账户以及AK信息,完成以下配置:

onectl configure

预期输出:

Configuring profile 'default' ...
Access Key Id [xxxxxxxx]: 
Access Key Secret [xxxxxxxx]: 
Default SubAccount Username [xxxx]: 
Default Cluster Id (ClusterId of ACK Registry Cluster) [xxxxxxxxxxxxxxxx]: 
Default Kubeconfig Path (default is ~/.kube/config) []: 
Saving profile[default] ...
Done.
  • AK信息:onectl使用AK的2个用途:(1)使用该AK调用OpenAPI查询和创建自定义RAM策略、授予子账户自定义策略以及安装ACK Addon组件 (2)为ACK Addon组件配置AK,ACK Addon组件将使用该AK访问云上资源;   请确保该子账号AK使用最小RAM权限并妥善保管好该AK
  • SubAccount Username:子账号的用户名,如下图示例中子账号的用户名为 `shuwei`

image.png

  • Cluster ID: 即注册集群的clusterid
  • Kubeconfig Path: 自建集群的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: ]

当且仅当所有前置检查都通过时,您才可以进一步创建节点池。


FAQ

使用onectl安装addon的时候,onectl后台执行了哪个动作?

前置条件

用户已经通过onectl configure配置了AK、子账户名称、注册集群ID、当前集群的kubeconfig路径信息。

执行动作

(1) 检查用户账号下是否已创建名为"externalK8sPolicy-logtail-ds"的自定义策略,若不存在则创建该自定义策略并将其授权至子账户

(2) 使用用户配置的AK创建Secret kube-system/alibaba-addon-secret

(3)调用OpenAPI安装logtail-ds插件

节点池检查失败后应该怎么做?

(1) Is connected with intranet............... false

您需要使用注册集群的内网导入代理配置接入自建集群,在此之前,您需要先确保云上云下网络已互联互通。参考文档:https://help.aliyun.com/document_detail/455810.html

(2) Is customized node init script added..... false

由于Kubernetes集群的初始化方式、集群版本都要保持一致,所以在您使用注册集群节点池为IDC自建集群扩容云上ECS之前,您需要首先制作和配置自定义的节点初始化脚本,节点初始化脚本的内容应该跟您idc集群的节点初始化方方式保持一致,并在此基础上配置注册集群下发的ALIBABA_CLOUD_LABELS、ALIBABA_CLOUD_NODE_NAME(该变量将会在ECS初始化时赋值环境变量参考文档:https://help.aliyun.com/document_detail/208053.html

(3) Is nodeaffinity added.................... false

云下自建集群扩容云上ECS的集群,需要保证云下节点只运行云下集群容器网络插件,云上ECS只运行terway容器网络插件。注册集群节点池扩容的云上ECS都默认打标alibabacloud.com/external=true,所以您需要在云下容器网络插件中添加nodeAffinity使其不要被调度到云上ECS即可。参考文档:https://help.aliyun.com/document_detail/208052.html#section-jo1-b9e-q7v

(4) Is terway addon installed................ false

idc自建集群中的节点运行您自己的容器网络插件,云上ECS只能运行terway容器网络插件,所以您需要在使用节点池扩容ECS前,首先确保terway组件已正常安装。 请使用 onectl addon install terway-eniip进行一键安装和配置

(5) Is autoscaler addon installed............ false

如果您需要启用自动弹性伸缩节点池,请首先确保autoscaler组件可以正常安装和运行。请使用onectl addon install autoscaler进行一键安装和配置

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
5月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
206 9
|
5月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
7月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
676 33
|
7月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
384 19
|
7月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
10月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
7月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
226 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
9月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
8月前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
|
10月前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
772 13

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多