本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安裝自我管理 Kubernetes 執行個體的代理程式
請依照本節中的步驟,為自我管理 Kubernetes 叢集上的工作負載安裝 Network Flow Monitor 代理程式。完成這些步驟後,Network Flow Monitor 代理程式 Pod 將在所有自我管理的 Kubernetes 叢集節點上執行。
如果您使用 Amazon Elastic Kubernetes Service (Amazon EKS),要遵循的安裝步驟如下一節:安裝 EKS AWS 網路流量監控代理程式附加元件。
開始之前
開始安裝程序之前,請遵循本節中的步驟,確保您的環境已設定為在正確的 Kubernetes 叢集上成功安裝代理程式。
- 確保支援您的 Kubernetes 版本
Network Flow Monitor 代理程式安裝需要 Kubernetes 1.25 版或更新的版本。
- 確保您已安裝必要的工具
您用於此安裝程序的指令碼需要您安裝下列工具。如果您尚未安裝工具,請參閱提供的連結以取得詳細資訊。
AWS Command Line Interface (CLI)。如需詳細資訊,請參閱《 AWS Command Line Interface 參考指南》中的安裝或更新至最新版本的 AWS Command Line Interface。
Helm 套件管理員。如需詳細資訊,請參閱在 Helm 網站上安裝
Helm。 kubectl
命令列工具。如需詳細資訊,請參閱 Kubernetes 網站上的安裝 kubectl。 make
Linux 命令相依性。如需詳細資訊,請參閱下列部落格文章:製作 Linux 命令的簡介:安裝和使用。例如,執行下列其中一項: 對於以 Debian 為基礎的分佈,例如 Ubuntu,請使用下列命令:
sudo apt-get install make
對於以 RPM 為基礎的分佈,例如 CentOS,請使用下列命令:
sudo yum install make
- 確保您擁有有效且正確設定的 KubeConfig 環境變數
Network Flow Monitor 代理程式安裝會使用 Helm 套件管理員工具,該工具使用 kubeconfig 變數
$HELM_KUBECONTEXT
來判斷要使用的目標 Kubernetes 叢集。此外,請注意,當 Helm 執行安裝指令碼時,預設會參考標準~/.kube/config
檔案。您可以變更組態環境變數、使用不同的組態檔案 (更新$KUBECONFIG
) 或定義要使用的目標叢集 (更新$HELM_KUBECONTEXT
)。- 建立網路流量監控 Kubernetes 命名空間
Network Flow Monitor 代理程式的 Kubernetes 應用程式會將其資源安裝到特定的命名空間。命名空間必須存在,安裝才能成功。若要確保所需的命名空間已就位,您可以執行下列其中一項操作:
開始
amazon-network-flow-monitor
之前,請先建立預設命名空間 。建立不同的命名空間,然後在執行安裝以建立目標時,在
$NAMESPACE
環境變數中定義它。
下載 Helm Chart 並安裝代理程式
您可以使用下列命令,從 AWS 公有儲存庫下載網路流量監控代理程式 Helm Chart。請確定您先向 GitHub 帳戶進行身分驗證。
git clone https://github.com/aws/network-flow-monitor-agent.git
在 ./charts/amazon-network-flow-monitor-agent
目錄中,您可以找到網路流量監控代理程式 Helm Chart 和 Makefile,其中包含用於安裝代理程式的安裝目標。您可以使用下列 Makefile 目標安裝 Network Flow Monitor 的代理程式: helm/install/customer
您可以視需要自訂安裝,例如執行下列動作:
# Overwrite the kubeconfig files to use KUBECONFIG=<MY_KUBECONFIG_ABS_PATH> make helm/install/customer # Overwrite the Kubernetes namespace to use NAMESPACE=<MY_K8S_NAMESPACE> make helm/install/customer
若要確認網路流量監控代理程式的 Kubernetes 應用程式 Pod 已成功建立和部署,請檢查其狀態是否為 Running
。您可以執行下列命令來檢查代理程式的狀態: kubectl get pods -o wide -A | grep amazon-network-flow-monitor
設定客服人員交付指標的許可
安裝 Network Flow Monitor 的代理程式後,您必須讓代理程式將網路指標傳送至 Network Flow Monitor 擷取 APIs。Network Flow Monitor 中的代理程式必須具有存取 Network Flow Monitor 擷取 APIs許可,以便他們可以交付為每個執行個體收集的網路流量指標。您可以透過為服務帳戶 (IRSA) 實作 IAM 角色來授予此存取權。
若要讓客服人員將網路指標交付至網路流量監視器,請遵循本節中的步驟。
實作服務帳戶的 IAM 角色
服務帳戶的 IAM 角色可讓您管理應用程式的登入資料,類似於 Amazon EC2 執行個體描述檔提供登入資料給 Amazon EC2 執行個體的方式。實作 IRSA 是提供網路流量監控代理程式成功存取網路流量監控擷取 APIs 所需的所有許可的建議方法。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的服務帳戶的 IAM 角色。
當您為網路流量監控代理程式設定 IRSA 時,請使用下列資訊:
ServiceAccount:當您定義 IAM 角色信任政策時,請為
ServiceAccount
指定aws-network-flow-monitor-agent-service-account
。命名空間:針對
namespace
,指定amazon-network-flow-monitor
。暫時登入資料部署:當您在部署 Network Flow Monitor 代理程式 Pod 之後設定許可時,
ServiceAccount
請使用 IAM 角色更新 ,Kubernetes 不會部署 IAM 角色登入資料。為了確保網路流量監控代理程式取得您指定的 IAM 角色登入資料,您必須推出重新啟動DaemonSet
。例如,使用如下所示的命令:kubectl rollout restart daemonset -n amazon-network-flow-monitor aws-network-flow-monitor-agent
確認網路流量監控代理程式已成功存取網路流量監控擷取 APIs
您可以使用 Network Flow Monitor 代理程式 Pod 的 HTTP 200 日誌,檢查以確保代理程式的組態正常運作。首先,搜尋網路流量監控代理程式 Pod,然後搜尋日誌檔案以尋找成功的 HTTP 200 請求。例如,您可以執行下列動作:
尋找網路流量監控代理程式 Pod 名稱。例如,您可以使用下列命令:
RANDOM_AGENT_POD_NAME=$(kubectl get pods -o wide -A | grep amazon-network-flow-monitor | grep Running | head -n 1 | tr -s ' ' | cut -d " " -f 2)
為您找到的 Pod 名稱 Grep 所有 HTTP 日誌。如果您已變更 NAMESPACE,請務必使用新的 NAMESPACE。
NAMESPACE=amazon-network-flow-monitor kubectl logs $
RANDOM_AGENT_POD_NAME
-\-namespace ${NAMESPACE} | grep HTTP
如果已成功授予存取權,您應該會看到類似以下的日誌項目:
... {"level":"INFO","message":"HTTP request complete","status":200,"target":"amzn_nefmon::reports::publisher_endpoint","timestamp":1737027525679} {"level":"INFO","message":"HTTP request complete","status":200,"target":"amzn_nefmon::reports::publisher_endpoint","timestamp":1737027552827}
請注意,網路流量監控代理程式會呼叫網路流量監控擷取 APIs,每 30 秒發佈一次網路流量報告。