本节我们将使用Helm来安装Karpenter
运行以下命令来安装:
KARPENTER_VERSION=$(curl -sL "https://api.github.com/repos/aws/karpenter/releases/latest" | jq -r ".tag_name")
export KARPENTER_VERSION_STR="${KARPENTER_VERSION/v}"
echo "Karpenter 的最新发布版本: $KARPENTER_VERSION_STR"
# 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_STR} --namespace karpenter --create-namespace \
--set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"=${KARPENTER_IAM_ROLE_ARN} \
--set settings.clusterName=${CLUSTER_NAME} \
--set settings.clusterEndpoint=${CLUSTER_ENDPOINT} \
--set settings.interruptionQueue=${CLUSTER_NAME} \
--set settings.featureGates.drift=true \
--set settings.featureGates.SpotToSpotConsolidation=true \
--wait
v3.8.0
,这个版本之后才支持OCIKarpenter使用 Custom Resource Definition(CRD) 来声明它的配置,用这种方式简化了Karpenter的配置。
使用 helm list
命令检查 karpenter 版本:
helm list -n karpenter
使用以下命令检查karpenter安装完成,看到有 karpenter
pod在运行:
kubectl get pods -n karpenter
使用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, 也可以在浏览器打开页面: