正在啟動自我管理的 Bottlerocket 節點 - Amazon EKS

協助改善此頁面

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

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

正在啟動自我管理的 Bottlerocket 節點

注意

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

本主題說明如何啟動向 Amazon EKS 叢集註冊的自動擴展節點群組。 Bottlerocket是以開放原始碼為Linux基礎 AWS 的作業系統,可用來在虛擬機器或裸機主機上執行容器。節點加入叢集後,您就可以將 Kubernetes 應用程式部署至其中。如需 Bottlerocket 的詳細資訊,請參閱 GitHub 上的搭配 Amazon EKS 使用 Bottlerocket AMI,以及 eksctl 文件中的自訂 AMI 支援

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

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

  • 您可以在 Outposts 上的 Amazon EKS 延伸叢集中啟動保安特勒章節點,但無法在 AWS Outposts 的本機叢集中啟動它們。 AWS 如需詳細資訊,請參閱 AWS Outposts 上的 Amazon EKS

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

  • Bottlerocket兼容 AWS CloudFormation. 但是,沒有可以複製的官方 CloudFormation 範本來部署 Amazon EKS 的Bottlerocket節點。

  • Bottlerocket 映像不會隨附 SSH 伺服器或 Shell。您可以使用 out-of-band 訪問方法來允許SSH啟用管理容器,並通過一些引導配置步驟與用戶數據。如需詳細資訊,請參閱 GitHub 上 bottlerocket README.md 中的這些章節:

使用 eksctl 啟動 Bottlerocket 節點

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

eksctl version

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

注意

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

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

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

    重要

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

    cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.30' 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. (選用) 使用 Amazon EBS CSI 外掛程式在 Bottlerocket 節點上建立 Kubernetes 持續性磁碟區。預設 Amazon EBS 驅動程式依賴於未包含 Bottlerocket 的檔案系統工具。如需使用驅動程式建立儲存類別的詳細資訊,請參閱 使用 Amazon EBS 儲存

  4. (選用) 依預設 kube-proxy 會將 nf_conntrack_max 核心參數設定為預設值,此值可能與開機時 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 的存取:

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

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

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