点击上方卡片,关注「CloudPilot AI」
5分钟,降低50%云成本
随着云原生技术的普及,企业对集群弹性和资源利用率的要求越来越高。作为云原生弹性领域的重要项目,Karpenter以其极致的弹性扩缩能力受到全球开发者的广泛关注。
这一进展得益于腾讯云团队在开源社区中的积极贡献,标志着 Karpenter 在中国开发者群体中的影响力持续扩大,也进一步丰富了其多云适配能力,为更多用户带来了智能、快速、高效的弹性扩缩容体验。
开源地址:
https://github.com/TencentCloud/karpenter-provider-tke
对 Karpenter 感兴趣的小伙伴,欢迎扫描下方二维码加群交流 ✨
01/
为什么选择Karpenter?
Karpenter 是一个专为 Kubernetes 集群设计的开源集群扩缩容项目,旨在提供高效的节点生命周期管理,帮助企业优化集群的的资源利用率和成本,同时提升集群数据面节点的运维效率。
相比传统的 Cluster Autoscaler,它拥有以下优势:
更快的响应速度:Pod Pending 后,几秒内即可触发节点创建。
按需节点定制:每次扩容都可以根据 Pod 需求动态生成节点,避免资源浪费。
灵活的实例选择:支持按成本、性能、容量等多维度优化节点选择。
关于 Karpenter vs Cluster Autoscaler 更多维度的对比信息,欢迎点击下方卡片,回复关键词【对比】获取 PDF
02/
功能亮点
karpenter-provider-tke作为 TKE 的官方 Provider,覆盖了 TKE 环境下 Karpenter 所需的关键能力,包括:
1. 原生适配 TKE,快速响应扩容需求
通过腾讯云 TKE Provider,Karpenter 能够根据集群负载的变化,智能地在 TKE 中创建、管理和回收节点,大幅提升了资源利用率和成本效率。
2. 支持丰富的节点配置策略
基于 TKE 的灵活实例规格选择,用户可以自定义节点池、指定可用区、选择不同计费模式(如按需、Spot 实例等),让扩容策略更加细粒度、贴合业务需求。
3. 无需预先定义节点组,极简运维体验
Karpenter 动态调度的特性,在 TKE 上得到了完整发挥。无需繁琐配置,即可根据实际需求即时生成最合适的节点,极大简化了节点管理。
4. 支持 TKE 特有能力
如安全组管理、节点标签设置、实例生命周期控制等功能,帮助用户在使用 Karpenter 时,依然能够无缝对接 TKE 的平台特性。
03/
上手安装
前提条件
一个可用的 Tencent Cloud TKE 集群
集群版本 ≥ 1.20
已安装并配置好:
-
• kubectl -
• helm(可选,用于其他组件)
有腾讯云 API 访问凭证(SecretId、SecretKey)
Step 1:创建集群密钥
访问:https://console.cloud.tencent.com/cam/capi 获取 secretID 和 secretKey,并在 K8s 集群中创建密钥(secret)。
kubectl create namespace karpenterkubectl -n karpenter create secret generic apisecret --from-file=./secretID --from-file=./secretKey
Step 2:安装或升级 TKE Provider
使用 Helm Chart 进行安装或升级:
# replace your TKE cluster ID and the region where your TKE cluster is locatedhelm upgrade --install karpenter https://github.com/tencentcloud/karpenter-provider-tke/raw/refs/heads/main/charts/karpenter-0.1.7.tgz --namespace "karpenter" --create-namespace \--set"settings.clusterID=cls-xxxx" \--set"settings.region=ap-singapore" \--set controller.resources.requests.cpu=0.1 \--set controller.resources.requests.memory=100Mi \--set controller.resources.limits.cpu=1 \--set controller.resources.limits.memory=1Gi \--set replicas=1 \--wait
注意:如果你的版本低于0.16,在升级前需要先升级 CRD:
kubectl apply -f https://github.com/tencentcloud/karpenter-provider-tke/raw/refs/heads/main/charts/karpenter/crds/karpenter.sh_nodepools.yamlkubectl apply -f https://github.com/tencentcloud/karpenter-provider-tke/raw/refs/heads/main/charts/karpenter/crds/karpenter.sh_nodeclaims.yamlkubectl apply -f https://github.com/tencentcloud/karpenter-provider-tke/raw/refs/heads/main/charts/karpenter/crds/karpenter.k8s.tke_tkemachinenodeclasses.yaml
Step 3:创建 NodeClass 和 NodePool
Karpenter 需要用 NodeClass 和 NodePool 来定义资源规则。以下是示例 YAML 文件,你可以稍作修改以应用至自己的集群中:
---apiVersion: karpenter.sh/v1kind: NodePoolmetadata:name: testannotations:kubernetes.io/description: "NodePool to restrict the number of cpus provisioned to 10"spec:disruption:consolidationPolicy: WhenEmptyOrUnderutilizedconsolidateAfter: 5mbudgets:- nodes: 10%template:spec:requirements:- key: kubernetes.io/archoperator: Invalues: ["amd64"]- key: kubernetes.io/osoperator: Invalues: ["linux"]- key: karpenter.k8s.tke/instance-familyoperator: Invalues: ["S5","SA2"]- key: karpenter.sh/capacity-typeoperator: Invalues: ["on-demand"]# - key: node.kubernetes.io/instance-type# operator: In# values: ["S5.MEDIUM2", "S5.MEDIUM4"]- key: "karpenter.k8s.tke/instance-cpu"operator: Gtvalues: ["1"]# - key: "karpenter.k8s.tke/instance-memory-gb"# operator: Gt# values: ["3"]nodeClassRef:group: karpenter.k8s.tkekind: TKEMachineNodeClassname: defaultlimits:cpu: 10---apiVersion: karpenter.k8s.tke/v1beta1kind: TKEMachineNodeClassmetadata:name: defaultannotations:kubernetes.io/description: "General purpose TKEMachineNodeClass"spec:## using kubectl explain tmnc.spec.internetAccessible to check how to use internetAccessible field.# internetAccessible:# chargeType: TrafficPostpaidByHour# maxBandwidthOut: 2## using kubectl explain tmnc.spec.systemDisk to check how to use systemDisk field.# systemDisk:# size: 60# type: CloudSSD## using kubectl explain tmnc.spec.dataDisks to check how to use systemDisk field.# dataDisks:# - mountTarget: /var/lib/container# size: 100# type: CloudPremium# fileSystem: ext4subnetSelectorTerms:# replace your tag which is already existed in https://console.cloud.tencent.com/tag/taglist- tags:karpenter.sh/discovery: cls-xxx# - id: subnet-xxxsecurityGroupSelectorTerms:- tags:karpenter.sh/discovery: cls-xxx# - id: sg-xxxsshKeySelectorTerms:- tags:karpenter.sh/discovery: cls-xxx# - id: skey-xxx
Step 4:验证云资源是否与 NodeClass 同步
kubectl describe tmnc defaultStatus:Conditions:Last Transition Time: 2024-08-21T09:17:26ZMessage:Reason: ReadyStatus: TrueType: ReadySecurity Groups:Id: sg-xxxSsh Keys:Id: skey-xxxId: skey-xxxId: skey-xxxSubnets:Id: subnet-xxxZone: ap-singapore-1Zone ID: 900001Id: subnet-xxxZone: ap-singapore-4Zone ID: 900004
04/
开源社区的贡献与支持
本次 Karpenter TKE Provider 的发布,离不开腾讯云团队在开源社区中的深度参与和贡献。
通过这一扩展,腾讯云环境中的 Kubernetes 集群可以更加智能、灵活地自动调整节点资源,帮助企业实现按需资源供应,显著提升集群的可扩展性和资源优化效率。这也是 Karpenter 在多云支持上的一次重要升级。
目前,TKE Provider 已经在 GitHub 上正式开源,欢迎所有开发者、用户和社区成员一同来参与使用、反馈和共建:https://github.com/TencentCloud/karpenter-provider-tke
未来,随着更多功能完善,如跨地域扩缩容等,TKE Provider 将持续提升在复杂场景下的弹性扩容能力。
值得关注的是,针对谷歌云 GCP 的支持已经在路上了,敬请期待!
推荐阅读
公司介绍
CloudPilot AI 是一家全球领先的 Karpenter 托管云服务提供商,致力于通过智能化、自动化的云资源调度和编排技术,帮助企业最大化云资源利用率。我们秉持“让客户在云中花费的每一分钱都物超所值”的使命,为客户提升10倍的资源效率,同时将云成本降低50%以上。
目前,开源K8s弹性伸缩器 Karpenter 已为全球超500家知名企业在生产环境中提供服务,包括阿迪达斯、Anthropic、Slack、Figma等。CloudPilot AI 已为数十家全球顶尖科技公司提供服务,累计为客户节省超过30万美金,平均节省67%。 选择CloudPilot AI,让每一笔支出都更智慧。
免费试用,2步5分钟,降低50%云成本:
cloudpilot.ai

