本指南說明連線到 Azure Kubernetes Service (AKS) 叢集之 API 伺服器的各種選項。 使用標準 AKS 叢集時,API 伺服器會透過因特網公開。 如果您建立私人 AKS 叢集,則只能從具有網路連線到私人叢集的裝置連線到 API 伺服器。
規劃對 API 伺服器的存取是一天零的活動。 選擇存取 API 伺服器的方式取決於您的部署案例。
AKS API 伺服器存取
若要管理 AKS 叢集,您可以與其 API 伺服器互動。 請務必鎖定 API 伺服器的存取權,並只授與需要存取權的使用者。 您可以將 AKS 叢集與 Microsoft Entra ID 整合,以提供細微存取。 管理員 istrators 接著可以使用角色型存取控制 (RBAC) 來限制存取。 透過 RBAC,系統管理員可以將使用者和身分識別放在 Microsoft Entra 群組中,並將適當的角色和許可權指派給群組。 Microsoft Entra 驗證會提供給具有 OpenID 連線 的 AKS 叢集。 如需詳細資訊,請參閱下列資源:
注意
您可以只允許授權的IP位址範圍與 API 伺服器通訊,進一步鎖定 AKS 叢集。 如需詳細資訊,請參閱 使用 Azure Kubernetes Service (AKS) 中授權的 IP 位址範圍保護對 API 伺服器的存取。
Azure DDoS 保護 (結合應用程式設計最佳做法) 可提供增強的 DDoS 風險降低功能,以針對 DDoS 攻擊提供更多的防禦。 您應該在任何周邊虛擬網路上啟用 Azure DDOS 保護。
透過因特網存取 AKS 叢集
當您建立解析為 API 伺服器完整功能變數名稱 (FQDN) 的非私人叢集時,API 伺服器預設會指派公用 IP 位址。 接著,您可以使用 Azure 入口網站 來連線到叢集,或使用像是 Azure CLI、PowerShell 或命令提示字元的殼層。
注意
如需使用 Kubernetes 命令行用戶端kubectl
透過因特網連線到叢集的詳細資訊,請參閱叢集 連線。
Azure Cloud Shell
Cloud Shell 是內建於 Azure 入口網站 的殼層。 您可以從 Cloud Shell 管理和連線到 Azure 資源,就像從 PowerShell 或 Azure CLI 一樣。 如需詳細資訊,請參閱 Azure Cloud Shell 概觀。
存取 AKS 私人叢集
有許多方式可以連線到 AKS 私人叢集。 規劃如何存取 AKS 私人叢集是一天零的活動,取決於您案例的需求和限制。 您可以使用下列元件和服務來連線到私人叢集:
- 跳躍方塊。 您可以將跳躍方塊部署至子網,並將其作為作業工作站使用。 針對跳躍方塊,您可以使用可用性設定組中的獨立持續性虛擬機(VM)。 您也可以使用 Azure 虛擬機器擴展集。
- Azure Bastion。
- 虛擬專用網 (VPN)。
- Azure ExpressRoute。
- 用來管理 AKS 的 Azure CLI aks 命令叫 用。
- 已部署到連線至叢集 API 伺服器的子網的 Cloud Shell 實例。
- Azure 虛擬桌面。 如果您的小組從各種作業系統遠端連線,您可以使用此服務來提供您作為跳躍方塊之 Windows VM 的存取權。
- Azure 容器執行個體和OpenSSH 相容的安全殼層 (SSH) 用戶端。
注意
SSH、遠端桌面通訊協定 (RDP) 和遠端桌面服務 (RDS) 是替代通訊協定,可用來遠端控制跳板。
使用 Azure Bastion
Azure Bastion 是一種平臺即服務 (PaaS)供應專案,可讓您在虛擬網路內部署,以連線到該網路中 VM,例如跳躍方塊。 若要連線,您可以從 Azure 入口網站 內的瀏覽器使用 RDP 或 SSH。 傳輸層安全性 (TLS) 通訊協定可保護連線。 通常有與 VM 網路介面卡 (NIC) 相關聯的公用 IP 位址。 該位址提供連線至 VM 的方式。 當您使用 Azure Bastion 時,不再需要將公用 IP 位址與您的跳躍方塊產生關聯。
當您連線到 AKS 叢集的 API 伺服器時,最好使用受信任的連線。 其中一個選項是使用 Azure Bastion 連線到 Azure 環境內的跳躍方塊。 在此案例中,跳躍方塊位於中樞虛擬網路中。 私人 AKS 叢集位於輪輻虛擬網路中。 虛擬網路對等互連會連線中樞和輪輻網路。
跳躍方塊可以使用 Azure 私人端點、私人 DNS 區域,以及私人 DNS 區域內的 DNS A 記錄,解析 API 伺服器的 FQDN。 藉由使用 AKS 私人叢集和私人端點,您可確保 API 伺服器 FQDN 只能從虛擬網路內解析。 使用私人叢集時,瀏覽器必須在可存取 AKS 私人叢集虛擬網路的電腦上執行。 如需詳細資訊,請參閱 裝載 Azure Bastion 的子網。
注意
跳躍方塊的可用性和備援非常重要。 您應該一律能夠到達跳躍方塊。 同樣地,您應該一律能夠連線到私人 AKS 叢集。 若要達到跳躍方塊的可用性和備援性,請將它們放在可用性設定組中,並搭配少量的 VM 實例使用 虛擬機器擴展集。 如需詳細資訊,請參閱下列資源:
資料流程
- 用戶嘗試使用 Azure Bastion 和具有 TLS 加密的 HTML5 瀏覽器來連線到跳躍方塊。
- 使用者從入口網站選擇使用 RDP 或 SSH 來連線到跳躍方塊。
- 用戶透過 Azure Bastion 登入跳躍方塊。 嘗試連線到 AKS 私人叢集是從這個跳躍方塊建立的。 中樞虛擬網路具有 AKS 私人 DNS 區域的虛擬網路連結,以解析私人叢集的 FQDN。
- 中樞虛擬網路和輪輻虛擬網路會使用虛擬網路對等互連彼此通訊。
- 若要連線到私人 AKS 叢集,流量會進入 Azure 骨幹。 私人端點會建立私人、隔離的私人 AKS 叢集連線。
- 流量會到達私人 AKS 叢集的 API 伺服器。 然後,用戶可以管理 Pod、節點和應用程式。
注意
如果您未明確停用公用 FQDN,您私人叢集的 FQDN 仍然可以從虛擬網路外部解析。 如需停用 AKS 私人叢集公用 FQDN 的相關信息,請參閱 停用現有叢集上的公用 FQDN。
針對連線問題進行疑難解答
如果您無法連線到私人叢集:
檢查虛擬網路對等互連。 此機制提供兩個虛擬網路之間的網路對網路連線。 若要讓流量在這兩個網路之間流動,您必須建立它們之間的虛擬網路對等互連。 當您建立虛擬網路對等互連時,會將路由放在虛擬網路的系統路由表中。 該路由提供到達目的地位址空間的路徑。 如需針對虛擬網路對等互連進行疑難解答的詳細資訊,請參閱 建立、變更或刪除虛擬網路對等互連。
注意
如果您的跳躍方塊位於與私人端點和 AKS 私人叢集相同的虛擬網路中,則不需要虛擬網路對等互連。
檢查私人 DNS 區域的虛擬網路連結。 虛擬網路連結提供一種方式,讓虛擬網路內的 VM 連線到私人 DNS 區域,並解析區域內的 DNS 記錄。 如果您無法連線到私人 AKS 叢集,或無法解析私人叢集的 FQDN,請檢查您的虛擬網路是否有私人 DNS 區域的虛擬網路連結。 私人 DNS 區域的名稱應該具有下列格式:
privatelink.<region>.azmk8s.io
如需針對虛擬網路連結進行疑難解答的詳細資訊,請參閱下列資源:
注意
如果您的跳躍方塊位於與私人端點和AKS私人叢集相同的虛擬網路中,則不需要虛擬網路連結。 當您建立私人 AKS 叢集時,會建立私人 DNS 區域,其具有裝載私人 AKS 叢集之虛擬網路的虛擬網路連結。
改善安全性
若要進一步保護 AKS 工作負載和跳躍方塊,您可以使用 Just-In-Time (JIT) 存取和特殊許可權存取工作站 (PAW)。
適用於雲端的 Microsoft Defender的 JIT 存取功能可降低威脅狀況。 攻擊者通常會以您用來連線到跳躍方塊的 RDP 和 SSH 埠為目標。 JIT 存取功能會使用網路安全組或 Azure 防火牆 來封鎖跳躍方塊的所有輸入流量。 如果用戶嘗試使用適當的 RBAC 許可權連線到跳躍方塊,此功能會設定網路安全組或 Azure 防火牆,以允許輸入存取選取的埠一段時間。 在該時間到期之後,埠會拒絕所有輸入流量。 如需 JIT 存取的詳細資訊,請參閱 瞭解 Just-In-Time (JIT) VM 存取 。
PAW 是強化的實體裝置,可為操作員提供最高的安全性設定。 若要採用良好的特殊許可權存取策略,請使用 PAW 連線到跳躍箱和 AKS 叢集。 很難入侵 PAW,因為它們會封鎖許多常見的攻擊媒介,例如電子郵件和網頁流覽。 如需 PAW 的詳細資訊,請參閱 保護裝置作為特殊許可權存取案例 的一部分。
使用 VPN
VPN 連線提供從內部部署環境到 Azure 的混合式連線。 您需要連線到內部虛擬網路基礎結構,才能存取 AKS 私人叢集。 私人叢集的 API 伺服器無法連線到虛擬網路外部。
VPN 可讓您連線到私人 AKS 叢集。 當您使用 VPN 連線時,您可以透過加密通道連線到 Azure 中的虛擬網路基礎結構。 連線到虛擬網路閘道之後,您可以連線到您的跳躍方塊。 您可以從該處連線到私人叢集的 API 伺服器。
資料流程
- 使用者從內部部署工作站起始 RDP 或 SSH 流量至跳躍方塊。
- 跳躍箱流量會離開客戶邊緣路由器和 VPN 設備。 流量會使用加密的 IPsec 通道來周遊網際網路。
- 跳躍方塊流量會到達 Azure 中的虛擬網路閘道,這是 Azure 虛擬網路基礎結構的輸入和輸出點。
- 流量經過虛擬網路閘道之後,就會到達跳躍方塊。 嘗試連線到 AKS 私人叢集是從跳躍方塊進行。 中樞虛擬網路具有 AKS 私人 DNS 區域的虛擬網路連結,以解析私人叢集的 FQDN。
- 中樞虛擬網路和輪輻虛擬網路會使用虛擬網路對等互連彼此通訊。
- 若要連線到私人 AKS 叢集,流量會進入 Azure 骨幹。 私人端點會建立私人、隔離的私人 AKS 叢集連線。
- 流量會到達私人 AKS 叢集的 API 伺服器。 然後,使用者可以管理 Pod、節點和應用程式。
使用 ExpressRoute
ExpressRoute 是另一個選項,可用來從內部部署環境建立 AKS 私人叢集的連線。 ExpressRoute 會使用邊界閘道通訊協定 (BGP) 在內部部署網路、Azure 中的實例和 Microsoft 公用位址之間交換路由。 此交換提供 Azure 和內部部署工作站中基礎結構即服務 (IaaS) 資源彼此的路徑。 ExpressRoute 提供專用且隔離的連線,同時為企業環境維持一致的頻寬和延遲。
資料流程
- 使用者從內部部署工作站起始 RDP 或 SSH 流量至跳躍方塊。
- 跳躍箱流量會離開客戶邊緣路由器,並在與 ExpressRoute 線路所在的 Meet-me 位置進行光纖連線。 流量會到達 Microsoft Enterprise Edge (MSEE) 裝置。 然後輸入 Azure 網狀架構。
- 跳躍方塊流量會到達 ExpressRoute 閘道,這是 Azure 虛擬網路基礎結構的輸入和輸出點。
- 流量到達跳躍方塊。 嘗試連線到 AKS 私人叢集是從跳躍方塊進行。 中樞虛擬網路具有 AKS 私人 DNS 區域的虛擬網路連結,以解析私人叢集的 FQDN。
- 中樞虛擬網路和輪輻虛擬網路會使用虛擬網路對等互連彼此通訊。
- 若要連線到私人 AKS 叢集,流量會進入 Azure 骨幹。 私人端點會建立私人、隔離的私人 AKS 叢集連線。
- 流量會到達私人 AKS 叢集的 API 伺服器。 然後,使用者可以管理 Pod、節點和應用程式。
注意
ExpressRoute 需要協力廠商連線提供者,才能提供 MSEE 路由器的對等互連連線。 ExpressRoute 流量不會加密。 如需詳細資訊,請參閱 什麼是 Azure ExpressRoute? 。
執行 aks 命令叫用
使用 AKS 私人叢集,您可以從可存取叢集 API 伺服器的 VM 連線到私人叢集。 您可以使用 Azure CLI 命令 aks command invoke
,透過 Azure API 從遠端執行命令,例如 kubectl
helm
或 在您的 AKS 私人叢集上執行命令。 當您使用 aks command invoke
時,會在叢集內的特定命名空間中建立暫時性 Pod。 Pod 只存在於命令的存處。 從暫時性 Pod 內,您可以在私人叢集上執行命令。
如果您沒有 VPN、ExpressRoute、外部連線解決方案,或直接對等互連至叢集虛擬網路的虛擬網路,您可以使用 aks command invoke
作為連線到私人叢集的替代方式。 使用 aks command invoke
之前,請檢查叢集和節點集區可用的資源。 資源不足可防止建立暫時性 Pod。
如需詳細資訊,請參閱 使用命令叫用來存取私人 Azure Kubernetes Service (AKS) 叢集 。
將 Cloud Shell 連線至子網
當您將 Cloud Shell 部署到您控制的虛擬網路時,您可以與該虛擬網路內的資源互動。 Cloud Shell 實例通常會部署到 Microsoft 管理的虛擬網路內容器。 該容器無法與其他虛擬網路中的資源互動。 但是,如果您部署 AKS 私人叢集,您可以將 Cloud Shell 連線到您管理的子網,且該子網具有叢集 API 伺服器的連線能力。 然後,您可以連線到私人叢集。 如需詳細資訊,請參閱 將 Cloud Shell 部署至 Azure 虛擬網路 。
使用 SSH 和 Visual Studio Code 進行測試
SSH 是一種通訊協定,可讓您安全地管理及存取遠端主機上的檔案。 在驗證程式中,SSH 會使用公開-私密金鑰組。
從本機電腦,您可以使用 SSH 和 Visual Studio Code Remote - SSH 擴充功能來連線到虛擬網路中的跳躍方塊。 SSH 通道已加密,且連線會在連結至跳躍方塊的公用 IP 位址上終止。 這種方法可讓您輕鬆地修改 Kubernetes 資訊清單檔案。
若要瞭解如何透過 SSH 連線到您的跳躍方塊,請參閱 透過 SSH 進行遠端開發。
如果您無法透過 SSH 連線到 VM 來管理私人叢集:
- 檢查 VM 子網的輸入網路安全性群組規則。 當您透過 SSH 連線到 Azure 中的 VM 時,連結至 VM 子網或 NIC 的網路安全性群組具有預設規則。 該規則會封鎖源自 Azure 的所有輸入網際網路流量。 若要克服此障礙,請建立新的輸入網路安全性群組規則。 設定新規則以允許源自本機電腦的公用 IP 位址的 SSH 流量。
- 檢查憑證位置。 當您使用 SSH 時,請檢查憑證的正確位置。 私密金鑰應該位於
C:\Users\User\.ssh\id_rsa
本機電腦上的目錄中。 公開金鑰應該放在~/.ssh/id_rsa.pub
Azure 中 VM 上的檔案中。
注意
建議您:
- 請勿使用公用 IP 位址連線到生產環境中的資源。 只在開發和測試案例中使用公用 IP 位址。 如本節稍早所述,您必須在這類環境中建立輸入網路安全性群組規則。 該規則應允許來自本機電腦公用 IP 位址的流量進入環境。 如需網路安全性群組規則的詳細資訊,請參閱 建立、變更或刪除網路安全性群組 。
- 請勿使用 SSH 直接連線到您的 AKS 節點或容器。 換句話說,請勿使用管理目標系統作為管理工具,因為這種方法並不可靠。 最好使用叢集外部的專用解決方案。 當您評估是否
aks command invoke
適合您的部署時,請記住這一點,因為使用該命令會在叢集中建立暫時性 Pod 以進行 Proxy 存取。
結論
- 如果未停用公用 FQDN,您可以透過網際網路存取 AKS 叢集的 API 伺服器。
- Cloud Shell 是Azure 入口網站中內建的命令列殼層,可用來連線到 AKS 叢集。
- 如需存取私人叢集更安全且鎖定的方式,請使用 Azure Bastion 和私人端點。
- VPN 和 ExpressRoute 都有助於促進私人 AKS 叢集的混合式連線。
- 如果您沒有外部連線解決方案,則可以從遠端執行
aks command invoke
以連線到您的 AKS 私人叢集。 - 您可以將 Cloud Shell 直接部署到您管理的虛擬網路。 Cloud Shell 可以從您管理的虛擬網路存取您的私人叢集。
- 您可以使用 Visual Studio Code 和 SSH 連線到跳躍方塊。 此方法會加密跳躍方塊的連線、讓您從 VM 內部存取私人叢集,並讓您輕鬆地在開發案例中修改資訊清單檔案。 但這種連線方式會在您的環境中公開公用IP位址。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Ayobami Ayodeji |Program Manager 2
- Ariel Ramirez |顧問
- Bahram Rushenas |孵化架構師
其他投稿人:
若要查看非公用LinkedIn配置檔,請登入LinkedIn。