協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
想要為此使用者指南做出貢獻? 選擇 GitHub 上的編輯此頁面連結,該連結位於每個頁面的右窗格中。您的貢獻將幫助我們的使用者指南更適合每個人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立自我管理Bottlerocket節點
注意
受管節點群組可能會為您的使用案例提供一些優勢。如需詳細資訊,請參閱使用受管節點群組簡化節點生命週期。
本主題說明如何啟動向 Amazon EKS 叢集註冊的 Bottlerocketeksctl
文件中的使用 Bottlerocket AMI 搭配 Amazon EKS
如需就地升級的相關資訊,請參閱 上的 Bottlerocket Update Operator
重要
-
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.199.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 部署的說明,請參閱 eksctl
文件中的在 上建置 Bottlerocket
+ 重要:若要將節點群組部署至 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
-
使用下列命令部署節點。
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’s default setting, edit the `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 服務帳戶,以便 Pods 僅具有所需的最低權限。
-
叢集Pods中沒有任何 需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS) 的其他原因,例如擷取目前 AWS 區域。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -