RightSizing是调整分配给 pod 的资源以匹配其实际资源使用情况的过程。这可以帮助优化资源利用率、降低成本和提高应用程序性能。Karpenter 通过根据节点池中的实例要求和 pod spec中的资源请求来创建实例,从而提供了对RightSizing的支持。当 Karpenter 对我们的工作负载需求有准确信息时,它能够启动最适合我们的工作负载的节点。
重新部署应用, 在NodePool spec中指定了以下内容:
mkdir ~/environment/karpenter
cd ~/environment/karpenter
cat <<EoF> basic-rightsizing.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: inflate
spec:
replicas: 8
selector:
matchLabels:
app: inflate
template:
metadata:
labels:
app: inflate
spec:
terminationGracePeriodSeconds: 0
containers:
- name: inflate
image: public.ecr.aws/eks-distro/kubernetes/pause:3.7
resources:
requests:
memory: 1Gi
cpu: 1
nodeSelector:
eks-immersion-team: my-team
EoF
kubectl apply -f basic-rightsizing.yaml
deployment.apps/inflate configured
检查 Karpenter 的日志(我们应该在 karpenter 控制器 pod 日志中看到此日志)。
kubectl -n karpenter logs -l app.kubernetes.io/name=karpenter
c3.2xlarge, c4.2xlarge, c5.2xlarge, c5a.2xlarge, c5ad.2xlarge
和其他 43 种类型的实例,以容纳 {“cpu”:“7150m”,“memory”:“7Gi”,“pods”:“9”}c1.medium, c3.large, c4.large, c5.large, c5a.large
和其他 45 种类型的实例中选择,以容纳 {“cpu”:“1150m”,“memory”:“1Gi”,“pods”:“3”}有 7 个 pod 落在一个 c6a.2xlarge 实例(8 vCPU 和 16GIB)上,另一个 pod 落在另一个 c6a.large 实例(2 vCPU 和 4GIB)上。