Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł ułatwia wdrażanie klastra usługi AKS opartego na łączach prywatnych przy użyciu Azure CLI lub narzędzia Terraform. Jeśli interesuje Cię tworzenie klastra usługi AKS bez wymaganego łącza prywatnego lub tunelu, zobacz Tworzenie klastra Azure Kubernetes Service (AKS) za pomocą integracji z siecią wirtualną serwera API.
Przegląd klastrów prywatnych w usłudze AKS
W prywatnym klastrze warstwa sterująca lub serwer API ma wewnętrzne adresy IP zdefiniowane w dokumencie RFC1918 - Alokacja Adresów dla Prywatnego Internetu. Korzystając z klastra prywatnego, można zapewnić, że ruch sieciowy między serwerem interfejsu API i pulami węzłów pozostaje tylko w sieci prywatnej.
Płaszczyzna sterowania lub serwer interfejsu API znajduje się w grupie zasobów zarządzanej przez Azure dla usługi AKS, a Twój klaster lub pula węzłów znajduje się w Twojej grupie zasobów. Serwer oraz pula węzłów mogą komunikować się ze sobą za pośrednictwem usługi Azure Private Link w sieci wirtualnej serwera interfejsu API oraz prywatnego punktu końcowego, który jest dostępny w podsieci klastra AKS.
Podczas tworzenia prywatnego klastra usługi AKS usługa AKS domyślnie tworzy zarówno prywatne, jak i publiczne w pełni kwalifikowane nazwy domen (FQDN) z odpowiednimi strefami DNS. Aby uzyskać szczegółowe opcje konfiguracji DNS, zobacz Konfigurowanie prywatnej strefy DNS, prywatnej podstrefy DNS lub niestandardowej poddomeny.
Dostępność w regionach
Klastry prywatne są dostępne w regionach publicznych, Azure Government i Microsoft Azure obsługiwanych przez regiony 21Vianet, w których jest obsługiwany AKS.
Ważne
Wszystkie funkcje Microsoft Defender dla Chmury zostaną oficjalnie wycofane w Azure w regionie Chin 18 sierpnia 2026 r. Ze względu na zbliżającą się emeryturę Azure w Chinach klienci nie mogą już dołączać nowych subskrypcji do usługi. Nowa subskrypcja to każda subskrypcja, która nie została jeszcze dołączona do usługi Microsoft Defender dla Chmury przed dniem 18 sierpnia 2025 r., datą ogłoszenia o wycofaniu. Aby uzyskać więcej informacji na temat wycofania, zobacz Ogłoszenie o wycofaniu Microsoft Defender dla Chmury w Microsoft Azure obsługiwanym przez 21Vianet.
Klienci powinni współpracować ze swoimi przedstawicielami kont dla Microsoft Azure obsługiwanych przez firmę 21Vianet, aby ocenić wpływ tej emerytury na własne operacje.
Wymogi dotyczące prywatnych klastrów AKS
Aktywna subskrypcja Azure. Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz konto free.
Ustaw kontekst subskrypcji przy użyciu
az account setpolecenia . Przykład:az account set --subscription "00000000-0000-0000-0000-000000000000"Azure CLI w wersji 2.28.0 lub nowszej. Znajdź swoją wersję przy użyciu
az --versionpolecenia . Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI.Jeśli używasz Azure Resource Manager (ARM) lub interfejsu API REST Azure, wersja interfejsu API usługi AKS musi być 2021-05-01 lub nowsza.
Aby użyć niestandardowego serwera DNS, dodaj publiczny adres IP Azure 168.63.129.16 jako nadrzędny serwer DNS na niestandardowym serwerze DNS i pamiętaj, aby dodać ten publiczny adres IP jako first serwera DNS. Aby uzyskać więcej informacji na temat adresu IP Azure, zobacz Jak jest adres IP 168.63.129.16?
- Strefa DNS klastra powinna być tym, co przekazujesz do 168.63.129.16. Więcej informacji na temat nazw stref można znaleźć w konfiguracji stref DNS w usługach Azure.
Istniejące klastry AKS, które mają włączoną integrację serwera API z siecią VNet, mogą mieć włączony tryb klastra prywatnego. Aby uzyskać więcej informacji, zobacz Włączanie lub wyłączanie trybu klastra prywatnego w istniejącym klastrze z integracją z siecią wirtualną API Server.
Jeśli musisz włączyć Azure Container Registry w prywatnym klastrze usługi AKS, skonfiguruj łącze prywatne dla rejestru kontenerów w sieci wirtualnej klastra (VNet) lub skonfiguruj połączenie równorzędne między siecią wirtualną rejestru kontenerów Azure a siecią wirtualną klastra prywatnego.
zainstalowano narzędzie kubectl. Możesz zainstalować ją lokalnie przy użyciu
az aks install-clipolecenia .
- Narzędzie Terraform zainstalowane lokalnie. Aby uzyskać instrukcje dotyczące instalacji, zobacz Instalowanie programu Terraform.
Ważne
Począwszy od November 30, 2025 Azure Kubernetes Service (AKS) nie obsługuje już aktualizacji zabezpieczeń dla systemu Azure Linux 2.0. Obraz węzła systemu Azure Linux 2.0 jest zamrożony w wersji 202512.06.0. Od 31 marca 2026 r. obrazy węzłów zostaną usunięte i nie będzie można skalować pul węzłów. Przeprowadź migrację do obsługiwanej wersji systemu Azure Linux, uaktualniając swoje pule węzłów do obsługiwanej wersji Kubernetes lub przechodząc na osSku AzureLinux3. Aby uzyskać więcej informacji, zobacz problem na GitHub dotyczący zakończenia oraz ogłoszenie o wycofaniu aktualizacji Azure. Aby być na bieżąco z ogłoszeniami i aktualizacjami, obserwuj notatki dotyczące wydań AKS.
Ograniczenia
- Zakresy autoryzowanych adresów IP dotyczą tylko publicznego serwera interfejsu API. Nie można zastosować tych zakresów do prywatnego punktu końcowego serwera interfejsu API.
- Ograniczenia usługi Azure Private Link mają zastosowanie do klastrów prywatnych.
- Nie ma obsługi agentów hostowanych Azure DevOps Microsoft z klastrami prywatnymi. Rozważ użycie samodzielnie hostowanych agentów.
- Usunięcie lub zmodyfikowanie prywatnego punktu końcowego w podsieci klienta powoduje zatrzymanie działania klastra.
- Usługa Azure Private Link jest obsługiwana tylko w Standardowym Azure Load Balancerze. Podstawowy Azure Load Balancer nie jest obsługiwany.
Piasta i szprychy z niestandardowym systemem DNS dla prywatnych klastrów usługi AKS
Architektury Hub-and-Spoke są często używane do wdrażania sieci w Azure. W wielu z tych wdrożeń ustawienia DNS w sieciach wirtualnych połączenia są skonfigurowane do korzystania z centralnej usługi przekazywania DNS, w celu umożliwienia rozpoznawania nazw DNS na terenie lokalnym oraz w Azure.
Na poniższym diagramie przedstawiono architekturę piasty i szprych dla prywatnego klastra usługi AKS z niestandardowym systemem DNS:
- Po utworzeniu klastra prywatnego prywatny punkt końcowy (1) i prywatna strefa DNS (2) są domyślnie tworzone w grupie zasobów zarządzanych przez klaster. Klaster używa rekordu
Aw strefie prywatnej, aby rozpoznać adres IP prywatnego punktu końcowego na potrzeby komunikacji z serwerem interfejsu API. - Prywatna strefa DNS jest połączona tylko z siecią wirtualną, do której są dołączone węzły klastra (3), co oznacza, że prywatny punkt końcowy można rozpoznać tylko przez hosty w tej połączonej sieci wirtualnej. W scenariuszach, w których nie skonfigurowano niestandardowego systemu DNS w sieci wirtualnej (ustawienie domyślne), działa to bez problemu, gdy hosty wskazują na 168.63.129.16 jako adres DNS, który może rozpoznać rekordy w prywatnej strefie DNS dzięki połączeniu.
- Jeśli zachowasz domyślne zachowanie prywatnej strefy DNS, usługa AKS próbuje połączyć strefę bezpośrednio z siecią wirtualną będącą szprychową, która hostuje klaster, nawet gdy strefa jest już połączona z siecią wirtualną hub.
- W sieciach wirtualnych typu spoke, które korzystają z niestandardowych serwerów DNS, ta akcja może zakończyć się niepowodzeniem, jeśli tożsamość zarządzana klastra nie ma roli Network Contributor w danej sieci VNet będącej spoke. Aby zapobiec awarii, wybierz jedną z następujących obsługiwanych konfiguracji:
-
Niestandardowa prywatna strefa DNS: podaj istniejącą strefę prywatną i ustaw
privateDNSZone/--private-dns-zonena identyfikator zasobu tej strefy. Połącz strefę z odpowiednią siecią wirtualną (na przykład siecią wirtualną koncentratora) i ustawpublicDNSnafalse, lub użyj--disable-public-fqdn. -
Tylko publiczny system DNS: wyłącz tworzenie strefy prywatnej, ustawiając
privateDNSZone/--private-dns-zonenanone, a i pozostawpublicDNSz wartością domyślną (true) / nie używaj--disable-public-fqdn.
-
Niestandardowa prywatna strefa DNS: podaj istniejącą strefę prywatną i ustaw
- W sieciach wirtualnych typu spoke, które korzystają z niestandardowych serwerów DNS, ta akcja może zakończyć się niepowodzeniem, jeśli tożsamość zarządzana klastra nie ma roli Network Contributor w danej sieci VNet będącej spoke. Aby zapobiec awarii, wybierz jedną z następujących obsługiwanych konfiguracji:
- Jeśli używasz tabeli tras BYO z kubenet oraz BYO DNS w prywatnych klastrach, tworzenie klastra kończy się niepowodzeniem. Aby doprowadzić do pomyślnego utworzenia, po niepowodzeniu utworzenia klastra należy skojarzyć
RouteTablew grupie zasobów węzła z podsiecią.
Ograniczenia dotyczące prywatnych klastrów usługi AKS z niestandardowym systemem DNS
- Ustawienie
i jednocześnie nie jest obsługiwane . - Warunkowe przekazywanie nie obsługuje poddomen.
Tworzenie grupy zasobów
Utwórz grupę zasobów przy użyciu az group create polecenia . Możesz również użyć istniejącej grupy zasobów dla klastra AKS.
az group create \
--name <private-cluster-resource-group> \
--location <location>
Utwórz prywatny klaster AKS z domyślną podstawową siecią
Utwórz klaster prywatny z domyślną siecią podstawową przy użyciu az aks create polecenia z flagą --enable-private-cluster .
Kluczowe parametry w tym poleceniu:
-
--enable-private-cluster: włącza tryb klastra prywatnego.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--generate-ssh-keys
Utwórz plik o nazwie
main.tfi dodaj następujący kod, aby zdefiniować wersję programu Terraform i określić dostawcę Azure:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Dodaj następujący kod do
main.tf, aby utworzyć zmienne wejściowe dla ID subskrypcji Azure, nazwy grupy zasobów, lokalizacji i nazwy klastra AKS. W razie potrzeby można modyfikować wartości domyślne.variable "subscription_id" { description = "The Azure subscription ID." type = string } variable "resource_group_name" { description = "The name of the resource group for the AKS cluster." type = string default = "rg-private-aks-basic" } variable "location" { description = "The Azure region where the resources will be created." type = string default = "eastus" } variable "aks_cluster_name" { description = "The name of the AKS cluster." type = string default = "aks-private-basic" }Dodaj następujący kod do
main.tf, aby utworzyć grupę zasobów Azure:resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location }Dodaj następujący kod, aby utworzyć prywatny klaster usługi AKS z podstawowymi sieciami w
main.tf.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privatebasicaks" private_cluster_enabled = true default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" } identity { type = "SystemAssigned" } network_profile { load_balancer_sku = "standard" network_plugin = "kubenet" } }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Tworzenie prywatnego klastra AKS z zaawansowaną siecią
Utwórz klaster prywatny z zaawansowaną siecią az aks create przy użyciu polecenia .
Kluczowe parametry w tym poleceniu:
-
--enable-private-cluster: włącza tryb klastra prywatnego. -
--network-plugin azure: określa wtyczkę sieci CNI Azure. -
--vnet-subnet-id <subnet-id>: identyfikator zasobu istniejącej podsieci w sieci wirtualnej. -
--dns-service-ip <dns-service-ip>: Dostępny adres IP w zakresie adresów usług Kubernetes do wykorzystania w usłudze DNS klastra. Na przykład10.2.0.10. -
--service-cidr <service-cidr>: zakres adresów IP notacji CIDR, z którego mają zostać przypisane adresy IP klastra usług. Na przykład10.2.0.0/24.
az aks create \
--resource-group <private-cluster-resource-group> \
--name <private-cluster-name> \
--load-balancer-sku standard \
--enable-private-cluster \
--network-plugin azure \
--vnet-subnet-id <subnet-id> \
--dns-service-ip <dns-service-ip> \
--service-cidr <service-cidr> \
--generate-ssh-keys
Utwórz plik o nazwie
main.tfi dodaj następujący kod, aby zdefiniować wersję programu Terraform i określić dostawcę Azure:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Dodaj następujący kod do
main.tf, aby utworzyć zmienne wejściowe dla identyfikatora subskrypcji Azure, nazwy grupy zasobów, lokalizacji, nazwy klastra AKS, nazwy sieci wirtualnej (VNet) i nazwy podsieci. W razie potrzeby można modyfikować wartości domyślne.variable "subscription_id" { description = "The Azure subscription ID." type = string } variable "resource_group_name" { description = "The name of the resource group for the AKS cluster." type = string default = "rg-private-aks-advanced" } variable "location" { description = "The Azure region where the resources will be created." type = string default = "eastus" } variable "aks_cluster_name" { description = "The name of the AKS cluster." type = string default = "aks-private-advanced" } variable "vnet_name" { description = "The name of the virtual network." type = string default = "vnet-private-aks" } variable "subnet_name" { description = "The name of the subnet used by AKS." type = string default = "snet-aks" }Dodaj następujący kod do
main.tf, aby utworzyć grupę zasobów Azure, sieć wirtualną i podsieć:resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location } resource "azurerm_virtual_network" "this" { name = var.vnet_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name address_space = ["10.0.0.0/8"] } resource "azurerm_subnet" "aks" { name = var.subnet_name resource_group_name = azurerm_resource_group.this.name virtual_network_name = azurerm_virtual_network.this.name address_prefixes = ["10.240.0.0/16"] }Dodaj następujący kod do
main.tf, aby utworzyć klaster AKS z zaawansowaną siecią.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateadvancedaks" private_cluster_enabled = true default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Używanie domen niestandardowych z prywatnymi klastrami AKS
Jeśli chcesz skonfigurować domeny niestandardowe, które można rozpoznać tylko wewnętrznie, zobacz Używanie domen niestandardowych.
Wyłączanie publicznej pełnej kwalifikowanej nazwy domeny (FQDN) w prywatnym klastrze AKS
Wyłączanie publicznej nazwy FQDN w nowym klastrze
Wyłącz publiczną nazwę FQDN podczas tworzenia prywatnego klastra usługi AKS przy użyciu az aks create polecenia z flagą --disable-public-fqdn .
Kluczowe parametry w tym poleceniu:
-
--disable-public-fqdn: wyłącza publiczną w pełni kwalifikowaną nazwę domeny (FQDN) dla serwera API. -
--assign-identity <resource-id>: określa tożsamość zarządzaną do użycia dla klastra. -
--private-dns-zone [system|none]: określa prywatną strefę DNS do użycia dla klastra.systemjest wartością domyślną podczas konfigurowania prywatnej strefy DNS. Jeśli pominięto--private-dns-zone, usługa AKS tworzy prywatną strefę DNS w grupie zasobów węzła.nonewyłącza tworzenie prywatnej strefy DNS.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone [system|none] \
--disable-public-fqdn \
--generate-ssh-keys
Wykonaj kroki 1–3 w temacie Tworzenie prywatnego klastra AKS z zaawansowaną siecią lub Utwórz prywatny klaster AKS z domyślną siecią podstawową , aby skonfigurować konfigurację narzędzia Terraform i utworzyć niezbędne zasoby w zależności od scenariusza. W tym przykładzie użyto zaawansowanej sieci.
Dodaj następujący kod do
main.tfaby utworzyć prywatny klaster AKS z przypisaną przez użytkownika tożsamością i wyłączonym publicznym FQDN:resource "azurerm_user_assigned_identity" "aks" { name = "id-private-aks-public-fqdn-off" location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name } resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateaks" private_cluster_enabled = true private_cluster_public_fqdn_enabled = false private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Wyłączanie publicznej nazwy FQDN w istniejącym klastrze
Wyłącz publiczną nazwę FQDN w istniejącym klastrze usługi AKS przy użyciu az aks update polecenia z flagą --disable-public-fqdn .
Kluczowe parametry w tym poleceniu:
-
--disable-public-fqdn: wyłącza publiczną w pełni kwalifikowaną nazwę domeny (FQDN) dla serwera API.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--disable-public-fqdn
Dodaj następujący kod do istniejącej
main.tf, aby wyłączyć publiczną nazwę FQDN w istniejącym klastrze AKS. W tym przykładzie użyto zaawansowanej sieci. Możesz zmodyfikować ją tak, aby korzystała z domyślnej sieci podstawowej, zmieniając odpowiednie zasoby i parametry programu Terraform.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateaks" private_cluster_enabled = true private_cluster_public_fqdn_enabled = false private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Zastosuj zaktualizowaną konfigurację programu Terraform przy użyciu poleceń
terraform planiterraform apply.terraform plan terraform apply
Opcje konfiguracji dla prywatnej usługi DNS
Prywatne ustawienia DNS dla prywatnego klastra usługi AKS można skonfigurować przy użyciu Azure CLI (z parametrem --private-dns-zone) lub szablonem Azure Resource Manager (ARM) (z właściwością privateDNSZone). W poniższej tabeli przedstawiono opcje dostępne dla parametru --private-dns-zone oraz właściwości privateDNSZone.
| Setting | Description |
|---|---|
system |
Wartość domyślna podczas konfigurowania prywatnej strefy DNS. Jeśli pominiesz --private-dns-zone / privateDNSZone, usługa AKS utworzy prywatną strefę DNS w grupie zasobów węzła. |
none |
Jeśli ustawisz --private-dns-zone / privateDNSZone na none, AKS nie utworzy prywatnej strefy DNS. |
<custom-private-dns-zone-resource-id> |
Aby użyć tego parametru, należy utworzyć prywatną strefę DNS w następującym formacie dla chmury globalnej Azure: privatelink.<region>.azmk8s.io lub <subzone>.privatelink.<region>.azmk8s.io. Do użycia w przyszłości potrzebny jest identyfikator zasobu prywatnej strefy DNS. Potrzebna jest również tożsamość przypisana przez użytkownika lub zasada usługi z rolami Współautor strefy prywatnej DNS i Współautor sieci. W przypadku klastrów korzystających z integracji usługi API Server z siecią wirtualną, prywatna strefa DNS obsługuje format nazewnictwa private.<region>.azmk8s.io lub <subzone>.private.<region>.azmk8s.io.
Nie można zmienić ani usunąć tych zasobów po utworzeniu klastra, ponieważ może to spowodować problemy z wydajnością i niepowodzenia uaktualniania klastra. Możesz używać --fqdn-subdomain <subdomain> z <custom-private-dns-zone-resource-id> tylko w celu zapewnienia możliwości poddomeny dla privatelink.<region>.azmk8s.io. Jeśli określasz podstrefę, istnieje limit 32 znaków dla <subzone> nazwy. |
Zagadnienia dotyczące prywatnego systemu DNS
Podczas konfigurowania prywatnej usługi DNS dla prywatnego klastra usługi AKS należy pamiętać o następujących kwestiach:
- Jeśli prywatna strefa DNS znajduje się w innej subskrypcji niż klaster usługi AKS, musisz zarejestrować dostawcę
Microsoft.ContainerServiceAzure w obu subskrypcjach. - Jeśli klaster usługi AKS jest skonfigurowany przy użyciu jednostki usługi Active Directory, usługa AKS nie obsługuje używania przypisanej przez system tożsamości zarządzanej z niestandardową prywatną strefą DNS. Klaster musi używać uwierzytelniania za pomocą przypisanej przez użytkownika tożsamości zarządzanej.
Tworzenie prywatnego klastra usługi AKS z prywatną strefą DNS
Utwórz prywatny klaster usługi AKS z prywatną strefą DNS przy użyciu az aks create polecenia .
Kluczowe parametry w tym poleceniu:
-
--enable-private-cluster: włącza tryb klastra prywatnego. -
--private-dns-zone [system|none]: konfiguruje prywatną strefę DNS dla klastra.systemjest wartością domyślną podczas konfigurowania prywatnej strefy DNS. Jeśli pominięto--private-dns-zone, usługa AKS tworzy prywatną strefę DNS w grupie zasobów węzła.nonewyłącza tworzenie prywatnej strefy DNS. -
--assign-identity <resource-id>: Identyfikator zasobu zarządzanej przez użytkownika tożsamości o rolach Współautor strefy prywatnej DNS i Współautor sieci.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone [system|none] \
--generate-ssh-keys
Wykonaj kroki 1–3 w temacie Tworzenie prywatnego klastra AKS z zaawansowaną siecią lub Utwórz prywatny klaster AKS z domyślną siecią podstawową , aby skonfigurować konfigurację narzędzia Terraform i utworzyć niezbędne zasoby w zależności od scenariusza. W tym przykładzie użyto zaawansowanej sieci.
Dodaj następujący kod do
main.tf, aby utworzyć prywatny klaster usługi AKS z prywatną strefą DNS zarządzaną przez AKS.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-system-dns" private_cluster_enabled = true private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Tworzenie prywatnego klastra usługi AKS bez prywatnej strefy DNS
Wykonaj kroki 1–3 w temacie Tworzenie prywatnego klastra AKS z zaawansowaną siecią lub Utwórz prywatny klaster AKS z domyślną siecią podstawową , aby skonfigurować konfigurację narzędzia Terraform i utworzyć niezbędne zasoby w zależności od scenariusza. W tym przykładzie użyto zaawansowanej sieci.
Dodaj następujący kod do
main.tf, aby utworzyć klaster AKS bez prywatnej strefy DNS.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-no-dns" private_cluster_enabled = true private_dns_zone_id = "None" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Tworzenie prywatnego klastra usługi AKS z niestandardową prywatną strefą DNS lub prywatną strefą DNS
Utwórz prywatny klaster AKS z niestandardową prywatną strefą DNS lub podstrefą przy użyciu polecenia az aks create.
Kluczowe parametry w tym poleceniu:
-
--enable-private-cluster: włącza tryb klastra prywatnego. -
--private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>]: identyfikator zasobu istniejącej prywatnej strefy DNS lub podstrefy w następującym formacie dla chmury globalnej Azure:privatelink.<region>.azmk8s.iolub<subzone>.privatelink.<region>.azmk8s.io. -
--assign-identity <resource-id>: Identyfikator zasobu zarządzanej przez użytkownika tożsamości o rolach Współautor strefy prywatnej DNS i Współautor sieci.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
--generate-ssh-keys
W przypadku korzystania z niestandardowej prywatnej strefy DNS odpowiadasz za tworzenie infrastruktury DNS i zarządzanie nią zamiast polegać na Azure zarządzanym systemie DNS. Obejmuje to tworzenie strefy DNS, łączenie jej z siecią wirtualną i przypisywanie niezbędnych uprawnień usługi AKS do zarządzania rekordami.
W przypadku niestandardowych konfiguracji DNS należy użyć tożsamości zarządzanej przypisanej przez użytkownika z rolami Współtwórca strefy DNS prywatnej i Kontrybutor sieci.
Wykonaj kroki 1–3 w temacie Tworzenie prywatnego klastra AKS z zaawansowaną siecią lub Utwórz prywatny klaster AKS z domyślną siecią podstawową , aby skonfigurować konfigurację narzędzia Terraform i utworzyć niezbędne zasoby w zależności od scenariusza. W tym przykładzie użyto zaawansowanej sieci.
Dodaj kod do
main.tf, aby utworzyć prywatny klaster usługi AKS z niestandardową prywatną strefą DNS lub podstrefą.resource "azurerm_user_assigned_identity" "aks" { name = "aks-custom-dns-id" location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name } resource "azurerm_private_dns_zone" "aks" { name = "privatelink.eastus.azmk8s.io" resource_group_name = azurerm_resource_group.this.name } resource "azurerm_private_dns_zone_virtual_network_link" "link" { name = "aks-dns-link" resource_group_name = azurerm_resource_group.this.name private_dns_zone_name = azurerm_private_dns_zone.aks.name virtual_network_id = azurerm_virtual_network.this.id } resource "azurerm_role_assignment" "dns" { scope = azurerm_private_dns_zone.aks.id role_definition_name = "Private DNS Zone Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id } resource "azurerm_role_assignment" "network" { scope = azurerm_virtual_network.this.id role_definition_name = "Network Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id } resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-custom-dns" private_cluster_enabled = true private_dns_zone_id = azurerm_private_dns_zone.aks.id default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } depends_on = [ azurerm_role_assignment.dns, azurerm_role_assignment.network ] }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Tworzenie prywatnego klastra usługi AKS z niestandardową prywatną strefą DNS i niestandardową poddomeną
Utwórz prywatny klaster usługi AKS z niestandardową prywatną strefą DNS i poddomeną az aks create przy użyciu polecenia .
Kluczowe parametry w tym poleceniu:
-
--enable-private-cluster: włącza tryb klastra prywatnego. -
--private-dns-zone <custom-private-dns-zone-resource-id>: Identyfikator zasobu istniejącej prywatnej strefy DNS w następującym formacie dla chmury globalnej Azure:privatelink.<region>.azmk8s.io. -
--fqdn-subdomain <subdomain>: Poddomena do użycia dla FQDN klastra w niestandardowej prywatnej strefie DNS. -
--assign-identity <resource-id>: Identyfikator zasobu zarządzanej przez użytkownika tożsamości o rolach Współautor strefy prywatnej DNS i Współautor sieci.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone <custom-private-dns-zone-resource-id> \
--fqdn-subdomain <subdomain> \
--generate-ssh-keys
Wykonaj kroki 1–3 w temacie Tworzenie prywatnego klastra AKS z zaawansowaną siecią lub Utwórz prywatny klaster AKS z domyślną siecią podstawową , aby skonfigurować konfigurację narzędzia Terraform i utworzyć niezbędne zasoby w zależności od scenariusza. W tym przykładzie użyto zaawansowanej sieci.
Dodaj następujący kod do
main.tf, aby utworzyć prywatny klaster usługi AKS z niestandardową prywatną strefą DNS i poddomeną.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-subdomain" private_cluster_enabled = true private_dns_zone_id = azurerm_private_dns_zone.aks.id fqdn_subdomain = "team1" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Wykonaj kroki, aby zainicjować program Terraform, sformatować i zweryfikować konfigurację programu Terraform, utworzyć plan wykonywania programu Terraform, zastosować konfigurację narzędzia Terraform i nawiązać połączenie z klastrem usługi AKS.
Aktualizowanie istniejącego prywatnego klastra usługi AKS z prywatnej strefy DNS do publicznej
Możesz zaktualizować tylko z byo (przynieś własne) lub system do none. Nie jest obsługiwana żadna inna kombinacja wartości aktualizacji.
Ostrzeżenie
Podczas aktualizowania klastra prywatnego z byo programu lub system do nonewęzłów agenta zmieniają się w celu używania publicznej nazwy FQDN. W klastrze AKS, który używa Azure Virtual Machine Scale Sets, uaktualnienie obrazu węzła jest wykonywane w celu zaktualizowania węzłów z publiczną nazwą FQDN.
Zaktualizuj klaster prywatny z byo lub system do none używając polecenia az aks update z parametrem --private-dns-zone ustawionym na none.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--private-dns-zone none
Dodaj następujący kod do istniejącego
main.tf, aby zaktualizować prywatny klaster usługi AKS z prywatnej strefy DNS do publicznej. W tym przykładzie użyto zaawansowanej sieci. Możesz zmodyfikować ją tak, aby korzystała z domyślnej sieci podstawowej, zmieniając odpowiednie zasoby i parametry programu Terraform.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-update" private_cluster_enabled = true private_dns_zone_id = "None" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Zastosuj zaktualizowaną konfigurację programu Terraform przy użyciu poleceń
terraform planiterraform apply.terraform plan terraform apply
Inicjowanie narzędzia Terraform
Zainicjuj Terraform w katalogu zawierającym plik main.tf przy użyciu polecenia terraform init. To polecenie pobiera dostawcę Azure wymaganego do zarządzania zasobami Azure za pomocą narzędzia Terraform.
terraform init
Formatuj i zweryfikuj konfigurację narzędzia Terraform
Sformatuj i zweryfikuj konfigurację narzędzia Terraform za pomocą poleceń terraform fmt i terraform validate.
terraform fmt
terraform validate
Tworzenie planu wykonania programu Terraform
Utwórz plan wykonywania narzędzia Terraform przy użyciu terraform plan polecenia . To polecenie pokazuje zasoby, które narzędzie Terraform utworzy lub zmodyfikuje w ramach subskrypcji Azure.
terraform plan -var="subscription_id=<your-subscription-id>"
Stosowanie konfiguracji narzędzia Terraform
Po przejrzeniu i potwierdzeniu planu wykonania zastosuj konfigurację narzędzia Terraform przy użyciu terraform apply polecenia . To polecenie tworzy lub modyfikuje zasoby zdefiniowane w pliku main.tf w subskrypcji Azure.
terraform apply -var="subscription_id=<your-subscription-id>"
Konfigurowanie narzędzia kubectl w celu nawiązania połączenia z prywatnym klastrem usługi AKS
Aby zarządzać klastrem Kubernetes, użyj klienta wiersza polecenia kubernetes kubectl.
kubectl jest już zainstalowany, jeśli używasz Azure Cloud Shell. Aby zainstalować kubectl lokalnie, użyj az aks install-cli polecenia .
Skonfiguruj
kubectl, aby nawiązać połączenie z klastrem Kubernetes za pomocą poleceniaaz aks get-credentials. To polecenie pobiera poświadczenia i konfiguruje interfejs wiersza polecenia Kubernetes do ich użycia.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>Sprawdź połączenie z klastrem przy użyciu polecenia
kubectl get. To polecenie zwraca listę węzłów klastra.kubectl get nodesPolecenie zwraca dane wyjściowe podobne do następujących przykładowych danych wyjściowych:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-12345678-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-12345678-vmss000002 Ready agent 3h6m v1.15.11