選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 Kubernetes DaemonSet 在 Amazon EKS 工作者節點上安裝 SSM Agent - AWS 方案指引

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

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

使用 Kubernetes DaemonSet 在 Amazon EKS 工作者節點上安裝 SSM Agent

由 Mahendra Revanasiddappa (AWS) 建立

Summary

請注意,2021 年 9 月:最新的 Amazon EKS 最佳化 AMIs 會自動安裝 SSM 代理程式。如需詳細資訊,請參閱 2021 年 6 月 AMIs的版本備註

在 Amazon Elastic Kubernetes Service (Amazon EKS) 中,基於安全準則,工作者節點不會連接 Secure Shell (SSH) 金鑰對。此模式顯示如何使用 Kubernetes DaemonSet 資源類型,在所有工作者節點上安裝 AWS Systems Manager Agent (SSM Agent),而不是手動安裝或取代節點的 Amazon Machine Image (AMI)。DaemonSet 在工作者節點上使用 Cron 任務來排程 SSM Agent 的安裝。您也可以使用此模式在工作者節點上安裝其他套件。

當您對叢集中的問題進行故障診斷時,安裝隨需 SSM Agent 可讓您使用工作者節點建立 SSH 工作階段、收集日誌或查看執行個體組態,而不需要 SSH 金鑰對。

先決條件和限制

先決條件

  • 具有 Amazon Elastic Compute Cloud (Amazon EC2) 工作者節點的現有 Amazon EKS 叢集。

  • 容器執行個體應具備與 SSM 服務通訊所需的許可。AWS Identity and Access Management (IAM) 受管角色 AmazonSSMManagedInstanceCore 提供 SSM Agent 在 EC2 執行個體上執行的必要許可。如需詳細資訊,請參閱 AWS Systems Manager 文件

限制

  • 此模式不適用於 AWS Fargate,因為 Fargate 平台不支援 DaemonSets。

  • 此模式僅適用於 Linux 型工作者節點。

  • DaemonSet Pod 會以特殊權限模式執行。如果 Amazon EKS 叢集具有 Webhook,以特殊權限模式封鎖 Pod,則不會安裝 SSM Agent。

架構

下圖說明此模式的架構。

使用 Kubernetes DaemonSet 在 Amazon EKS 工作者節點上安裝 SSM Agent。

工具

工具

  • kubectl 是一種命令列公用程式,用於與 Amazon EKS 叢集互動。此模式使用 kubectl來部署 Amazon EKS 叢集上的 DaemonSet,這會在所有工作者節點上安裝 SSM Agent。

  • Amazon EKS 可讓您在 AWS 上輕鬆執行 Kubernetes,而無需安裝、操作和維護您自己的 Kubernetes 控制平面或節點。Kubernetes 是一套開放原始碼系統,用於容器化應用程式的自動化部署、擴展與管理。

  • AWS Systems Manager Session Manager 可讓您透過互動式、一鍵式瀏覽器型 shell 或透過 AWS Command Line Interface (AWS CLI) 來管理您的 EC2 執行個體、內部部署執行個體和虛擬機器 (VMs)。

Code

使用下列程式碼來建立 DaemonSet 組態檔案,該檔案將在 Amazon EKS 叢集上安裝 SSM Agent。請遵循 Epics 區段中的指示。

cat << EOF > ssm_daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: labels: k8s-app: ssm-installer name: ssm-installer namespace: kube-system spec: selector: matchLabels: k8s-app: ssm-installer template: metadata: labels: k8s-app: ssm-installer spec: containers: - name: sleeper image: busybox command: ['sh', '-c', 'echo I keep things running! && sleep 3600'] initContainers: - image: amazonlinux imagePullPolicy: Always name: ssm command: ["/bin/bash"] args: ["-c","echo '* * * * * root yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm & rm -rf /etc/cron.d/ssmstart' > /etc/cron.d/ssmstart"] securityContext: allowPrivilegeEscalation: true volumeMounts: - mountPath: /etc/cron.d name: cronfile terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumes: - name: cronfile hostPath: path: /etc/cron.d type: Directory dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler terminationGracePeriodSeconds: 30 EOF

史詩

任務描述所需的技能

安裝並設定 kubectl 以存取 EKS 叢集。

如果 kubectl尚未安裝並設定為存取 Amazon EKS 叢集,請參閱《Amazon EKS 文件》中的安裝 kubectl

DevOps

設定 kubectl

任務描述所需的技能

安裝並設定 kubectl 以存取 EKS 叢集。

如果 kubectl尚未安裝並設定為存取 Amazon EKS 叢集,請參閱《Amazon EKS 文件》中的安裝 kubectl

DevOps
任務描述所需的技能

建立 DaemonSet 組態檔案。

在此模式稍早的 Codesection 中使用程式碼來建立名為 的 DaemonSet 組態檔案ssm_daemonset.yaml,該檔案將部署到 Amazon EKS 叢集。

DaemonSet 啟動的 Pod 具有主要容器和init容器。主要容器具有 sleep命令。init 容器包含 command區段,可建立 cron 任務檔案,以在路徑 上安裝 SSM Agent/etc/cron.d/。cron 任務只會執行一次,而且它建立的檔案會在任務完成後自動刪除。

當初始化容器完成時,主要容器會等待 60 分鐘再結束。60 分鐘後,會啟動新的 Pod。如果 SSM Agent 遺失,此 Pod 會安裝 SSM Agent,或將 SSM Agent 更新至最新版本。

如有需要,您可以修改 sleep命令以重新啟動 Pod 一天一次或更頻繁地執行。 

DevOps

在 Amazon EKS 叢集上部署 DaemonSet。

若要在 Amazon EKS 叢集上部署您在上一個步驟中建立的 DaemonSet 組態檔案,請使用下列命令:

kubectl apply -f ssm_daemonset.yaml

此命令會建立 DaemonSet,以在工作者節點上執行 Pod,以安裝 SSM Agent。

DevOps

部署 DaemonSet

任務描述所需的技能

建立 DaemonSet 組態檔案。

在此模式稍早的 Codesection 中使用程式碼來建立名為 的 DaemonSet 組態檔案ssm_daemonset.yaml,該檔案將部署到 Amazon EKS 叢集。

DaemonSet 啟動的 Pod 具有主要容器和init容器。主要容器具有 sleep命令。init 容器包含 command區段,可建立 cron 任務檔案,以在路徑 上安裝 SSM Agent/etc/cron.d/。cron 任務只會執行一次,而且它建立的檔案會在任務完成後自動刪除。

當初始化容器完成時,主要容器會等待 60 分鐘再結束。60 分鐘後,會啟動新的 Pod。如果 SSM Agent 遺失,此 Pod 會安裝 SSM Agent,或將 SSM Agent 更新至最新版本。

如有需要,您可以修改 sleep命令以重新啟動 Pod 一天一次或更頻繁地執行。 

DevOps

在 Amazon EKS 叢集上部署 DaemonSet。

若要在 Amazon EKS 叢集上部署您在上一個步驟中建立的 DaemonSet 組態檔案,請使用下列命令:

kubectl apply -f ssm_daemonset.yaml

此命令會建立 DaemonSet,以在工作者節點上執行 Pod,以安裝 SSM Agent。

DevOps

相關資源

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。