Często zadawane pytania dotyczące usługi Azure Kubernetes Service (AKS)

Ten artykuł zawiera często zadawane pytania dotyczące usługi Azure Kubernetes Service (AKS).

Które regiony platformy Azure obecnie udostępniają usługę AKS?

Aby uzyskać pełną listę dostępnych regionów, zobacz AKS regions and availability (Regiony i dostępność usługi AKS).

Czy mogę rozłożyć klaster usługi AKS w różnych regionach?

L.p. Klastry usługi AKS są zasobami regionalnymi i nie mogą obejmować regionów. Zobacz najlepsze rozwiązania dotyczące ciągłości działania i odzyskiwania po awarii, aby uzyskać wskazówki dotyczące tworzenia architektury obejmującej wiele regionów.

Czy mogę rozłożyć klaster usługi AKS w różnych strefach dostępności?

Tak. Klaster usługi AKS można wdrożyć w co najmniej jednej strefie dostępności w regionach, które je obsługują.

Czy mogę ograniczyć, kto ma dostęp do serwera interfejsu API Kubernetes?

Tak. Istnieją dwie opcje ograniczania dostępu do serwera interfejsu API:

  • Użyj autoryzowanych zakresów adresów IP serwera interfejsu API, jeśli chcesz zachować publiczny punkt końcowy dla serwera interfejsu API, ale ograniczyć dostęp do zestawu zaufanych zakresów adresów IP.
  • Użyj klastra prywatnego, jeśli chcesz ograniczyć dostęp do serwera interfejsu API tylko z poziomu sieci wirtualnej.

Czy mogę mieć różne rozmiary maszyn wirtualnych w jednym klastrze?

Tak, możesz użyć różnych rozmiarów maszyn wirtualnych w klastrze usługi AKS, tworząc wiele pul węzłów.

Czy aktualizacje zabezpieczeń są stosowane do węzłów agenta usługi AKS?

Poprawki AKS cves, które mają "poprawkę dostawcy" co tydzień. CvEs bez poprawki czekają na "poprawkę dostawcy", zanim będzie można go skorygować. Obrazy usługi AKS są automatycznie aktualizowane w ciągu 30 dni. Zalecamy zastosowanie zaktualizowanego obrazu węzła w regularnym zakresie, aby upewnić się, że wszystkie najnowsze poprawki obrazów i poprawek systemu operacyjnego są stosowane i bieżące. Można to zrobić przy użyciu jednej z następujących metod:

  • Ręcznie za pośrednictwem witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
  • Uaktualniając klaster usługi AKS. Klaster uaktualnia węzły cordonu i opróżniania automatycznie, a następnie przełącz nowy węzeł w tryb online z najnowszym obrazem systemu Ubuntu i nową wersję poprawki lub pomocniczą wersję rozwiązania Kubernetes. Aby uzyskać więcej informacji, zobacz Uaktualnianie klastra usługi AKS.
  • Za pomocą uaktualnienia obrazu węzła.

Jaki jest limit rozmiaru obrazu kontenera w usłudze AKS?

Usługa AKS nie ustawia limitu rozmiaru obrazu kontenera. Jednak ważne jest, aby zrozumieć, że im większy obraz, tym większe zapotrzebowanie na pamięć. Większy rozmiar może potencjalnie przekroczyć limity zasobów lub ogólną dostępną pamięć węzłów roboczych. Domyślnie rozmiar maszyny wirtualnej Standard_DS2_v2 dla klastra usługi AKS jest ustawiony na 7 GiB.

Gdy obraz kontenera jest zbyt duży, podobnie jak w zakresie terabajtów (TB), kubelet może nie być w stanie ściągnąć go z rejestru kontenerów do węzła z powodu braku miejsca na dysku.

Węzły systemu Windows Server

W przypadku węzłów systemu Windows Server usługa Windows Update nie jest uruchamiana automatycznie i stosuje najnowsze aktualizacje. Zgodnie z regularnym harmonogramem cyklu wydania usługi Windows Update i własnym procesem weryfikacji należy przeprowadzić uaktualnienie w klastrze i pulach węzłów systemu Windows Server w klastrze usługi AKS. Ten proces uaktualniania tworzy węzły, które uruchamiają najnowszy obraz i poprawki systemu Windows Server, a następnie usuwa starsze węzły. Aby uzyskać więcej informacji na temat tego procesu, zobacz Uaktualnianie puli węzłów w usłudze AKS.

Czy istnieją zagrożenia bezpieczeństwa ukierunkowane na usługę AKS, o których należy wiedzieć?

Firma Microsoft udostępnia wskazówki dotyczące innych akcji, które można wykonać w celu zabezpieczenia obciążeń za pośrednictwem usług, takich jak Microsoft Defender for Containers. Następujące zagrożenie bezpieczeństwa jest związane z usługami AKS i Kubernetes, o których należy pamiętać:

Jak zarządzana płaszczyzna sterowania komunikuje się z moimi węzłami?

Usługa AKS używa bezpiecznej komunikacji tunelu, aby umożliwić usłudze kubelety interfejsu API-server i poszczególnych węzłów komunikowanie się nawet w oddzielnych sieciach wirtualnych. Tunel jest zabezpieczony za pomocą szyfrowania mTLS. Bieżący główny tunel używany przez usługę AKS to Konnectivity, wcześniej znany jako apiserver-network-proxy. Sprawdź, czy wszystkie reguły sieci są zgodne z wymaganymi regułami sieci platformy Azure i nazwami FQDN.

Czy moje zasobniki mogą używać nazwy FQDN serwera interfejsu API zamiast adresu IP klastra?

Tak, możesz dodać adnotację kubernetes.azure.com/set-kube-service-host-fqdn do zasobników, aby ustawić KUBERNETES_SERVICE_HOST zmienną na nazwę domeny serwera interfejsu API zamiast adresu IP usługi klastra. Jest to przydatne w przypadkach, gdy ruch wychodzący klastra odbywa się za pośrednictwem zapory warstwy 7, takiej jak w przypadku korzystania z usługi Azure Firewall z regułami aplikacji.

Dlaczego dwie grupy zasobów są tworzone za pomocą usługi AKS?

Usługa AKS opiera się na wielu zasobach infrastruktury platformy Azure, w tym zestawach skalowania maszyn wirtualnych, sieciach wirtualnych i dyskach zarządzanych. Te integracje umożliwiają zastosowanie wielu podstawowych funkcji platformy Azure w zarządzanym środowisku Kubernetes udostępnianym przez usługę AKS. Na przykład większość typów maszyn wirtualnych platformy Azure może być używana bezpośrednio z usługą AKS i rezerwacjami platformy Azure, aby automatycznie otrzymywać rabaty na te zasoby.

Aby włączyć tę architekturę, każde wdrożenie usługi AKS obejmuje dwie grupy zasobów:

  1. Należy utworzyć pierwszą grupę zasobów. Ta grupa zawiera tylko zasób usługi Kubernetes. Dostawca zasobów usługi AKS automatycznie tworzy drugą grupę zasobów podczas wdrażania. Przykładem drugiej grupy zasobów jest MC_myResourceGroup_myAKSCluster_eastus. Aby uzyskać informacje na temat określania nazwy tej drugiej grupy zasobów, zobacz następną sekcję.

  2. Druga grupa zasobów, znana jako grupa zasobów węzła, zawiera wszystkie zasoby infrastruktury skojarzone z klastrem. Te zasoby obejmują maszyny wirtualne węzła Kubernetes, sieć wirtualną i magazyn. Domyślnie grupa zasobów węzła ma nazwę taką jak MC_myResourceGroup_myAKSCluster_eastus. Usługa AKS automatycznie usuwa grupę zasobów węzła za każdym razem, gdy klaster zostanie usunięty. Tego klastra należy używać tylko dla zasobów, które współużytkuje cykl życia klastra.

    Uwaga

    Modyfikowanie dowolnego zasobu w grupie zasobów węzła w klastrze usługi AKS jest nieobsługiwaną akcją i spowoduje niepowodzenie operacji klastra. Możesz zapobiec wprowadzeniu zmian w grupie zasobów węzła, blokując użytkownikom modyfikowanie zasobów zarządzanych przez klaster usługi AKS.

Czy mogę podać własną nazwę dla grupy zasobów węzła usługi AKS?

Tak. Domyślnie usługa AKS nazywa grupę zasobów węzła MC_resourcegroupname_clustername_location, ale możesz również podać własną nazwę.

Aby określić własną nazwę grupy zasobów, zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 0.3.2 lub nowszej aks-preview. Podczas tworzenia klastra usługi AKS przy użyciu polecenia użyj parametru az aks create--node-resource-group i określ nazwę grupy zasobów. Jeśli używasz szablonu usługi Azure Resource Manager do wdrożenia klastra usługi AKS, możesz zdefiniować nazwę grupy zasobów przy użyciu właściwości nodeResourceGroup .

  • Dostawca zasobów platformy Azure automatycznie tworzy pomocniczą grupę zasobów.
  • Niestandardową nazwę grupy zasobów można określić tylko podczas tworzenia klastra.

Podczas pracy z grupą zasobów węzła należy pamiętać, że nie można wykonywać następujących czynności:

  • Określ istniejącą grupę zasobów dla grupy zasobów węzła.
  • Określ inną subskrypcję dla grupy zasobów węzła.
  • Zmień nazwę grupy zasobów węzła po utworzeniu klastra.
  • Określ nazwy zarządzanych zasobów w grupie zasobów węzła.
  • Modyfikowanie lub usuwanie tagów utworzonych przez platformę Azure zasobów zarządzanych w grupie zasobów węzła. Zobacz dodatkowe informacje w następnej sekcji.

Czy mogę zmodyfikować tagi i inne właściwości zasobów usługi AKS w grupie zasobów węzła?

W przypadku modyfikowania lub usuwania tagów utworzonych przez platformę Azure i innych właściwości zasobów w grupie zasobów węzła mogą wystąpić nieoczekiwane błędy skalowania i uaktualniania. Usługa AKS umożliwia tworzenie i modyfikowanie tagów niestandardowych utworzonych przez użytkowników końcowych oraz dodawanie tych tagów podczas tworzenia puli węzłów. Możesz na przykład utworzyć lub zmodyfikować tagi niestandardowe, aby przypisać jednostkę biznesową lub centrum kosztów. Inną opcją jest utworzenie zasad platformy Azure z zakresem w zarządzanej grupie zasobów.

Tagi utworzone przez platformę Azure są tworzone dla odpowiednich usług platformy Azure i powinny być zawsze dozwolone. W przypadku usługi AKS istnieją aks-managed tagi i .k8s-azure Modyfikowanie dowolnych tagów utworzonych przez platformę Azure w zasobach w grupie zasobów węzła w klastrze usługi AKS jest nieobsługiwaną akcją, która przerywa cel poziomu usług (SLO). Aby uzyskać więcej informacji, zobacz Czy usługa AKS oferuje umowę dotyczącą poziomu usług?

Uwaga

W przeszłości nazwa tagu "Właściciel" została zarezerwowana dla usługi AKS do zarządzania publicznym adresem IP przypisanym do adresu IP frontonu modułu równoważenia obciążenia. Teraz usługi korzystają z prefiksu aks-managed . W przypadku starszych zasobów nie używaj zasad platformy Azure do stosowania nazwy tagu "Właściciel". W przeciwnym razie wszystkie zasoby we wdrożeniu klastra usługi AKS i operacjach aktualizacji zostaną przerwane. Nie dotyczy to nowo utworzonych zasobów.

Jakie kontrolery przyjęć platformy Kubernetes obsługują usługę AKS? Czy można dodać lub usunąć kontrolery dostępu?

Usługa AKS obsługuje następujące kontrolery przyjęć:

  • Przestrzeń nazwLifecycle
  • LimitRanger
  • Serviceaccount
  • DefaultIngressClass
  • DefaultStorageClass
  • DefaultTolerationSeconds
  • MutatingAdmissionWebhook
  • ValidatingAdmissionWebhook
  • ZasóbQuota
  • PodNodeSelector
  • PodTolerationRestriction
  • ExtendedResourceToleration

Obecnie nie można zmodyfikować listy kontrolerów dostępu w usłudze AKS.

Czy mogę używać elementów webhook kontrolera dostępu w usłudze AKS?

Tak, można użyć elementów webhook kontrolera dostępu w usłudze AKS. Zaleca się wykluczenie wewnętrznych przestrzeni nazw usługi AKS oznaczonych etykietą płaszczyzny sterowania. Na przykład:

namespaceSelector:
    matchExpressions:
    - key: control-plane
      operator: DoesNotExist

Zapory usługi AKS ruch wychodzący serwera interfejsu API, aby elementy webhook kontrolera dostępu były dostępne z poziomu klastra.

Czy elementy webhook kontrolera wpływu na system kube-system i wewnętrzne przestrzenie nazw usługi AKS?

Aby chronić stabilność systemu i zapobiegać wpływowi niestandardowych kontrolerów przyjęć na wewnętrzne usługi w systemie kube-system, przestrzeń nazw AKS ma wymuszanie przyjęć, które automatycznie wyklucza kube-system i wewnętrzne przestrzenie nazw usługi AKS. Dzięki tej usłudze niestandardowe kontrolery dostępu nie wpływają na usługi działające w systemie kube-system.

Jeśli masz krytyczny przypadek użycia do wdrażania czegoś w systemie kube-system (niezalecane) w obsłudze niestandardowego elementu webhook przyjęcia, możesz dodać następującą etykietę lub adnotację, aby wymuszać przyznanie go zignorować.

Etykieta: "admissions.enforcer/disabled": "true" lub adnotacja: "admissions.enforcer/disabled": true

Czy usługa Azure Key Vault jest zintegrowana z usługą AKS?

Dostawca usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych zapewnia natywną integrację usługi Azure Key Vault z usługą AKS.

Czy można uruchamiać kontenery systemu Windows Server w usłudze AKS?

Tak, kontenery systemu Windows Server są dostępne w usłudze AKS. Aby uruchomić kontenery systemu Windows Server w usłudze AKS, należy utworzyć pulę węzłów z systemem operacyjnym Windows Server z systemem operacyjnym gościa. Kontenery systemu Windows Server mogą używać tylko systemu Windows Server 2019. Aby rozpocząć, zobacz Tworzenie klastra usługi AKS przy użyciu puli węzłów systemu Windows Server.

Obsługa systemu Windows Server dla puli węzłów obejmuje pewne ograniczenia, które są częścią nadrzędnego systemu Windows Server w projekcie Kubernetes. Aby uzyskać więcej informacji na temat tych ograniczeń, zobacz Kontenery systemu Windows Server w ograniczeniach usługi AKS.

Czy usługa AKS oferuje umowę dotyczącą poziomu usług?

Usługa AKS zapewnia gwarancje umowy SLA w warstwie cenowej Standardowa z funkcją umowy SLA czasu pracy.

Warstwa cenowa Bezpłatna nie ma skojarzonej umowy dotyczącej poziomu usług, ale ma cel poziomu usług na poziomie 99,5%. Występują przejściowe problemy z łącznością, jeśli występuje uaktualnienie, węzły nakładki w złej kondycji, konserwacja platformy, aplikacja przeciąża serwer interfejsu API żądaniami itp. W przypadku obciążeń o znaczeniu krytycznym i produkcyjnym lub jeśli obciążenie nie tolerowa ponownego uruchamiania usługi API Server, zalecamy użycie warstwy Standardowa, która obejmuje umowę SLA czasu działania.

Czy mogę zastosować rabaty na rezerwację platformy Azure do węzłów agenta usługi AKS?

Węzły agenta usługi AKS są rozliczane jako standardowe maszyny wirtualne platformy Azure. Jeśli zakupiono rezerwacje platformy Azure dla rozmiaru maszyny wirtualnej używanej w usłudze AKS, rabaty te są stosowane automatycznie.

Czy mogę przenieść/zmigrować klaster między dzierżawami platformy Azure?

Przenoszenie klastra usługi AKS między dzierżawami jest obecnie nieobsługiwane.

Czy mogę przenieść/zmigrować klaster między subskrypcjami?

Przenoszenie klastrów między subskrypcjami jest obecnie nieobsługiwane.

Czy mogę przenieść klastry usługi AKS z bieżącej subskrypcji platformy Azure do innej?

Przenoszenie klastra usługi AKS i skojarzonych z nim zasobów między subskrypcjami platformy Azure nie jest obsługiwane.

Czy mogę przenieść mój klaster usługi AKS lub zasoby infrastruktury usługi AKS do innych grup zasobów lub zmienić ich nazwę?

Przenoszenie lub zmienianie nazwy klastra usługi AKS i skojarzonych z nim zasobów nie jest obsługiwane.

Dlaczego usuwanie klastra trwa tak długo?

Większość klastrów jest usuwana na żądanie użytkownika. W niektórych przypadkach, szczególnie w przypadku, gdy przywieziesz własną grupę zasobów lub wykonasz zadania obejmujące wiele grup zasobów, usunięcie może zająć więcej czasu lub nawet zakończyć się niepowodzeniem. Jeśli masz problem z usunięciem, sprawdź dwukrotnie, czy nie masz blokad na RG, że wszystkie zasoby spoza grupy zasobów nie są skojarzone z RG itd.

Dlaczego tworzenie/aktualizowanie klastra trwa tak długo?

Jeśli masz problemy z operacjami tworzenia i aktualizowania klastra, upewnij się, że nie masz przypisanych zasad ani ograniczeń usługi, które mogą uniemożliwić klastrowi usługi AKS zarządzanie zasobami, takimi jak maszyny wirtualne, moduły równoważenia obciążenia, tagi itp.

Czy mogę przywrócić klaster po jego usunięciu?

Nie, nie można przywrócić klastra po jego usunięciu. Po usunięciu klastra grupa zasobów węzła i wszystkie jej zasoby również zostaną usunięte. Przykładem drugiej grupy zasobów jest MC_myResourceGroup_myAKSCluster_eastus.

Jeśli chcesz zachować dowolne zasoby, przenieś je do innej grupy zasobów przed usunięciem klastra. Jeśli chcesz chronić przed przypadkowymi usunięciami, możesz zablokować zarządzaną grupę zasobów usługi AKS hostująca zasoby klastra przy użyciu blokady grupy zasobów węzła.

Co to jest obsługa platformy i co obejmuje?

Obsługa platformy to ograniczony plan pomocy technicznej dla nieobsługiwanych klastrów wersji "N-3". Obsługa platformy obejmuje tylko obsługę infrastruktury platformy Azure. Obsługa platformy nie obejmuje żadnych elementów związanych z następującymi elementami:

  • Funkcje i składniki platformy Kubernetes
  • Tworzenie puli klastrów lub węzłów
  • Poprawki
  • Poprawki błędów
  • Poprawki zabezpieczeń
  • Wycofane składniki

Aby uzyskać więcej informacji na temat ograniczeń, zobacz zasady pomocy technicznej platformy.

Usługa AKS opiera się na wydaniach i poprawkach z platformy Kubernetes, czyli projektu open source, który obsługuje tylko okno przesuwne trzech wersji pomocniczych. Usługa AKS może zagwarantować pełną obsługę tylko wtedy, gdy te wersje są obsługiwane jako nadrzędne. Ponieważ nie ma więcej poprawek tworzonych nadrzędnie, usługa AKS może pozostawić te wersje niezaznaczone lub rozwidlenie. Ze względu na to ograniczenie obsługa platformy nie obsługuje żadnych funkcji opartych na nadrzędnym środowisku kubernetes.

Czy usługa AKS automatycznie uaktualnia nieobsługiwane klastry?

Usługa AKS inicjuje automatyczne uaktualnienia dla nieobsługiwanych klastrów. Gdy klaster w wersji n-3 (gdzie n jest najnowszą obsługiwaną wersją pomocniczą usługi AKS GA) zostanie usunięty do n-4, usługa AKS automatycznie uaktualni klaster do n-2, aby pozostał w zasadach pomocy technicznej usługi AKS. Automatyczne uaktualnianie klastra obsługiwanego przez platformę do obsługiwanej wersji jest domyślnie włączone.

Na przykład uaktualnienie kubernetes w wersji 1.25 do wersji 1.26 podczas wersji 1.29 ogólnie dostępnej. Aby zminimalizować zakłócenia, skonfiguruj okna obsługi. Zobacz automatyczne uaktualnianie, aby uzyskać szczegółowe informacje na temat kanałów automatycznego uaktualniania .

Jeśli mam zasobnik/wdrożenia w stanie "NodeLost" lub "Nieznany", nadal mogę uaktualnić klaster?

Możesz, ale nie zalecamy tego. Należy wykonać aktualizacje, gdy stan klastra jest znany i w dobrej kondycji.

Jeśli mam klaster z co najmniej jednym węzłem w stanie złej kondycji lub został zamknięty, czy mogę przeprowadzić uaktualnienie?

Nie, usuń/usuń wszystkie węzły w stanie niepowodzenia lub w inny sposób z klastra przed uaktualnieniem.

Uruchomiono usuwanie klastra, ale jest wyświetlany błąd [Errno 11001] getaddrinfo failed

Najczęściej ten błąd występuje, jeśli istnieje co najmniej jedna sieciowa grupa zabezpieczeń, które są nadal używane, które są skojarzone z klastrem. Usuń je i spróbuj usunąć ponownie.

Uruchomiono uaktualnienie, ale teraz moje zasobniki znajdują się w pętlach awarii, a sondy gotowości kończą się niepowodzeniem?

Upewnij się, że jednostka usługi nie wygasła. Zobacz: Jednostka usługi AKS i poświadczenia aktualizacji usługi AKS.

Mój klaster działał, ale nagle nie można aprowizować modułów LoadBalancers, zainstalować kontrolery PVC itp.?

Upewnij się, że jednostka usługi nie wygasła. Zobacz: Jednostka usługi AKS i poświadczenia aktualizacji usługi AKS.

Czy mogę skalować klaster usługi AKS do zera?

Możesz całkowicie zatrzymać uruchomiony klaster usługi AKS, co pozwala zaoszczędzić na odpowiednich kosztach obliczeniowych. Ponadto możesz również wybrać skalowanie lub automatyczne skalowanie wszystkich lub określonych User pul węzłów do 0, zachowując tylko wymaganą konfigurację klastra.

Nie można bezpośrednio skalować pul węzłów systemowych do zera.

Czy można użyć interfejsów API zestawu skalowania maszyn wirtualnych do ręcznego skalowania?

Nie, operacje skalowania przy użyciu interfejsów API zestawu skalowania maszyn wirtualnych nie są obsługiwane. Użyj interfejsów API usługi AKS (az aks scale).

Czy można użyć zestawów skalowania maszyn wirtualnych do ręcznego skalowania do zera węzłów?

Nie, operacje skalowania przy użyciu interfejsów API zestawu skalowania maszyn wirtualnych nie są obsługiwane. Interfejs API usługi AKS umożliwia skalowanie do zera pul węzłów niesystemowych lub zatrzymanie klastra .

Czy mogę zatrzymać lub cofnąć przydział wszystkich maszyn wirtualnych?

Usługa AKS ma mechanizmy odporności, aby wytrzymać taką konfigurację i odzyskać ją, ale nie jest to obsługiwana konfiguracja. Zatrzymaj klaster .

Czy mogę używać niestandardowych rozszerzeń maszyn wirtualnych?

Nie, AKS jest usługą zarządzaną, a manipulowanie zasobami IaaS nie jest obsługiwane. Aby zainstalować składniki niestandardowe, użyj interfejsów API i mechanizmów platformy Kubernetes. Na przykład użyj poleceń DaemonSets, aby zainstalować wymagane składniki.

Czy usługa AKS przechowuje dane klientów poza regionem klastra?

Nie, wszystkie dane są przechowywane w regionie klastra.

Czy obrazy usługi AKS są wymagane do uruchomienia jako katalog główny?

Następujące obrazy mają wymagania funkcjonalne dotyczące opcji "Uruchom jako główny", a wyjątki muszą zostać zgłoszone dla dowolnych zasad:

  • mcr.microsoft.com/oss/kubernetes/coredns
  • mcr.microsoft.com/azuremonitor/containerinsights/ciprod
  • mcr.microsoft.com/oss/calico/node
  • mcr.microsoft.com/oss/kubernetes-csi/azuredisk-csi

Co to jest tryb przezroczysty usługi Azure CNI a tryb mostka?

Począwszy od wersji 1.2.0, usługa Azure CNI ustawia tryb przezroczysty jako domyślny dla wdrożeń CNI dla pojedynczej dzierżawy systemu Linux. Tryb przezroczysty zastępuje tryb mostka. W poniższych sekcjach Tryb mostka i Tryb przezroczysty omówimy więcej na temat różnic między trybami i korzyściami i ograniczeniami dotyczącymi trybu przezroczystego w usłudze Azure CNI.

Tryb mostka

Tryb mostka CNI platformy Azure tworzy most L2 o nazwie "azure0" w sposób "just in time". Wszystkie interfejsy par zasobników veth po stronie hosta są połączone z tym mostem. Komunikacja zasobnika wewnątrz maszyny wirtualnej i pozostały ruch przechodzi przez ten most. Mostek jest urządzeniem wirtualnym warstwy 2, które samodzielnie nie może odbierać ani przesyłać niczego, chyba że powiążesz z nim co najmniej jedno rzeczywiste urządzenie. Z tego powodu eth0 maszyny wirtualnej z systemem Linux musi zostać przekonwertowana na mostek podrzędny "azure0", który tworzy złożoną topologię sieci na maszynie wirtualnej z systemem Linux. Jako objaw CNI musiał obsługiwać inne funkcje sieciowe, takie jak aktualizacje serwera DNS.

Bridge mode topology

W poniższym przykładzie pokazano, jak wygląda konfiguracja trasy ip w trybie mostka. Niezależnie od liczby zasobników, które ma węzeł, istnieją tylko dwie trasy. Pierwsza trasa mówi, że ruch (z wyłączeniem lokalnego na platformie Azure0) przechodzi do bramy domyślnej podsieci za pośrednictwem interfejsu ip "src 10.240.0.4", czyli podstawowego adresu IP węzła. Drugi mówi "10.20.x.x" Miejsce zasobnika do jądra, aby jądro zdecydować.

default via 10.240.0.1 dev azure0 proto dhcp src 10.240.0.4 metric 100
10.240.0.0/12 dev azure0 proto kernel scope link src 10.240.0.4
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
root@k8s-agentpool1-20465682-1:/#

Tryb przezroczysty

Tryb przezroczysty ma proste podejście do konfigurowania sieci systemu Linux. W tym trybie usługa Azure CNI nie zmienia żadnych właściwości interfejsu eth0 na maszynie wirtualnej z systemem Linux. Takie podejście do zmiany właściwości sieci systemu Linux pomaga zmniejszyć złożone problemy z przypadkami narożnymi, które klastry mogą napotkać w trybie mostka. W trybie przezroczystym usługa Azure CNI tworzy i dodaje interfejsy par zasobników veth po stronie hosta, które są dodawane do sieci hosta. Komunikacja między zasobnikami maszyn wirtualnych odbywa się za pośrednictwem tras ip dodanych przez sieć CNI. Zasadniczo komunikacja między zasobnikami odbywa się za pośrednictwem warstwy 3 i reguł routingu L3 kierujących ruch zasobników.

Transparent mode topology

W poniższym przykładzie przedstawiono konfigurację trasy ip w trybie przezroczystym. Interfejs każdego zasobnika pobiera trasę statyczną dołączoną, więc ruch z dest IP, ponieważ zasobnik jest wysyłany bezpośrednio do interfejsu pary po stronie veth hosta zasobnika.

10.240.0.216 dev azv79d05038592 proto static
10.240.0.218 dev azv8184320e2bf proto static
10.240.0.219 dev azvc0339d223b9 proto static
10.240.0.222 dev azv722a6b28449 proto static
10.240.0.223 dev azve7f326f1507 proto static
10.240.0.224 dev azvb3bfccdd75a proto static
168.63.129.16 via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
169.254.169.254 via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

Zalety trybu przezroczystego

  • Zapewnia środki zaradcze dla conntrack warunku wyścigu równoległego DNS i unikanie 5-sekundowych problemów z opóźnieniem DNS bez konieczności konfigurowania lokalnego systemu DNS węzła (możesz nadal używać lokalnego systemu DNS węzła ze względu na wydajność).
  • Eliminuje początkowe opóźnienie 5-sekundowego trybu mostka CNI wprowadzone dzisiaj z powodu instalacji mostka "just in time".
  • Jednym z przypadków narożnych w trybie mostka jest to, że usługa Azure CNI nie może aktualizować niestandardowych list serwerów DNS, które użytkownicy dodają do sieci wirtualnej lub karty sieciowej. Ten scenariusz powoduje, że funkcja CNI pobiera tylko pierwsze wystąpienie listy serwerów DNS. Ten problem został rozwiązany w trybie przezroczystym, ponieważ funkcja CNI nie zmienia żadnych właściwości eth0. Zobacz więcej tutaj.
  • Zapewnia lepszą obsługę ruchu UDP i ograniczania ryzyka dla burzy powodzi UDP, gdy limit czasu ARP jest limit czasu. W trybie mostka, gdy mostek nie zna adresu MAC zasobnika docelowego w komunikacji między zasobnikami maszyn wirtualnych, zgodnie z projektem, powoduje burzę pakietu na wszystkich portach. Ten problem został rozwiązany w trybie przezroczystym, ponieważ w ścieżce nie ma żadnych urządzeń L2. Zobacz więcej tutaj.
  • Tryb przezroczysty działa lepiej w komunikacji między zasobnikami maszyn wirtualnych w zakresie przepływności i opóźnień w porównaniu z trybem mostka.

Jak uniknąć problemów z powolnym ustawianiem własności uprawnień, gdy wolumin zawiera wiele plików?

Tradycyjnie, jeśli zasobnik jest uruchomiony jako użytkownik niebędący użytkownikiem głównym (co należy), należy określić fsGroup wewnątrz kontekstu zabezpieczeń zasobnika, aby wolumin mógł być czytelny i zapisywalny przez zasobnik. To wymaganie zostało szczegółowo omówione tutaj.

Efektem ubocznym ustawienia fsGroup jest to, że za każdym razem, gdy wolumin jest zainstalowany, platforma Kubernetes musi rekursywnie chown() i chmod() wszystkie pliki i katalogi wewnątrz woluminu (z kilkoma wyjątkami opisanymi poniżej). Ten scenariusz występuje nawet wtedy, gdy własność grupy woluminu jest już zgodna z żądanym elementem fsGroup. Może to być kosztowne w przypadku większych woluminów z dużą częścią małych plików, co może spowodować, że uruchamianie zasobnika może zająć dużo czasu. Ten scenariusz był znanym problemem przed 1.20, a obejście polega na ustawieniu zasobnika uruchom jako główny:

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    runAsUser: 0
    fsGroup: 0

Problem został rozwiązany przy użyciu platformy Kubernetes w wersji 1.20. Aby uzyskać więcej informacji, zobacz Kubernetes 1.20: Szczegółowa kontrola zmian uprawnień woluminu.

Czy można używać bibliotek kryptograficznych FIPS z wdrożeniami w usłudze AKS?

Węzły z obsługą protokołu FIPS są teraz obsługiwane w pulach węzłów opartych na systemie Linux. Aby uzyskać więcej informacji, zobacz Dodawanie puli węzłów z obsługą protokołu FIPS.

Czy można skonfigurować sieciowe grupy zabezpieczeń za pomocą usługi AKS?

Usługa AKS nie stosuje sieciowych grup zabezpieczeń do podsieci i nie modyfikuje żadnej sieciowej grupy zabezpieczeń skojarzonej z tą podsiecią. Usługa AKS modyfikuje tylko ustawienia sieciowych grup zabezpieczeń interfejsów sieciowych. Jeśli używasz sieci CNI, musisz również upewnić się, że reguły zabezpieczeń w sieciowych grupach zabezpieczeń zezwalają na ruch między zakresami CIDR węzła i zasobnika. Jeśli używasz rozwiązania kubenet, musisz również upewnić się, że reguły zabezpieczeń w sieciowych grupach zabezpieczeń zezwalają na ruch między węzłem a trasą CIDR zasobnika. Aby uzyskać więcej informacji, zobacz Sieciowe grupy zabezpieczeń.

Jak działa synchronizacja czasu w usłudze AKS?

Węzły usługi AKS uruchamiają usługę "chrony", która ściąga czas z hosta lokalnego. Kontenery uruchomione na zasobnikach uzyskują czas z węzłów usługi AKS. Aplikacje uruchamiane wewnątrz kontenera używają czasu z kontenera zasobnika.

Jak są aktualizowane dodatki usługi AKS?

Każda poprawka, w tym poprawka zabezpieczeń, jest automatycznie stosowana do klastra usługi AKS. Cokolwiek większego niż poprawka, na przykład zmiany wersji głównej lub pomocniczej (które mogą mieć zmiany powodujące niezgodność w wdrożonych obiektach), są aktualizowane po zaktualizowaniu klastra, jeśli jest dostępna nowa wersja. Informacje o wersji usługi AKS można znaleźć, gdy jest dostępna nowa wersja.

Jaki jest cel zainstalowanego rozszerzenia systemu Linux usługi AKS w wystąpieniach zestawów skalowania maszyn wirtualnych z systemem Linux?

Rozszerzenie usługi AKS dla systemu Linux to rozszerzenie maszyny wirtualnej platformy Azure, które instaluje i konfiguruje narzędzia do monitorowania w węzłach roboczych platformy Kubernetes. Rozszerzenie jest instalowane we wszystkich nowych i istniejących węzłach systemu Linux. Konfiguruje następujące narzędzia do monitorowania:

  • Eksporter węzła: zbiera dane telemetryczne sprzętowe z maszyny wirtualnej i udostępnia je przy użyciu punktu końcowego metryk. Następnie narzędzie do monitorowania, takie jak Prometheus, może złomować te metryki.
  • Narzędzie do wykrywania problemów z węzłem: ma na celu uwidocznienie różnych problemów z węzłami w warstwach nadrzędnych w stosie zarządzania klastrem. Jest to jednostka systemowa, która działa w każdym węźle, wykrywa problemy z węzłami i zgłasza je do serwera interfejsu API klastra przy użyciu zdarzeń i węzłówConditions.
  • ig: oparta na eBPF struktura open source do debugowania i obserwacji systemów Linux i Kubernetes. Udostępnia zestaw narzędzi (lub gadżetów) przeznaczonych do zbierania odpowiednich informacji, umożliwiając użytkownikom identyfikowanie przyczyny problemów z wydajnością, awarii lub innych anomalii. W szczególności jego niezależność od platformy Kubernetes umożliwia użytkownikom korzystanie z niego również w przypadku debugowania problemów z płaszczyzną sterowania.

Te narzędzia ułatwiają obserwowanie wielu problemów związanych z kondycją węzła, takich jak:

  • Problemy z demonem infrastruktury: usługa NTP nie działa
  • Problemy sprzętowe: zły procesor CPU, pamięć lub dysk
  • Problemy z jądrem: zakleszczenie jądra, uszkodzony system plików
  • Problemy ze środowiskiem uruchomieniowym kontenera: demon środowiska uruchomieniowego nie odpowiada

Rozszerzenie nie wymaga dodatkowego dostępu wychodzącego do żadnych adresów URL, adresów IP ani portów poza udokumentowanymi wymaganiami dotyczącymi ruchu wychodzącego usługi AKS. Nie wymaga żadnych specjalnych uprawnień przyznanych na platformie Azure. Używa narzędzia kubeconfig do nawiązywania połączenia z serwerem interfejsu API w celu wysyłania zebranych danych monitorowania.