跳至內容

如何對 Amazon EKS 受管節點群組和啟動範本的問題進行疑難排解?

2 分的閱讀內容
0

我的 Amazon Elastic Kubernetes Service (Amazon EKS) 受管節點群組和啟動範本出現了問題。

解決方法

如果您使用具有指定 Amazon Machine Image (AMI) 的受管節點群組啟動範本來啟動工作節點,則必須設定使用者資料。如果您的叢集是私有的並且使用虛擬私有雲端 (VPC) 端點進行連線,請在使用者資料中指定下列屬性:

  • certificate-authority
  • api-server-endpoint
  • DNS 叢集 IP 位址

您還必須提供引導命令以便工作節點加入您的叢集。如果您將 Amazon 受管節點群組與自訂啟動範本一起使用,請根據啟動範本中的 AMI 指定正確的使用者資料。

**注意:**如果您使用受管節點群組啟動工作節點,且使用的是 Amazon EKS 最佳化的 Amazon Linux AMI,則不需要設定使用者資料。

為工作節點設定使用者資料

根據您的 AMI 設定使用者資料。

AL2

如果您使用 Amazon Linux 2 AMI,請在啟動範本的使用者資料區段指定下列資訊:

 MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -ex
/etc/eks/bootstrap.sh my-cluster \
  --b64-cluster-ca certificate-authority \
  --apiserver-endpoint api-server-endpoint \
  --dns-cluster-ip service-cidr.10 \
  --kubelet-extra-args '--max-pods=my-max-pods-value' \
  --use-max-pods false

--==MYBOUNDARY==-

AL2023

您可以將自我管理節點或受管節點群組與自訂啟動範本一起使用。建立新節點群組時,您必須提供 apiServerEndpoint、certificateAuthority 和 service CIDR 叢集中繼資料。Amazon Linux 會使用附加價值來引導工作節點並加入叢集。

組態範例:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="//"

--//
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    apiServerEndpoint: https://CCEABD8D413231403775F7AA9E56D037.gr7.us-west-2.eks.amazonaws.com
    certificateAuthority: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJYUxrK2N0M0Zmdll3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNE1qTXlNREk0TlRaYUZ3MHpOREE0TWpFeU1ETXpOVFphTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURTRWF1c25hS1A5azJYOEd1QkEzQ1czQkZjQ3owSk1EUjRrVDhxUERhOHA4OFY5bkNDcUkvMnlaa2sKSHdIc0hpRDR2OWtoc2hCN1h5OFZaeW56NG8vYkhEZUc5MTZCZ0xzN05Ld1E2Sjd4b0dKc3JyVGtwdUJ3dWpTMgpkbGtLSG0yNTRUelNiQ2VWUkFGbVJGVmljUUh5aEpTSElBN0tUT1dHeUhvUEZJd3l4NS8xZkpmdEIxM0Y3MlBBCm9DaFZBNHdEOVFEZ1NxR0xOMTVMNEN2REFVdFVXaXBtRTZQdWRBNTBxMzNCSzRpRzc4Q0lFbDNXSHl6L3dzOEcKek5hQ2N5ZnlINjRFSHpsVkRkZmFHMWh0ODhKZ01pKy82Vm1vbmthdlJhQzVHZlhsdk5MKzFtVnJycWhTT3hBRQpJS1N2aW9rZndjODA5bzJWaUtiSmhkUE5yQTRKQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSR3JPdzVaSmJ4ZmI2dTF1ek4wNFJtSkFCU1ZUQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQTFkTnE2aHhXSgp6OU4zM09XamU2cG5LU3pmbGdCaG5PRXRhSUlKa21kUWpUN0FDdlMwMDJyRjFnQUFneTVRR2pjM29mN3hzRzJoCkczemhuUGFTTXFLampsOWRnZGJsZTVEZmIwTjZGVlZXeGE3SFBxZ0NCeXZ1ZXdXOTYwcmxLZ1luMDJBVm16c3kKVW8rRXgwQVA4Q3lVUzQ5Z0RaSFN3MVZGbE1mbFkwb2thSERabG9lR256WDk1REc0Zzk4ZHR1Vkd1Sm1lZ1lpRApKUmN3T2xubUlDUHNsUXcrbGh2S0NFT0RvM0hBWWdwTGxkSFBvYTJCZlBwbk9IMWtMNlFFMURTZU8wQUhmNjBYCk1mTzVTNUwwQVFidk1aM005c2JJdDlhby9YbWk3NnJHMThtMzMrdy9LWkV5cVg1NHZ6UTlZUHBjSGV6bk5oY2oKUy9XajhNZk9KMk9SCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    cidr: 10.100.0.0/16
    name: my-first-eks-cluster
  kubelet:
    config:
      maxPods: 29
      clusterDNS:
      - 10.100.0.10
    flags:
    - "--node-labels=eks.amazonaws.com/sourceLaunchTemplateVersion=1,alpha.eksctl.io/cluster-name=my-first-eks-cluster,alpha.eksctl.io/nodegroup-name=ng-1,eks.amazonaws.com/nodegroup-image=ami-032a2a7895e882f27,eks.amazonaws.com/capacityType=ON_DEMAND,eks.amazonaws.com/nodegroup=ng-1,eks.amazonaws.com/sourceLaunchTemplateId=lt-0d8806dd42301728f"

--//--

nodeadm 節點初始化過程使用 YAML 組態架構。如需詳細資訊,請參閱 Amazon EKS AMI 網站上的 nodeadm 和合併多個組態物件。

如果您在受管節點群組啟動範本中使用多個節點組態,請參閱使用啟動範本自訂受管節點。

對 Amazon EKS 叢集中的錯誤進行疑難排解

Client.InternalError: Client error on launch

當您在自訂啟動範本中使用加密的 Amazon Elastic Block Store (Amazon EBS) 磁碟區且權限不正確時,就會出現 Client error on launch 錯誤。若要檢查加密狀態和 AWS Identity and Access Management (IAM) 權限或政策,請完成下列步驟:

  1. 啟動 AWS Key Management Service (AWS KMS) 金鑰,AWS KMS 使用此金鑰加密磁碟區。
  2. 確保 AWS KMS 金鑰具有所需的金鑰政策。
  3. 修改金鑰政策,以允許更多 IAM 角色使用加密的 Amazon EBS 磁碟區。

SourceEc2LaunchTemplateNotFound 或找不到 Amazon EC2 啟動範本 lt-abcdefghijklmn 版本 x

當您透過節點的 Amazon EC2 Auto Scaling 群組手動變更自訂啟動範本版本時,就會發生 SourceEc2LaunchTemplateNotFound 錯誤。您必須使用 Amazon EKS 主控台更新啟動範本版本。

若要從受管節點群組更新 Amazon Elastic Compute Cloud (Amazon EC2) 啟動範本,請完成下列步驟:

  1. 開啟 Amazon EKS console (Amazon EKS 主控台)。
  2. 在導覽窗格中,請選取 Clusters (叢集)。
  3. 在 Cluster name (叢集名稱) 下,選擇包含要更新節點群組的叢集。
  4. 選擇 Compute (計算) 索引標籤。
  5. 在 Node groups (節點群組),選取您的節點,然後選擇 Change version (變更版本)。
  6. 選取更新後的節點群組版本。此外,請確保 Update strategy (更新策略) 為 Rolling update (持續更新)。
  7. 選擇 Update (更新)。

當您使用啟動範本建立節點群組並刪除參考範本時,也會發生此錯誤。Amazon EKS 複製您用於建立節點群組的範本。如果刪除原始範本,則必須重新建立節點群組。

若要重新建立節點群組,請完成下列步驟:

  1. 啟動新節點群組。

  2. 執行以下命令來驗證所有節點是否運作狀態良好、處於就緒狀態,並已加入叢集:

    kubectl get nodes
  3. 耗盡您的工作節點。

  4. 刪除原始節點群組。

在建立新啟動範本之後,節點群組會進入「降級」狀態

如果節點群組進入降級狀態,您將收到類似以下範例的訊息:

"The Amazon EC2 Launch Template : lt-abcdefghijklmn has a new version associated with your Autoscaling group, which is not managed by Amazon EKS. Expected Launch Template version: x"。

當受管節點群組的 Amazon EC2 啟動範本版本與 Amazon EKS 建立的版本不符時,就會發生此錯誤。

您無法直接更新不使用自訂啟動範本的現有節點群組。若要解決此問題,請使用自訂設定建立啟動範本和版本。然後,使用啟動範本建立節點群組。如果您從自訂範本啟動了新的節點群組,請建立該範本的新版本。

執行個體無法加入 Amazon EKS 叢集

若要解決此問題,請參閱如何讓我的工作節點加入 Amazon EKS 叢集?

AWS 官方已更新 1 年前