建立自我管理 Bottlerocket 節點 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立自我管理 Bottlerocket 節點

注意

受管節點群組可能會為您的使用案例提供一些優勢。如需詳細資訊,請參閱使用受管節點群組簡化節點生命週

本主題說明如何啟動向 Amazon EKS叢集註冊的 Bottlerocket 節點 Auto Scaling 群組。Bottlerocket 是 Linux的 型開放原始碼作業系統 AWS ,可用於在虛擬機器或裸機主機上執行容器。節點加入叢集後,您可以部署 Kubernetes 應用程式。如需關於 Bottlerocket,請參閱使用 Bottlerocket AMI 搭配 Amazon EKS on GitHub eksctl 文件中的 和 自訂AMI支援

如需就地升級的相關資訊,請參閱 Bottlerocket 更新 上的運算子 GitHub.

重要
  • Amazon EKS節點是標準 Amazon EC2執行個體,您需根據一般 Amazon EC2執行個體價格支付這些節點的費用。如需詳細資訊,請參閱 Amazon EC2定價。

  • 您可以在 Outposts 上的 Amazon EKS延伸叢集中 AWS 啟動 Bottlerocket 節點,但無法在 AWS Outposts 的本機叢集中啟動它們。如需詳細資訊,請參閱在EKS現場部署 Amazon AWS Outposts

  • 您可以使用 x86或 部署至 Amazon EC2執行個體 Arm 處理器。不過,您無法部署至具有 的執行個體 Inferentia 晶片。

  • Bottlerocket 與 相容 AWS CloudFormation。不過,沒有可複製以部署的正式 CloudFormation 範本 Bottlerocket Amazon 的節點EKS。

  • Bottlerocket 映像不會隨附 SSH 伺服器或 Shell。您可以使用 out-of-band存取方法來允許 SSH 啟用 管理員容器,並使用使用者資料傳遞一些引導組態步驟。如需詳細資訊,請參閱 上的 Bottlerocket README.md 中的這些區段 GitHub:

若要啟動 Bottlerocket 節點使用 eksctl

此程序需要 eksctl 版本 0.191.0 或更新版本。您可使用以下命令檢查您的版本:

eksctl version

如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的 Installation 一節。

注意

此程序只適用於使用 eksctl 所建立的叢集。

  1. 將以下內容複製到您的裝置。使用您叢集的名稱取代 my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以英數字元開頭,且不得超過 100 個字元。名稱在 中必須是唯一的 AWS 帳戶 , AWS 區域 且您要在其中建立叢集。將 ng-bottlerocket 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。若要在 Arm 執行個體上部署,請以 Arm 執行個體類型取代 m5.largemy-ec2-keypair-name 將 取代為 Amazon EC2SSH金鑰對的名稱,您可以在啟動後使用 SSH將 連線至節點。如果您還沒有 Amazon EC2金鑰對,您可以在 中建立金鑰對 AWS Management Console。如需詳細資訊,請參閱 Amazon 使用者指南 中的 Amazon EC2金鑰對 EC2 取代所有剩餘項目 範例值 使用您自己的值。完成取代後,請執行修改後的命令以建立 bottlerocket.yaml 檔案。

    如果指定 Arm Amazon EC2執行個體類型,請在部署Amazon EKS最佳化 Arm Amazon Linux AMIs之前檢閱 中的考量事項。如需如何使用自訂 進行部署的指示AMI,請參閱建置 Bottlerocket 在 上 GitHub eksctl 文件中的 和 自訂AMI支援。若要部署受管節點群組,AMI請使用啟動範本部署自訂。如需詳細資訊,請參閱使用啟動範本自訂受管節點

    重要

    若要將節點群組部署至 AWS Outposts AWS Wavelength、 或 AWS Local Zone 子網路,請勿在建立叢集時傳遞 AWS Outposts AWS Wavelength、 或 AWS Local Zone 子網路。您必須在下列範例中指定子網路。如需詳細資訊,請參閱 eksctl 文件中的從組態檔案建立節點群組組態檔案結構描述region-code將 取代 AWS 區域 為您的叢集所在的 。

    cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.31' iam: withOIDC: true nodeGroups: - name: ng-bottlerocket instanceType: m5.large desiredCapacity: 3 amiFamily: Bottlerocket ami: auto-ssm iam: attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy ssh: allow: true publicKeyName: my-ec2-keypair-name EOF
  2. 使用下列命令部署節點。

    eksctl create nodegroup --config-file=bottlerocket.yaml

    範例輸出如下。

    建立節點時,會有數行輸出。輸出的最後幾行之一類似於以下的範例行。

    [✔] created 1 nodegroup(s) in cluster "my-cluster"
  3. (選用) 建立 Kubernetes 上的持久性磁碟區 Bottlerocket 節點EBSCSI。預設 Amazon EBS驅動程式依賴未包含在 中的檔案系統工具 Bottlerocket。 如需使用驅動程式建立儲存體類別的詳細資訊,請參閱 存放 Kubernetes 使用 Amazon 的磁碟區 EBS

  4. (選用) 根據預設, nf_conntrack_max 會將核心參數kube-proxy設定為預設值,該值可能與 Bottlerocket 原始會在開機時設定。若要保留 Bottlerocket的預設設定 ,請使用下列命令編輯kube-proxy組態。

    kubectl edit -n kube-system daemonset kube-proxy

    新增 --conntrack-max-per-core--conntrack-minkube-proxy 引數,這些引數位於以下範例中。0 設定意味著沒有改變。

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --conntrack-max-per-core=0 - --conntrack-min=0
  5. (選用) 部署範例應用程式以測試您的 Bottlerocket 節點。

  6. 我們建議封鎖 Pod IMDS 如果下列條件為 true,則存取 :

    • 您計劃將IAM角色指派給所有 Kubernetes 服務帳戶,以便 Pods 僅具有他們所需的最低許可。

    • 否 Pods 基於其他原因需要存取 Amazon EC2執行個體中繼資料服務 (IMDS),例如擷取目前的 AWS 區域。

    如需詳細資訊,請參閱‬限制存取指派給工作節點的執行個體設定檔‭