本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 CLI AWS 的推論運算子安裝失敗
概觀:透過 AWS CLI 安裝推論運算子時,附加元件安裝可能會因為缺少相依性而失敗。本節涵蓋常見的 CLI 安裝失敗案例及其解決方案。
由於缺少 CSI 驅動程式,推論附加元件安裝失敗
問題:推論運算子附加元件建立失敗,因為 EKS 叢集上未安裝所需的 CSI 驅動程式相依性。
症狀和診斷:
錯誤訊息:
下列錯誤會出現在附加元件建立日誌或推論運算子日誌中:
S3 CSI driver not installed (missing CSIDriver s3.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information. FSx CSI driver not installed (missing CSIDriver fsx.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information.
診斷步驟:
-
檢查是否已安裝 CSI 驅動程式:
# Check for S3 CSI driver kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint # Check for FSx CSI driver kubectl get csidriver fsx.csi.aws.com kubectl get pods -n kube-system | grep fsx -
檢查 EKS 附加元件狀態:
# List all add-ons aws eks list-addons --cluster-name $EKS_CLUSTER_NAME --region $REGION # Check specific CSI driver add-ons aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION 2>/dev/null || echo "S3 CSI driver not installed" aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION 2>/dev/null || echo "FSx CSI driver not installed" -
檢查推論運算子附加元件狀態:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json
解決方法:
步驟 1:安裝遺失的 S3 CSI 驅動程式
-
為 S3 CSI 驅動程式建立 IAM 角色 (如果尚未建立):
# Set up service account role ARN (from installation steps) export S3_CSI_ROLE_ARN=$(aws iam get-role --role-name $S3_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "S3 CSI Role ARN: $S3_CSI_ROLE_ARN" -
安裝 S3 CSI 驅動程式附加元件:
aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-mountpoint-s3-csi-driver \ --addon-version v1.14.1-eksbuild.1 \ --service-account-role-arn $S3_CSI_ROLE_ARN \ --region $REGION -
驗證 S3 CSI 驅動程式安裝:
# Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION # Verify CSI driver is available kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint
步驟 2:安裝缺少的 FSx CSI 驅動程式
-
為 FSx CSI 驅動程式建立 IAM 角色 (如果尚未建立):
# Set up service account role ARN (from installation steps) export FSX_CSI_ROLE_ARN=$(aws iam get-role --role-name $FSX_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "FSx CSI Role ARN: $FSX_CSI_ROLE_ARN" -
安裝 FSx CSI 驅動程式附加元件:
aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-fsx-csi-driver \ --addon-version v1.6.0-eksbuild.1 \ --service-account-role-arn $FSX_CSI_ROLE_ARN \ --region $REGION # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION # Verify FSx CSI driver is running kubectl get pods -n kube-system | grep fsx
步驟 3:驗證所有相依性
安裝缺少的相依性後,請先確認它們執行正確,再重試推論運算子安裝:
# Check all required add-ons are active aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name metrics-server --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify all pods are running kubectl get pods -n kube-system | grep -E "(mountpoint|fsx|metrics-server)" kubectl get pods -n cert-manager
模型部署期間缺少推論自訂資源定義
問題:當您嘗試建立模型部署時,缺少自訂資源定義 (CRDs)。此問題會在您之前安裝並刪除推論附加元件時發生,而不清除具有定案器的模型部署。
症狀和診斷:
根本原因:
如果您在未先移除所有模型部署的情況下刪除推論附加元件,則具有定案器的自訂資源會保留在叢集中。這些定案者必須先完成,您才能刪除 CRDs。附加元件刪除程序不會等待 CRD 刪除完成,這會導致 CRDs保持終止狀態,並防止新的安裝。
診斷此問題
-
檢查 CRDs是否存在。
kubectl get crd | grep inference.sagemaker.aws.amazon.com -
檢查是否有凍結的自訂資源。
# Check for JumpStartModel resources kubectl get jumpstartmodels -A # Check for InferenceEndpointConfig resources kubectl get inferenceendpointconfigs -A -
檢查停滯資源上的定案器。
# Example for a specific JumpStartModel kubectl get jumpstartmodels <model-name> -n <namespace> -o jsonpath='{.metadata.finalizers}' # Example for a specific InferenceEndpointConfig kubectl get inferenceendpointconfigs <config-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'
解決方法:
從移除推論附加元件時未刪除的所有模型部署中手動移除定案器。為每個停滯的自訂資源完成以下步驟。
從 JumpStartModel 資源中移除定案者
-
列出所有命名空間的所有 JumpStartModel 資源。
kubectl get jumpstartmodels -A -
針對每個 JumpStartModel 資源,修補資源以將 metadata.finalizer 設定為空白陣列,以移除最終版本。
kubectl patch jumpstartmodels <model-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge下列範例示範如何修補名為 kv-l1-only 的資源。
kubectl patch jumpstartmodels kv-l1-only -n default -p '{"metadata":{"finalizers":[]}}' --type=merge -
確認已刪除模型執行個體。
kubectl get jumpstartmodels -A清除所有資源時,您應該會看到下列輸出。
Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=jumpstartmodels": the server could not find the requested resource (get jumpstartmodels.inference.sagemaker.aws.amazon.com) -
確認 JumpStartModel CRD 已移除。
kubectl get crd | grep jumpstartmodels.inference.sagemaker.aws.amazon.com如果成功移除 CRD,此命令不會傳回任何輸出。
從 InferenceEndpointConfig 資源中移除定案者
-
列出所有命名空間的所有 InferenceEndpointConfig 資源。
kubectl get inferenceendpointconfigs -A -
對於每個 InferenceEndpointConfig 資源,移除定稿器。
kubectl patch inferenceendpointconfigs <config-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge下列範例示範如何修補名為 my-inference-config 的資源。
kubectl patch inferenceendpointconfigs my-inference-config -n default -p '{"metadata":{"finalizers":[]}}' --type=merge -
確認組態執行個體已刪除。
kubectl get inferenceendpointconfigs -A清除所有資源時,您應該會看到下列輸出。
Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=inferenceendpointconfigs": the server could not find the requested resource (get inferenceendpointconfigs.inference.sagemaker.aws.amazon.com) -
確認 InferenceEndpointConfig CRD 已移除。
kubectl get crd | grep inferenceendpointconfigs.inference.sagemaker.aws.amazon.com如果成功移除 CRD,此命令不會傳回任何輸出。
重新安裝推論附加元件
清除所有停滯的資源並確認 CRDs已移除後,請重新安裝推論附加元件。如需詳細資訊,請參閱使用 EKS 附加元件安裝推論運算子。
驗證:
-
確認已成功安裝推論附加元件。
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table狀態應為 ACTIVE,運作狀態應為 HEALTHY。
-
確認 CRDs已正確安裝。
kubectl get crd | grep inference.sagemaker.aws.amazon.com您應該會看到輸出中列出的推論相關 CRDs。
-
測試建立新的模型部署,以確認問題已解決。
# Create a test deployment using your preferred method kubectl apply -f <your-model-deployment.yaml>
預防:
為避免此問題,請先完成下列步驟,再解除安裝推論附加元件。
-
刪除所有模型部署。
# Delete all JumpStartModel resources kubectl delete jumpstartmodels --all -A # Delete all InferenceEndpointConfig resources kubectl delete inferenceendpointconfigs --all -A # Wait for all resources to be fully deleted kubectl get jumpstartmodels -A kubectl get inferenceendpointconfigs -A -
確認已刪除所有自訂資源。
-
確認所有資源都已清除後,請刪除推論附加元件。
由於缺少 cert-manager,推論附加元件安裝失敗
問題:推論運算子附加元件建立失敗,因為未安裝 cert-manager EKS 附加元件,導致缺少自訂資源定義 (CRDs)。
症狀和診斷:
錯誤訊息:
下列錯誤會出現在附加元件建立日誌或推論運算子日誌中:
Missing required CRD: certificaterequests.cert-manager.io. The cert-manager add-on is not installed. Please install cert-manager and see the troubleshooting guide for more information.
診斷步驟:
-
檢查是否已安裝 cert-manager:
# Check for cert-manager CRDs kubectl get crd | grep cert-manager kubectl get pods -n cert-manager # Check EKS add-on status aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION 2>/dev/null || echo "Cert-manager not installed" -
檢查推論運算子附加元件狀態:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json
解決方法:
步驟 1:安裝 cert-manager 附加元件
-
安裝 cert-manager EKS 附加元件:
aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name cert-manager \ --addon-version v1.18.2-eksbuild.2 \ --region $REGION -
驗證 cert-manager 安裝:
# Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify cert-manager pods are running kubectl get pods -n cert-manager # Verify CRDs are installed kubectl get crd | grep cert-manager | wc -l # Expected: Should show multiple cert-manager CRDs
步驟 2:重試推論運算子安裝
-
安裝 cert-manager 之後,請重試推論運算子安裝:
# Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall the inference operator add-on aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION -
監控安裝:
# Check installation status aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table # Verify inference operator pods are running kubectl get pods -n hyperpod-inference-system
由於缺少 ALB 控制器,推論附加元件安裝失敗
問題:推論運算子附加元件建立失敗,因為未安裝或未針對推論附加元件正確設定 AWS Load Balancer控制器。
症狀和診斷:
錯誤訊息:
下列錯誤會出現在附加元件建立日誌或推論運算子日誌中:
ALB Controller not installed (missing aws-load-balancer-controller pods). Please install the Application Load Balancer Controller and see the troubleshooting guide for more information.
診斷步驟:
-
檢查是否已安裝 ALB 控制器:
# Check for ALB Controller pods kubectl get pods -n kube-system | grep aws-load-balancer-controller kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller # Check ALB Controller service account kubectl get serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null || echo "ALB Controller service account not found" kubectl get serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null || echo "ALB Controller service account not found in inference namespace" -
檢查推論運算子附加元件組態:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json
解決方法:
根據您的設定選擇下列其中一個選項:
選項 1:讓推論附加元件安裝 ALB 控制器 (建議)
-
請確定已在附加元件組態中建立並正確設定 ALB 角色:
# Verify ALB role exists export ALB_ROLE_ARN=$(aws iam get-role --role-name alb-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "ALB Role ARN: $ALB_ROLE_ARN" # Update your addon-config.json to enable ALB cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF
選項 2:使用現有的 ALB 控制器安裝
-
如果您已安裝 ALB 控制器,請將 附加元件設定為使用現有的安裝:
# Update your addon-config.json to disable ALB installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": false }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF
步驟 3:重試推論運算子安裝
-
使用更新的組態重新安裝推論運算子附加元件:
# Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION -
驗證 ALB 控制器是否正常運作:
# Check ALB Controller pods kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller kubectl get pods -n kube-system | grep aws-load-balancer-controller # Check service account annotations kubectl describe serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null
由於缺少 KEDA 運算子,推論附加元件安裝失敗
問題:推論運算子附加元件建立失敗,因為未安裝或未針對推論附加元件正確設定 KEDA (Kubernetes Event Driven Autoscaler) 運算子。
症狀和診斷:
錯誤訊息:
下列錯誤會出現在附加元件建立日誌或推論運算子日誌中:
KEDA operator not installed (missing keda-operator pods). KEDA can be installed separately in any namespace or via the Inference addon.
診斷步驟:
-
檢查是否已安裝 KEDA 運算子:
# Check for KEDA operator pods in common namespaces kubectl get pods -n keda-system | grep keda-operator 2>/dev/null || echo "KEDA not found in keda-system namespace" kubectl get pods -n kube-system | grep keda-operator 2>/dev/null || echo "KEDA not found in kube-system namespace" kubectl get pods -n hyperpod-inference-system | grep keda-operator 2>/dev/null || echo "KEDA not found in inference namespace" # Check for KEDA CRDs kubectl get crd | grep keda 2>/dev/null || echo "KEDA CRDs not found" # Check KEDA service account kubectl get serviceaccount keda-operator -A 2>/dev/null || echo "KEDA service account not found" -
檢查推論運算子附加元件組態:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json
解決方法:
根據您的設定選擇下列其中一個選項:
選項 1:讓推論附加元件安裝 KEDA (建議)
-
請確定已在附加元件組態中建立並正確設定 KEDA 角色:
# Verify KEDA role exists export KEDA_ROLE_ARN=$(aws iam get-role --role-name keda-operator-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "KEDA Role ARN: $KEDA_ROLE_ARN" # Update your addon-config.json to enable KEDA cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": true, "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF
選項 2:使用現有的 KEDA 安裝
-
如果您已安裝 KEDA,請將 附加元件設定為使用現有的安裝:
# Update your addon-config.json to disable KEDA installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": false } } EOF
步驟 3:重試推論運算子安裝
-
使用更新的組態重新安裝推論運算子附加元件:
# Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION -
驗證 KEDA 是否正常運作:
# Check KEDA pods kubectl get pods -n hyperpod-inference-system | grep keda kubectl get pods -n kube-system | grep keda kubectl get pods -n keda-system | grep keda 2>/dev/null # Check KEDA CRDs kubectl get crd | grep scaledobjects kubectl get crd | grep scaledjobs # Check KEDA service account annotations kubectl describe serviceaccount keda-operator -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount keda-operator -n kube-system 2>/dev/null kubectl describe serviceaccount keda-operator -n keda-system 2>/dev/null