協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立自我管理 Bottlerocket 節點
注意
受管節點群組可能會為您的使用案例提供一些優勢。如需詳細資訊,請參閱使用受管節點群組簡化節點生命週。
本主題說明如何啟動向 Amazon EKS叢集註冊的 Bottlerocketeksctl
文件中的 和 自訂AMI支援
如需就地升級的相關資訊,請參閱 Bottlerocket 更新 上的運算子
重要
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
所建立的叢集。
-
將以下內容複製到您的裝置。使用您叢集的名稱取代
。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以英數字元開頭,且不得超過 100 個字元。名稱在 中必須是唯一的 AWS 帳戶 , AWS 區域 且您要在其中建立叢集。將my-cluster
取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。若要在 Arm 執行個體上部署,請以 Arm 執行個體類型取代ng-bottlerocket
。m5.large
將 取代為 Amazon EC2SSH金鑰對的名稱,您可以在啟動後使用 SSH將 連線至節點。如果您還沒有 Amazon EC2金鑰對,您可以在 中建立金鑰對 AWS Management Console。如需詳細資訊,請參閱 Amazon 使用者指南 中的 Amazon EC2金鑰對。 EC2 取代所有剩餘項目my-ec2-keypair-name
使用您自己的值。完成取代後,請執行修改後的命令以建立範例值
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
文件中的從組態檔案建立節點群組和組態檔案結構描述 。
將 取代 AWS 區域 為您的叢集所在的 。region-code
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
" -
(選用) 建立 Kubernetes 上的持久性磁碟區
Bottlerocket 節點EBSCSI 。預設 Amazon EBS驅動程式依賴未包含在 中的檔案系統工具 Bottlerocket。 如需使用驅動程式建立儲存體類別的詳細資訊,請參閱 存放 Kubernetes 使用 Amazon 的磁碟區 EBS。 -
(選用) 根據預設,
nf_conntrack_max
會將核心參數kube-proxy
設定為預設值,該值可能與 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 如果下列條件為 true,則存取 :
您計劃將IAM角色指派給所有 Kubernetes 服務帳戶,以便 Pods 僅具有他們所需的最低許可。
否 Pods 基於其他原因需要存取 Amazon EC2執行個體中繼資料服務 (IMDS),例如擷取目前的 AWS 區域。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。