協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 上準備本機 Amazon EKS叢集 AWS Outposts ,以進行網路中斷連線
如果您的本機網路與 失去連線 AWS 雲端,您可以繼續使用 Outpost 上的本機 Amazon EKS叢集。本主題包含如何準備本機叢集以應對網路連線中斷和相關考量事項。
準備本機叢集以應對網路連線中斷時的考量事項:
-
本機叢集可在臨時、計劃外網路中斷連線期間實現穩定性和持續操作。 AWS Outposts 是完全連線的方案,可作為資料中心 AWS 雲端 的延伸。如果您的 Outpost 和 之間發生網路中斷連線 AWS 雲端,建議您嘗試還原連線。如需說明,請參閱《AWS Outposts 使用者指南》中的 AWS Outposts 機架網路疑難排解檢查清單。如需有關如何針對本機叢集問題進行疑難排解的詳細資訊,請參閱 對 上的本機 Amazon EKS叢集進行故障診斷 AWS Outposts。
-
Outpost 會發射
ConnectedStatus
指標,您可用此指標來監控 Outpost 的連線狀態。如需詳細資訊,請參閱 AWS Outposts 使用者指南中的 Outpost 指標。 -
本機叢集使用 IAM作為使用身分驗證器的預設AWS Identity and Access Management 身分驗證機制 Kubernetes
。 IAM 在網路中斷連線期間無法使用 。因此,本機叢集會使用 x.509
憑證支援替代身分驗證機制,您可使用這些憑證在網路連線中斷期間連線至叢集。如需有關如何取得和使用您叢集x.509
憑證的資訊,請參閱 在網路連線中斷期間針對本機叢集進行身分驗證。 -
如果您在網路中斷連線期間無法存取 Route 53,請考慮在內部部署環境中使用本機DNS伺服器。所以此 Kubernetes 控制平面執行個體使用靜態 IP 地址。您可以設定用來使用端點主機名稱和 IP 地址連線至叢集的主機,以替代使用本機DNS伺服器。如需詳細資訊,請參閱 使用者指南 DNS 中的 。 AWS Outposts
-
如果您預期應用程式流量會在網路連線中斷期間增加,則可在連線至雲端時在叢集中佈建備用運算容量。Amazon EC2執行個體包含在 的價格中 AWS Outposts。因此,執行備用執行個體不會影響您 AWS 的使用成本。
-
在網路連線中斷期間,若要啟用工作負載的建立、更新和擴展操作,則必須可透過區域網路存取應用程式的容器映像,且叢集須有足夠容量。本機叢集不會為您託管容器登錄檔。如果 Pods 之前已在這些節點上執行過,容器映像會快取在節點上。如果您通常從雲端ECR的 Amazon 提取應用程式的容器映像,請考慮執行本機快取或登錄檔。如果您在網路連線中斷期間需要建立、更新和擴展工作負載資源的操作,則本機快取或登錄會很有幫助。
-
本機叢集使用 Amazon EBS作為持久性磁碟區的預設儲存類別,而 Amazon EBSCSI驅動程式則用於管理 Amazon EBS持久性磁碟區的生命週期。在網路中斷連線期間,Pods Amazon 支援的 EBS無法建立、更新或擴展。這是因為這些操作需要呼叫雲端EBSAPI中的 Amazon。如果您要在本機叢集上部署具狀態的工作負載,且在網路連線中斷期間需要建立、更新或擴展操作,則請考慮使用替代儲存機制。
-
如果無法存取 AWS 區域內的相關 APIs(例如 Amazon 或 Amazon S3 APIs的 ) AWS Outposts ,則無法建立或刪除 EBS Amazon EBS快照。
-
將 ALB(輸入) 與 AWS Certificate Manager (ACM) 整合時,會將憑證推送並儲存在運算執行個體的 AWS Outposts ALB記憶體中。目前的TLS終止會在中斷與 的連線時繼續運作 AWS 區域。在此內容中的變更操作將會失敗 (例如新的輸入定義、以新ACM為基礎的憑證API操作、ALB運算規模或憑證輪換)。如需詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的針對受管憑證續約進行疑難排解。
-
Amazon EKS控制平面日誌會在本機快取於 Kubernetes 網路中斷連線期間控制平面執行個體。重新連線時,日誌會傳送至父系 中的 CloudWatch 日誌 AWS 區域。您可以使用 Prometheus
, Grafana 或 Amazon EKS合作夥伴解決方案,使用 監控本機叢集 Kubernetes API 伺服器指標端點或使用 Fluent Bit 日誌。 -
如果您使用的是 AWS Load Balancer Controller 適用於應用程式流量的 Outposts,現有 Pods 前方為 AWS Load Balancer Controller 在網路中斷連線期間繼續接收流量。新增 Pods 在網路中斷連線期間建立的 不會接收流量,直到 Outpost 重新連線至 為止 AWS 雲端。連線至 時,請考慮為應用程式設定複本計數 AWS 雲端 ,以適應網路中斷連線期間的擴展需求。
-
所以此 Amazon VPC CNI plugin for Kubernetes 預設為次要 IP 模式
。其使用 WARM_ENI_TARGET
=1
來設定,這會允許外掛程式保留可用 IP 地址的「完整彈性網路介面」。請依據中斷連線狀態期間的擴展需求來考慮變更WARM_ENI_TARGET
、WARM_IP_TARGET
和MINIMUM_IP_TARGET
值。如需詳細資訊,請參閱 上外掛程式readme
的檔案 GitHub。如需最大數量 的清單 Pods 每個執行個體類型支援的 ,請參閱 上的 eni-max-pods.txt
檔案 GitHub。
在網路連線中斷期間針對本機叢集進行身分驗證
AWS Identity and Access Management (IAM) 在網路中斷連線期間無法使用。中斷連線時,您無法使用IAM憑證驗證本機叢集。但是,您可以在中斷連線時使用 x509
憑證,透過區域網路連接至您的叢集。您需要下載並存放客戶端 X509
憑證,以在中斷連線期間使用。本此主題中,您將了解如何在中斷連線時建立和使用憑證對叢集進行身分驗證。
-
建立憑證簽署請求。
-
產生憑證簽署請求。
openssl req -new -newkey rsa:4096 -nodes -days 365 \ -keyout admin.key -out admin.csr -subj "/CN=admin"
-
在 中建立憑證簽署請求 Kubernetes.
BASE64_CSR=$(cat admin.csr | base64 -w 0) cat << EOF > admin-csr.yaml apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: admin-csr spec: signerName: kubernetes.io/kube-apiserver-client request: ${BASE64_CSR} usages: - client auth EOF
-
-
使用
kubectl
建立憑證簽署請求。kubectl create -f admin-csr.yaml
-
檢查憑證簽署請求的狀態。
kubectl get csr admin-csr
範例輸出如下。
NAME AGE REQUESTOR CONDITION admin-csr 11m kubernetes-admin Pending
Kubernetes 已建立憑證簽署請求。
-
核准憑證簽署請求。
kubectl certificate approve admin-csr
-
重新檢查核准的憑證簽署請求狀態。
kubectl get csr admin-csr
範例輸出如下。
NAME AGE REQUESTOR CONDITION admin-csr 11m kubernetes-admin Approved
-
擷取並驗證憑證。
-
擷取憑證。
kubectl get csr admin-csr -o jsonpath='{.status.certificate}' | base64 --decode > admin.crt
-
驗證憑證。
cat admin.crt
-
-
建立與
admin
使用者綁定的叢集角色。kubectl create clusterrolebinding admin --clusterrole=cluster-admin \ --user=admin --group=system:masters
-
產生中斷連線狀態的使用者範圍 kubeconfig。
您可以使用下載的
admin
憑證來產生kubeconfig
檔案。Replace (取代)my-cluster
以及apiserver-endpoint
在以下命令中。aws eks describe-cluster --name
my-cluster
\ --query "cluster.certificateAuthority" \ --output text | base64 --decode > ca.crtkubectl config --kubeconfig
admin.kubeconfig
set-clustermy-cluster
\ --certificate-authority=ca.crt --serverapiserver-endpoint
--embed-certskubectl config --kubeconfig
admin.kubeconfig
set-credentials admin \ --client-certificate=admin.crt --client-key=admin.key --embed-certskubectl config --kubeconfig
admin.kubeconfig
set-context admin@my-cluster
\ --clustermy-cluster
--user adminkubectl config --kubeconfig
admin.kubeconfig
use-context admin@my-cluster
-
檢視您的
kubeconfig
檔案。kubectl get nodes --kubeconfig
admin.kubeconfig
-
如果您在 Outpost 上已有生產中的服務,請跳過此步驟。如果 Amazon EKS 是在您的 Outpost 上執行的唯一服務,且 Outpost 目前不在生產中,您可以模擬網路中斷連線。在您使用本機叢集進入生產之前,模擬中斷連線以確保在中斷連線狀態下可存取叢集。
-
在連接 Outpost 至 AWS 區域的聯網裝置上套用防火牆規則。這會中斷 Outpost 連結的服務。您無法建立任何新的執行個體。目前執行的執行個體失去與 AWS 區域 和網際網路的連線。
-
您可在中斷連線時使用
x509
憑證,測試連結至您本機叢集的連線。請確保將您的kubeconfig
變更為您在上一步中建立的admin.kubeconfig
。Replace (取代)my-cluster
本機叢集的名稱。kubectl config use-context admin@
my-cluster
--kubeconfigadmin.kubeconfig
如果您在本機叢集處於中斷連線狀態時發現任何問題,建議您開啟支援票證。
-