CloudPilot AI携手阿里云发布Karpenter阿里云 Provider,优化ACK集群主动扩 ...

打印 上一主题 下一主题

主题 1521|帖子 1521|积分 4563

去年7月,Kubernetes 告竣十万星标的里程碑,彰显其作为云计算领域核心容器编排工具的广泛应用与认可。Kubernetes 的普及加速了企业的上云进程,使云计算成为数字化转型的主流选择。随着越来越多企业依赖 Kubernetes 提供机动的基础设施扩展,云支出管理需求也愈发紧迫。根据 Flexera 发布的《2023年云计算现状陈诉》,超过 80% 的受访企业已将云支出管理视为首要任务。
在这种配景下,专为 Kubernetes 设计的开源主动扩缩容项目 Karpenter 应运而生。Karpenter 于 2021 年 11 月首次发布并开源,并在 2023 年进入 beta 阶段后贡献给云原生计算基金会(CNCF)。今年8月,Karpenter 推出 1.0 版本,标志着该项目迈向成熟,自发布以来已被 Slack阿迪达斯奥迪等行业向导者应用于生产情况。
然而,Karpenter 恒久以来仅支持 AWS,难以满足许多企业的多云与混淆云 IT 策略。为响应开源社区用户的需求,CloudPilot AI 携手阿里云容器服务和弹性计算团队联合开发了 karpenter-provider-alibabacloud,将 Karpenter 的机动多策略集群弹性带给阿里云用户。
经过数月紧锣密鼓的开发,今天,我们很高兴地公布 karpenter-provider-alibabacloud 已正式发布。
开源地址:
https://github.com/cloudpilot-ai/karpenter-provider-alibabacloud
文档地址:
https://docs.cloudpilot.ai/karpenter/alibabacloud/
Karpenter 如何工作?

Karpenter 是一个专为 Kubernetes 集群设计的开源集群扩缩容项目,旨在提供高效的节点生命周期管理,资助企业优化集群的的资源利用率和本钱,同时提拔集群数据面节点的运维效率。
通过主动监控和分析集群中 pending 的工作负载,Karpenter 能快速创建合适的计算节点,以确保工作负载始终有足够的资源承载,保障服务持续稳定运行。而在资源需求淘汰时,它会主动释放多余节点,资助企业按需缩减资源,从而降低云计算支出

Karpenter 的独特优势还在于它能够识别和优化资源利用率低节点,而且可以对接按需和 Spot 等多种计费模式的节点,通过节点整合(binpack)和节点更换功能,将业务从低利用率/本钱更高的节点迁徙到能够提拔利用率/更具本钱效益的节点实例上。
相较于另一款开源弹性伸缩工具 Cluster Autoscaler,Karpenter 没有节点组的概念,通过动态计算资源分配以及直接对接阿里云的弹性供应组,淘汰多层API交互,使得分配资源最优、缩短API调用耗时、降低配置复杂性;同时在连续多次弹性扩容等场景下,能够实现更高成功率的弹性资源交付。
Karpenter 可以为阿里云的客户带来什么?

阿里云 Provider 的发布为 Karpenter 提供了对阿里云情况的原生支持。使用阿里云的企业可以在 Kubernetes 集群中充分利用 Karpenter 的主动扩缩容和资源优化功能,以更高效地管理计算资源。这不仅节省了企业的管理时间和精力,还实现了更智能、更机动的集群管理,从而降低总体云本钱,助力企业将更多预算投入到业务增长中。
对于企业而言,这一扩展带来的价值远超资源调理的简朴主动化。通过阿里云 Provider,Karpenter 能根据工作负载需求实时调整节点数目,同时结合阿里云的订价模式(按需/Spot 等)和资源特性,选择最具性价比的实例类型。这不仅资助企业充分利用阿里云的弹性伸缩能力,轻松应对突发流量需求,还能最大化资源利用率,以最低本钱完成节点扩缩,明显淘汰空闲资源的浪费。
Karpenter 如何高效主动扩展 ACK 集群?

本章节将详细先容 Karpenter 如安在 ACK 上实现从安装到主动扩缩容的完整流程,并资助您掌握如何利用 Karpenter 最大化 ACK 集群的资源利用效率。
Step 1:前期准备
在阿里云 ACK 集群上安装 Karpenter 首先必要配置阿里云的 API 权限,以便 Karpenter 能够主动创建、管理和释放节点。目前,Karpenter 临时使用 AK/SK 凭证,未来将会切换至 RRSA 来增强安全性。
在开始安装 Karpenter 之前,请准备:

  • 阿里云 CLI
  • Kubectl
  • Helm
运行以下命令,以配置带有 AK/SK 凭证的阿里云 CLI:
  1. aliyun configure
复制代码
Step 2:准备阿里云 ACK 集群
如果您已经有一个 ACK 集群,可忽略此步调。
本步调主要用于创建一个用于演示目标的 ACK 集群。除了上述组件外,还需安装 Terraform。
配置阿里云凭据情况变量:
  1. export ALICLOUD_ACCESS_KEY=<aliyun access key>
  2. export ALICLOUD_SECRET_KEY=<aliyun secret key>
  3. export ALICLOUD_REGION="cn-shenzhen"   
复制代码
下载 repo:
  1. git clone https://github.com/cloudpilot-ai/examples.git
  2. cd examples/clusters/ack-spot-flannel
复制代码
执行以下命令创建 ACK 集群:
  1. export TF_VAR_CLUSTER_NAME=<your_cluster_name>
  2. terraform init
  3. terraform apply --auto-approve
复制代码
运行以下命令获取 kubeconfig:
  1. export CLUSTER_NAME=<your_cluster_name>
  2. export KUBECONFIG=~/.kube/demo
  3. export CLUSTER_ID=$(aliyun cs GET /clusters | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.[] | select(.name == $CLUSTER_NAME) | .cluster_id')
  4. aliyun cs GET /k8s/$CLUSTER_ID/user_config | jq -r '.config' > $KUBECONFIG
复制代码
测试集群能否正常运行:
  1. kubectl get nodes
复制代码
集群到此创建完毕。
Step 3:配置情况变量
运行下方命令,设置相应的情况变量:
  1. export CLUSTER_NAME=<your_cluster_name>              # Config your cluster name
  2. export CLUSTER_REGION=<your_cluster_region>          # Config the alibabacloud region
  3. export ALIBABACLOUD_AK=<alibaba_cloud_access_key>    # Config the alibabacloud AK
  4. export ALIBABACLOUD_SK=<alibaba_cloud_secret_key>    # Config the alibabacloud SK
  5. export CLUSTER_ID=$(aliyun cs GET /clusters | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.[] | select(.name == $CLUSTER_NAME) | .cluster_id')
  6. export VSWITCH_IDS=$(aliyun cs GET /api/v1/clusters --header "Content-Type=application/json;" | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.clusters[] | select(.name == $CLUSTER_NAME) | .vswitch_ids[]')
  7. export SECURITYGROUP_ID=$(aliyun cs GET /api/v1/clusters --header "Content-Type=application/json;" | jq -r --arg CLUSTER_NAME "$CLUSTER_NAME" '.clusters[] | select(.name == $CLUSTER_NAME) | .security_group_id')
复制代码
Step 4:给相关的资源打标签
Karpenter 通过 Tag 找到相应的安全组和 vSwitch,运行以下命令对其进行标志:
[code]# Tag the security groupaliyun tag TagResources --region ${CLUSTER_REGION} --RegionId ${CLUSTER_REGION} --ResourceARN.1 "acs:ecs:*:*:securitygroup/${SECURITYGROUP_ID}" --Tags "{\"karpenter.sh/discovery\": \"$CLUSTER_NAME\"}"# Tag the vswitchIFS=' 'while IFS= read -r vs_id; do  aliyun tag TagResources --region ${CLUSTER_REGION} --RegionId ${CLUSTER_REGION} --ResourceARN.1 "acs:vpc:*:*:vswitch/${vs_id}" --Tags "{\"karpenter.sh/discovery\": \"$CLUSTER_NAME\"}"done

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表