協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
建立自我管理的 Bottlerocket 節點
注意
受管節點群組可能會為您的使用案例提供一些優勢。如需詳細資訊,請參閱 透過受管節點群組來簡化節點生命週期。
本主題會說明如何啟動向 Amazon EKS 叢集註冊的 Bottlerocketeksctl 文件上的自訂 AMI 支援
如需就地升級的資訊,請參閱 GitHub 上的 Bottlerocket 更新運算子
重要
-
Amazon EKS 節點為標準 Amazon EC2 執行個體,會根據一般 Amazon EC2 執行個體價格向您收取這些節點的費用。如需詳細資訊,請參閱 Amazon EC2 定價
。 -
您可在 AWS Outposts 的 Amazon EKS 擴充叢集中啟動 Bottlerocket 節點,但無法在 AWS Outposts 的本機叢集中啟動這些節點。如需詳細資訊,請參閱 使用 AWS Outposts 在內部部署 Amazon EKS。
-
您可以使用
x86或 Arm 處理器部署至 Amazon EC2 執行個體。不過,您無法部署至具有 Inferentia 晶片的執行個體。 -
Bottlerocket 與 AWS CloudFormation 相容。但是,沒有可複製的官方 CloudFormation 範本來部署 Amazon EKS 的 Bottlerocket 節點。
-
Bottlerocket 映像不會隨附 SSH 伺服器或 Shell。您可以使用頻外存取方法來允許 SSH 啟用管理員容器,並傳遞一些引導組態步驟與使用者資料。如需詳細資訊,請參閱 GitHub 上 bottlerocket README.md
中的這些部分:
此程序需要 eksctl 版本 0.214.0 或更新版本。您可使用以下命令檢查您的版本:
eksctl version
如需如何安裝或升級 eksctl 的指示,請參閱 eksctl 文件中的安裝eksctl 建立的叢集。
-
將以下內容複製到您的裝置。使用您叢集的名稱取代
my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭,且長度不可超過 100 個字元。在您要建立叢集的 AWS 區域和 AWS 帳戶中,該名稱必須是唯一的。使用您的節點群組名稱取代ng-bottlerocket。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。若要在 Arm 執行個體上部署,請使用 Arm 執行個體類型取代m5.large。使用 Amazon EC2 SSH 金鑰對名稱取代my-ec2-keypair-name,您可以在節點啟動後使用該金鑰對來透過 SSH 連接至節點。如果您還沒有 Amazon EC2 金鑰對,可以在 AWS 管理主控台 中建立一個。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對。使用您自己的值取代其餘所有範例值。完成取代後,請執行修改後的命令以建立bottlerocket.yaml檔案。如果指定 Arm Amazon EC2 執行個體類型,則請在部署前檢閱 Amazon EKS 最佳化 Arm Amazon Linux AMI 的考量事項。如需了解如何使用自訂 AMI 部署,請參閱 GitHub 上的建置 Bottlerocket
和 eksctl文件中的自訂 AMI 支援。若要部署受管節點群組,請使用啟動範本部署自訂 AMI。如需詳細資訊,請參閱 使用啟動範本自訂受管節點。 重要
若想將節點群組部署至 AWS Outposts、AWS Wavelength 或 AWS Local Zone 子網路,則不得在建立叢集時傳入 AWS Outposts、AWS Wavelength 或 AWS Local Zone 子網路。您必須在下列範例中指定子網路。如需詳細資訊,請參閱
eksctl文件中的從組態檔案建立節點群組和組態檔案結構描述 。使用叢集所在的 AWS 區域取代 region-code。cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.33' 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 -
使用下列命令部署節點。
eksctl create nodegroup --config-file=bottlerocket.yaml範例輸出如下。
建立節點時,會有數行輸出。輸出的最後幾行之一類似於以下的範例行。
[✔] created 1 nodegroup(s) in cluster "my-cluster" -
(選用) 使用 Amazon EBS CSI 外掛程式
在 Bottlerocket 節點上建立 Kubernetes 持續性磁碟區 。預設 Amazon EBS 驅動程式依賴於未包含 Bottlerocket 的檔案系統工具。如需使用驅動程式建立儲存類別的詳細資訊,請參閱 透過 Amazon EBS 使用 Kubernetes 磁碟區儲存。 -
(選用) 依預設
kube-proxy會將nf_conntrack_max核心參數設定為預設值,此值可能與開機時 Bottlerocket 原先設定的不同。若要保留 Bottlerocket 的預設設定,請使用以下命令編輯 kube-proxy組態。kubectl edit -n kube-system daemonset kube-proxy新增
--conntrack-max-per-core和--conntrack-min到kube-proxy引數,這些引數位於以下範例中。0設定意味著沒有改變。containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --conntrack-max-per-core=0 - --conntrack-min=0 -
(選用) 部署範例應用程式來測試您的 Bottlerocket 節點。
-
如果下列條件為真,我們建議封鎖 Pod 對 IMDS 的存取:
-
您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶,以便 Pod 僅具有所需的最低許可。
-
叢集中沒有 Pod 出於其他原因 (例如擷取當前的 AWS 區域) 需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS)。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -