安装Karpenter

本节我们将使用Helm来安装Karpenter

运行以下命令来安装:

# Logout of helm registry to perform an unauthenticated pull against the public ECR
helm registry logout public.ecr.aws

helm upgrade --install karpenter oci://public.ecr.aws/karpenter/karpenter --version ${KARPENTER_VERSION} --namespace karpenter --create-namespace \
  --set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"=${KARPENTER_IAM_ROLE_ARN} \
  --set settings.aws.clusterName=${CLUSTER_NAME} \
  --set settings.aws.clusterEndpoint=${CLUSTER_ENDPOINT} \
  --set settings.aws.defaultInstanceProfile=KarpenterNodeInstanceProfile-${CLUSTER_NAME} \
  --set settings.aws.interruptionQueueName=${CLUSTER_NAME} \
  --wait
  • 注意helm版本要大于v3.8.0,这个版本之后才支持OCI

Karpenter使用 Custom Resource Definition(CRD) 来声明它的配置,用这种方式简化了Karpenter的配置。


使用以下命令检查karpenter安装完成,看到有 karpenter pod在运行:

kubectl get pods -n karpenter

image-20231026081101953

安装kube-ops-view

使用helm安装kube-ops-view, 用于后面观察pod及node数量的变化:

helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm install my-kube-ops-view k8s-at-home/kube-ops-view --version 1.1.2 

运行在本地的8080端口,通过浏览器访问kube-ops-view:

export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=kube-ops-view,app.kubernetes.io/instance=my-kube-ops-view" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl port-forward $POD_NAME 8080:8080

如果是在cloud9, 也可以在浏览器打开页面:

image-20231026221035266

image-20231026221053617