協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的在 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.212.0 或更新版本。您可使用以下命令檢查您的版本:
eksctl version
如需如何安裝或升級 的指示eksctl,請參閱 eksctl 文件中的安裝eksctl。
-
將以下內容複製到您的裝置。使用您叢集的名稱取代
my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以英數字元開頭,且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。以節點群組的名稱取代ng-bottlerocket。節點群組名稱不能超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。若要在 Arm 執行個體上部署,請將m5.large取代為 Arm 執行個體類型。將my-ec2-keypair-name取代為 Amazon EC2 SSH 金鑰對的名稱,您可以在啟動後使用 SSH 將它們連接到節點。如果您還沒有 Amazon EC2 金鑰對,您可以在 中建立一個金鑰對 AWS Management Console。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對。將所有剩餘的範例值取代為您自己的值。進行替換後,請執行修改後的命令來建立bottlerocket.yaml檔案。如果指定 Arm Amazon EC2 執行個體類型,請在部署之前檢閱 Amazon EKS 最佳化 Arm Amazon Linux AMIs中的考量事項。如需了解如何使用自訂 AMI 部署,請參閱 GitHub 上的建置 Bottlerocket
和 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.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 因其他原因需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS),例如擷取目前 AWS 區域。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -