Tworzenie prywatnego klastra usługi Azure Kubernetes Service (AKS)

W klastrze prywatnym płaszczyzna sterowania lub serwer interfejsu API ma wewnętrzne adresy IP zdefiniowane w RFC1918 — alokacja adresów dla prywatnego dokumentu internetowego . Korzystając z klastra prywatnego, można zapewnić, że ruch sieciowy między serwerem interfejsu API a pulami węzłów pozostaje tylko w sieci prywatnej.

Płaszczyzna sterowania lub serwer interfejsu API znajduje się w grupie zasobów platformy Azure zarządzanej przez usługę Azure Kubernetes Service (AKS). Klaster lub pula węzłów znajduje się w grupie zasobów. Serwer i pula klastrów lub węzłów mogą komunikować się ze sobą za pośrednictwem usługi Azure Private Link w sieci wirtualnej serwera interfejsu API i prywatnego punktu końcowego uwidocznionego w podsieci klastra usługi AKS.

Podczas aprowizacji prywatnego klastra usługi AKS usługa AKS domyślnie tworzy prywatną nazwę FQDN z prywatną strefą DNS i dodatkową publiczną nazwę FQDN z odpowiednim rekordem A w publicznym systemie DNS platformy Azure. Węzły agenta nadal używają rekordu A w prywatnej strefie DNS, aby rozpoznać prywatny adres IP prywatnego punktu końcowego na potrzeby komunikacji z serwerem interfejsu API.

Celem tego artykułu jest ułatwienie wdrożenia klastra usługi AKS opartego na łączach prywatnych. Jeśli interesuje Cię tworzenie klastra usługi AKS bez wymaganego łącza prywatnego lub tunelu, zobacz Tworzenie klastra usługi Azure Kubernetes Service za pomocą integracji z siecią wirtualną serwera interfejsu API (wersja zapoznawcza).

Dostępność w regionach

Klaster prywatny jest dostępny w regionach publicznych, w usługach Azure Government i Microsoft Azure obsługiwanych przez regiony 21Vianet, w których jest obsługiwana usługa AKS.

Wymagania wstępne

  • Interfejs wiersza polecenia platformy Azure w wersji 2.28.0 lub nowszej. Uruchom polecenie az --version , aby znaleźć wersję i uruchomić polecenie az upgrade , aby uaktualnić wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
  • aks-preview Rozszerzenie 0.5.29 lub nowsze.
  • Jeśli używasz usługi Azure Resource Manager (ARM) lub interfejsu API REST platformy Azure, wersja interfejsu API usługi AKS musi być 2021-05-01 lub nowsza.
  • Usługa Azure Private Link jest obsługiwana tylko w usłudze Azure Load Balancer w warstwie Standardowa. Usługa Azure Load Balancer w warstwie Podstawowa nie jest obsługiwana.
  • Aby użyć niestandardowego serwera DNS, dodaj publiczny adres IP platformy Azure 168.63.129.16 jako nadrzędny serwer DNS na niestandardowym serwerze DNS i pamiętaj, aby dodać ten publiczny adres IP jako pierwszy serwer DNS. Aby uzyskać więcej informacji na temat adresu IP platformy Azure, zobacz Co to jest adres IP 168.63.129.16?
    • Strefa DNS klastra powinna być przekazywana do adresu 168.63.129.16. Więcej informacji na temat nazw stref można znaleźć w temacie Konfiguracja strefy DNS usług platformy Azure.

Uwaga

Pula węzłów systemu Linux platformy Azure jest teraz ogólnie dostępna . Aby dowiedzieć się więcej o korzyściach i krokach wdrażania, zobacz Wprowadzenie do hosta kontenera systemu Linux platformy Azure dla usługi AKS.

Ograniczenia

  • Nie można zastosować zakresów autoryzowanych adresów IP do prywatnego punktu końcowego serwera interfejsu API. Mają one zastosowanie tylko do publicznego serwera interfejsu API
  • Ograniczenia usługi Azure Private Link dotyczą klastrów prywatnych.
  • Nie ma obsługi agentów hostowanych przez firmę Microsoft w usłudze Azure DevOps z klastrami prywatnymi. Rozważ użycie własnych agentów.
  • Jeśli musisz włączyć usługę Azure Container Registry do pracy z prywatnym klastrem usługi AKS, skonfiguruj łącze prywatne dla rejestru kontenerów w sieci wirtualnej klastra lub skonfiguruj komunikację równorzędną między siecią wirtualną usługi Container Registry i siecią wirtualną klastra prywatnego.
  • Nie ma obsługi konwertowania istniejących klastrów usługi AKS na klastry prywatne.
  • Usunięcie lub zmodyfikowanie prywatnego punktu końcowego w podsieci klienta spowoduje, że klaster przestanie działać.

Tworzenie prywatnego klastra usługi AKS

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 usługi AKS.

az group create -l eastus -n myResourceGroup

Domyślna sieć podstawowa

Utwórz klaster prywatny z domyślną siecią podstawową przy użyciu az aks create polecenia z flagą --enable-private-cluster .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster  

Zaawansowana sieć

Utwórz klaster prywatny z zaawansowaną siecią przy użyciu az aks create polecenia z następującymi flagami:

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 10.2.0.10 \
    --service-cidr 10.2.0.0/24 

Używanie domen niestandardowych

Jeśli chcesz skonfigurować domeny niestandardowe, które można rozpoznać tylko wewnętrznie, zobacz Używanie domen niestandardowych.

Wyłączanie publicznej nazwy FQDN

Wyłączanie publicznej nazwy FQDN w nowym klastrze usługi AKS

Wyłącz publiczną nazwę FQDN podczas tworzenia prywatnego klastra usługi AKS przy użyciu flagi --disable-public-fqdn .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn

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 .

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --disable-public-fqdn

Konfigurowanie prywatnej strefy DNS

Prywatne strefy DNS można skonfigurować przy użyciu następujących parametrów:

  • system: jest to wartość domyślna. --private-dns-zone Jeśli argument zostanie pominięty, usługa AKS tworzy prywatną strefę DNS w grupie zasobów węzła.
  • brak: wartość domyślna to publiczny system DNS. Usługa AKS nie utworzy prywatnej strefy DNS.
  • CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID: Wymaga to utworzenia prywatnej strefy DNS w następującym formacie dla chmury globalnej platformy Azure: privatelink.<region>.azmk8s.io lub <subzone>.privatelink.<region>.azmk8s.io. Do użycia w przyszłości potrzebny będzie identyfikator zasobu prywatnej strefy DNS. Potrzebna jest również tożsamość przypisana przez użytkownika lub jednostka usługi z rolami współautora strefy Prywatna strefa DNS i współautora sieci. Podczas wdrażania przy użyciu integracji z siecią wirtualną serwera interfejsu API prywatna strefa DNS obsługuje format private.<region>.azmk8s.io nazewnictwa lub <subzone>.private.<region>.azmk8s.io.
    • Jeśli prywatna strefa DNS znajduje się w innej subskrypcji niż klaster usługi AKS, musisz zarejestrować dostawcę platformy Azure Microsoft.ContainerServices w obu subskrypcjach.
    • "fqdn-subdomain" można używać z "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID" tylko w celu zapewnienia możliwości poddomeny w usłudze privatelink.<region>.azmk8s.io.
    • 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.
    • W przypadku określenia limitu <subzone> 32 znaków dla <subzone> nazwy.

Uwaga

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID można skonfigurować przy użyciu szablonu usługi ARM oprócz interfejsu wiersza polecenia platformy Azure. privateDNSZone akceptuje identyfikator resourceID prywatnej strefy DNZ, jak pokazano w poniższym przykładzie:

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

Ważne

Nie można zmienić CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID po utworzeniu klastra i nie można go usunąć. W przeciwnym razie klaster będzie miał problemy z wykonywaniem operacji uaktualniania.

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 z następującymi flagami:

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone [system|none]

Tworzenie prywatnego klastra usługi AKS z niestandardową prywatną strefą DNS lub prywatną strefą DNS

Utwórz prywatny klaster usługi AKS z niestandardową prywatną strefą DNS lub podzonem przy użyciu az aks create polecenia z następującymi flagami:

# The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone or custom private dns subzone resourceID>

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 z następującymi flagami:

# The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain>

Aktualizowanie klastra prywatnego z prywatnej strefy DNS do publicznej

Uwaga

Ta funkcja wymaga aks-preview wersji >rozszerzenia = 0.5.97

Zaktualizuj klaster prywatny z byo lub system do none polecenia za pomocą az aks update następujących flag:

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --private-dns-zone none

Uwaga

Można aktualizować tylko z byo lub system do none. Nie jest obsługiwana żadna inna kombinacja wartości aktualizacji.

Opcje nawiązywania połączenia z klastrem prywatnym

Punkt końcowy serwera interfejsu API nie ma publicznego adresu IP. Aby zarządzać serwerem interfejsu API, należy użyć maszyny wirtualnej, która ma dostęp do usługi Azure Virtual Network (VNet) klastra usługi AKS. Istnieje kilka opcji nawiązywania łączności sieciowej z klastrem prywatnym:

Uwaga

Utworzenie maszyny wirtualnej w tej samej sieci wirtualnej co klaster usługi AKS jest najprostszą opcją. Usługa Express Route i sieci VPN dodają koszty i wymagają dodatkowej złożoności sieci. Komunikacja równorzędna sieci wirtualnych wymaga zaplanowanie zakresów CIDR sieci w celu zapewnienia, że nie ma nakładających się zakresów.

Komunikacja równorzędna sieci wirtualnej

Komunikacja równorzędna sieci wirtualnych to jeden ze sposobów uzyskiwania dostępu do klastra prywatnego. Aby korzystać z komunikacji równorzędnej sieci wirtualnych, należy skonfigurować połączenie między siecią wirtualną a prywatną strefą DNS.

  1. W przeglądarce przejdź do witryny Azure Portal.
  2. W witrynie Azure Portal przejdź do grupy zasobów węzła.
  3. Wybierz prywatną strefę DNS.
  4. W okienku po lewej stronie wybierz pozycję Sieć wirtualna.
  5. Utwórz nowy link, aby dodać sieć wirtualną maszyny wirtualnej do prywatnej strefy DNS. Udostępnienie linku strefy DNS zajmuje kilka minut.
  6. W witrynie Azure Portal przejdź do grupy zasobów zawierającej sieć wirtualną klastra.
  7. W okienku po prawej stronie wybierz sieć wirtualną. Nazwa sieci wirtualnej ma postać aks-vnet-*.
  8. W okienku po lewej stronie wybierz pozycję Komunikacje równorzędne.
  9. Wybierz pozycję Dodaj, dodaj sieć wirtualną maszyny wirtualnej, a następnie utwórz komunikację równorzędną. Aby uzyskać więcej informacji, zobacz Komunikacja równorzędna sieci wirtualnych.

Piasta i szprycha z niestandardowym systemem DNS

Architektury piasty i szprych są często używane do wdrażania sieci na platformie Azure. W wielu z tych wdrożeń ustawienia DNS w sieciach wirtualnych szprych są skonfigurowane do odwołowania się do centralnego usługi przesyłania dalej DNS w celu umożliwienia lokalnego i opartego na platformie Azure rozpoznawania nazw DNS. Podczas wdrażania klastra usługi AKS w takim środowisku sieciowym należy wziąć pod uwagę następujące zagadnienia:

Private cluster hub and spoke

  • Po aprowizacji klastra prywatnego (1) i prywatnej strefy DNS (2) są domyślnie tworzone w grupie zasobów zarządzanych przez klaster. Klaster używa rekordu A w 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ą, z którą węzły klastra są dołączone (3). Oznacza to, ż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 jako punkt hostów pod adresem 168.63.129.16 dla systemu DNS, który może rozpoznawać rekordy w prywatnej strefie DNS ze względu na link.
  • W scenariuszach, w których sieć wirtualna zawierająca klaster ma niestandardowe ustawienia DNS (4), wdrażanie klastra kończy się niepowodzeniem, chyba że prywatna strefa DNS jest połączona z siecią wirtualną zawierającą niestandardowe narzędzia rozpoznawania nazw DNS (5). Ten link można utworzyć ręcznie po utworzeniu strefy prywatnej podczas aprowizacji klastra lub za pośrednictwem automatyzacji po wykryciu utworzenia strefy przy użyciu mechanizmów wdrażania opartych na zdarzeniach (na przykład usług Azure Event Grid i Azure Functions). Aby uniknąć awarii klastra podczas początkowego wdrażania, klaster można wdrożyć przy użyciu identyfikatora zasobu prywatnej strefy DNS. Działa to tylko z typem Microsoft.ContainerService/managedCluster zasobu i wersją 2022-07-01interfejsu API . Używanie starszej wersji z szablonem usługi ARM lub definicją zasobu Bicep nie jest obsługiwane.

Uwaga

Przekazywanie warunkowe nie obsługuje poddomen.

Uwaga

Jeśli używasz własnej tabeli tras z usługą kubenet i przy użyciu własnego systemu DNS z klastrami prywatnymi, tworzenie klastra zakończy się niepowodzeniem. Po pomyślnym utworzeniu klastra należy skojarzyć grupę RouteTable zasobów węzła z podsiecią.

Używanie połączenia prywatnego punktu końcowego

Prywatny punkt końcowy można skonfigurować tak, aby sieć wirtualna nie musiała być równorzędna do komunikacji równorzędnej z klastrem prywatnym. Aby użyć prywatnego punktu końcowego, utwórz nowy prywatny punkt końcowy w sieci wirtualnej, a następnie utwórz łącze między siecią wirtualną a nową prywatną strefą DNS.

Ważne

Jeśli sieć wirtualna jest skonfigurowana z niestandardowymi serwerami DNS, należy odpowiednio skonfigurować prywatną usługę DNS dla środowiska. Aby uzyskać więcej informacji, zobacz dokumentację rozpoznawania nazw sieci wirtualnych.

Tworzenie zasobu prywatnego punktu końcowego

Utwórz zasób prywatnego punktu końcowego w sieci wirtualnej:

  1. W przeglądarce przejdź do witryny Azure Portal.
  2. W menu portalu Azure wybierz polecenie Utwórz zasób.
  3. Wyszukaj pozycję Prywatny punkt końcowy i wybierz pozycję Utwórz > prywatny punkt końcowy.
  4. Wybierz pozycję Utwórz.
  5. Na karcie Podstawowe skonfiguruj następujące opcje:
    • Szczegóły projektu:
      • Wybierz subskrypcję platformy Azure.
      • Wybierz grupę zasobów platformy Azure, w której znajduje się sieć wirtualna.
    • Szczegóły wystąpienia:
      • Wprowadź nazwę prywatnego punktu końcowego, na przykład myPrivateEndpoint.
      • Wybierz region dla prywatnego punktu końcowego.

Ważne

Sprawdź, czy wybrany region jest taki sam jak sieć wirtualna, z której chcesz nawiązać połączenie, w przeciwnym razie sieć wirtualna nie będzie widoczna na karcie Konfiguracja .

  1. Wybierz pozycję Dalej: Zasób i skonfiguruj następujące opcje:
    • metoda Połączenie ion: wybierz pozycję Połączenie do zasobu platformy Azure w moim katalogu.
    • Subskrypcja: wybierz subskrypcję, w której znajduje się klaster prywatny.
    • Typ zasobu: wybierz pozycję Microsoft.ContainerService/managedClusters.
    • Zasób: wybierz klaster prywatny.
    • Docelowy zasób podrzędny: wybierz pozycję Zarządzanie.
  2. Wybierz pozycję Dalej: Sieć wirtualna i skonfiguruj następujące opcje:
    • Sieć:
      • Sieć wirtualna: wybierz sieć wirtualną.
      • Podsieć: wybierz swoją podsieć.
  3. Wybierz pozycję Dalej: DNS>Dalej: Tagi i (opcjonalnie) skonfiguruj wartości kluczy zgodnie z potrzebami.
  4. Wybierz pozycję Dalej: Przejrzyj i utwórz.>

Po utworzeniu zasobu zapisz prywatny adres IP prywatnego punktu końcowego do użycia w przyszłości.

Tworzenie prywatnej strefy DNS

Po utworzeniu prywatnego punktu końcowego utwórz nową prywatną strefę DNS o takiej samej nazwie jak prywatna strefa DNS utworzona przez klaster prywatny:

  1. Przejdź do grupy zasobów węzła w witrynie Azure Portal.
  2. Wybierz prywatną strefę DNS i rekord:
    • Nazwa prywatnej strefy DNS, która jest zgodna ze wzorcem *.privatelink.<region>.azmk8s.io.
    • Nazwa rekordu A (z wyłączeniem prywatnej nazwy DNS).
    • Czas wygaśnięcia (TTL).
  3. W witrynie Azure Portal wybierz pozycję Utwórz zasób.
  4. Wyszukaj strefę Prywatna strefa DNS i wybierz pozycję Utwórz > strefę Prywatna strefa DNS.
  5. Na karcie Podstawowe skonfiguruj następujące opcje:
    • Szczegóły projektu:
      • Wybierz swoją subskrypcję.
      • Wybierz grupę zasobów, w której utworzono prywatny punkt końcowy.
    • Szczegóły wystąpienia:
      • Wprowadź nazwę strefy DNS pobranej z poprzednich kroków.
      • Region domyślnie określa lokalizację grupy zasobów.
  6. Wybierz pozycję Przeglądanie + tworzenie>Utwórz.

Tworzenie rekordu A

Po utworzeniu prywatnej strefy DNS utwórz A rekord, który kojarzy prywatny punkt końcowy z klastrem prywatnym:

  1. Przejdź do prywatnej strefy DNS utworzonej w poprzednich krokach.
  2. Na stronie Przegląd wybierz pozycję Zestaw rekordów.
  3. Na karcie Dodawanie zestawu rekordów skonfiguruj następujące opcje:
    • Nazwa: wprowadź nazwę pobraną z rekordu A w strefie DNS klastra prywatnego.
    • Typ: wybierz pozycję A — rekord adresu.
    • Czas wygaśnięcia: wprowadź liczbę z rekordu A w strefie DNS klastra prywatnego.
    • Jednostka czasu wygaśnięcia: zmień wartość listy rozwijanej, aby dopasować wartość rekordu A z strefy DNS klastra prywatnego.
    • Adres IP: wprowadź adres IP utworzonego prywatnego punktu końcowego.

Ważne

Podczas tworzenia rekordu A należy używać tylko nazwy, a nie w pełni kwalifikowanej nazwy domeny (FQDN).

Po utworzeniu rekordu A połącz prywatną strefę DNS z siecią wirtualną, która będzie uzyskiwać dostęp do klastra prywatnego:

  1. Przejdź do prywatnej strefy DNS utworzonej w poprzednich krokach.
  2. W okienku po lewej stronie wybierz pozycję Łącza sieci wirtualnej.
  3. Wybierz pozycję Dodaj i skonfiguruj następujące opcje:
    • Nazwa łącza: wprowadź nazwę linku sieci wirtualnej.
    • Subskrypcja: wybierz subskrypcję, w której znajduje się klaster prywatny.
    • Sieć wirtualna: wybierz sieć wirtualną klastra prywatnego.
  4. Wybierz OK, aby utworzyć link.

Ukończenie operacji może potrwać kilka minut. Po utworzeniu linku sieci wirtualnej możesz uzyskać do niej dostęp z karty Łącza sieci wirtualnej, która została użyta w kroku 2.

Ostrzeżenie

Jeśli klaster prywatny zostanie zatrzymany i uruchomiony ponownie, oryginalna usługa łącza prywatnego klastra prywatnego zostanie usunięta i utworzona ponownie, co spowoduje przerwanie połączenia między prywatnym punktem końcowym a klastrem prywatnym. Aby rozwiązać ten problem, usuń i ponownie utwórz wszystkie prywatne punkty końcowe utworzone przez użytkownika połączone z klastrem prywatnym. Jeśli utworzone ponownie prywatne punkty końcowe mają nowe adresy IP, należy również zaktualizować rekordy DNS.

Następne kroki

Aby uzyskać informacje o skojarzonych najlepszych rozwiązaniach, zobacz Najlepsze rozwiązania dotyczące łączności sieciowej i zabezpieczeń w usłudze AKS.