Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✔️ AKS Automatic ✔️ AKS Standard
Beim Verwalten von Clustern in Azure Kubernetes Service (AKS) müssen Sie oft Teams oder Workloads isolieren. Mit logischer Isolierung können Sie einen einzelnen AKS-Cluster für mehrere Workloads, Teams oder Umgebungen verwenden. Kubernetes-Namespaces bilden die logische Isolationsgrenze für Workloads und Ressourcen. Die logische Isolierung umfasst die Implementierung von Skripten und Prozessen zur Erstellung von Namespaces, zur Festlegung von Ressourcenbeschränkungen, zur Anwendung von Netzwerkrichtlinien und zur Gewährung des Teamzugriffs über rollenbasierte Zugriffskontrollen. Erfahren Sie, wie Sie verwaltete Namespaces in Azure Kubernetes Service (AKS) verwenden können, um die Namespace-Verwaltung, die Cluster-Mandantenfähigkeit und die Ressourcenisolierung zu vereinfachen.
Die logische Trennung von Clustern bietet in der Regel eine höhere Poddichte als physisch isolierte Cluster, wodurch weniger überschüssige Computekapazität im Cluster ungenutzt bleibt. In Kombination mit Cluster Autoscaler oder Node Auto Provisioning können Sie die Anzahl der Knoten je nach Bedarf nach oben oder unten skalieren. Dieser Best Practice-Ansatz minimiert die Kosten, da nur die erforderliche Anzahl von Knoten ausgeführt wird.
Netzwerkrichtlinien
Netzwerkrichtlinien sind Kubernetes-Ressourcen, mit denen Sie den Datenverkehrsfluss zwischen Pods, Namespaces und externen Endpunkten steuern können. Mit Netzwerkrichtlinien können Sie Regeln für eingehenden und ausgehenden Datenverkehr festlegen, um sicherzustellen, dass nur autorisierte Kommunikation zugelassen wird. Durch die Anwendung von Netzwerkrichtlinien können Sie die Sicherheit und Isolierung von Workloads innerhalb Ihres Clusters verbessern.
Hinweis
Die Standardregel für die Eingangsnetzwerkrichtlinie Gleichen Namespace zulassen sorgt für eine standardmäßig sichere Konfiguration. Wenn Sie möchten, dass Ihre Kubernetes-Dienste, eingehender Datenverkehr oder Gateways von außerhalb des Namespace, in dem sie bereitgestellt sind, zugänglich sind, beispielsweise von einem Controller für eingehenden Datenverkehr, der in einem separaten Namespace bereitgestellt ist, müssen Sie Alle zulassen auswählen. Sie können dann Ihre eigene Netzwerkrichtlinie anwenden, um den Eingang so einzuschränken, dass er nur aus diesem Namespace stammt.
Verwaltete Namespaces verfügen über eine Reihe integrierter Richtlinien.
- Alle zulassen: Lässt den gesamten Netzwerkdatenverkehr zu.
- Denselben Namespace zulassen: Ermöglicht den gesamten Netzwerkdatenverkehr innerhalb desselben Namespaces.
- Alle verweigern: Verweigert den gesamten Netzwerkdatenverkehr.
Sie können jede der integrierten Richtlinien sowohl auf Eingangs- als auch auf Ausgangsregeln anwenden. Diese haben die folgenden Standardwerte.
| Politik | Standardwert |
|---|---|
| Eingang | Denselben Namespace zulassen |
| Ausgehende Daten | Alle zulassen |
Hinweis
Benutzer mit einer Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write-Aktion, wie Azure Kubernetes Service RBAC Writer, in der ihnen zugewiesenen Microsoft Entra-ID-Rolle können über die Kubernetes-API weitere Netzwerkrichtlinien hinzufügen.
Wenn ein Administrator z. B. eine Deny All Richtlinie für Eingang/Ausgang anwendet und ein Benutzer eine Allow Richtlinie für einen Namespace über die Kubernetes-API anwendet, hat die Allow Richtlinie Vorrang vor der Deny All Richtlinie, und der Netzwerkverkehr für den Namespace wird zugelassen.
Ressourcenkontingente
Ressourcenkontingente sind Kubernetes-Ressourcen, die zur Verwaltung und Begrenzung des Ressourcenverbrauchs von Namespaces innerhalb eines Clusters verwendet werden. Sie ermöglichen Es Administratoren, Einschränkungen für die Menge der CPU, des Arbeitsspeichers, des Speichers oder anderer Ressourcen zu definieren, die von Workloads in einem Namespace verwendet werden. Durch die Anwendung von Ressourcenkontingenten können Sie eine gerechte Ressourcenverteilung sicherstellen, eine übermäßige Ressourcennutzung verhindern und die Stabilität des Clusters aufrechterhalten.
Verwaltete Namespaces können mit den folgenden Ressourcenkontingenten erstellt werden:
- CPU-Anforderungen und -Grenzwerte: Legen Sie die minimale und maximale Menge an CPU-Ressourcen fest, die Workloads im Namespace anfordern oder verbrauchen dürfen. Das Kontingent stellt sicher, dass Arbeitsauslastungen über ausreichende CPU-Ressourcen verfügen, um zu arbeiten, während die Übernutzung verhindert wird, die sich auf andere Namespaces auswirken könnte. Das Kontingent wird in der MilliCPU-Form definiert.
-
Speicheranforderungen und Grenzwerte: Geben Sie die minimale und maximale Menge an Speicherressourcen an, die Workloads im Namespace anfordern oder verbrauchen dürfen. Das Kontingent trägt zur Aufrechterhaltung der Stabilität bei, indem es eine Überbelegung des Speichers verhindert und eine gerechte Ressourcenzuordnung über Namespaces hinweg gewährleistet. Das Kontingent wird in Zweierpotenzen definiert, z. B.:
Ei,Pi,Ti,Gi,Mi,Ki.
Beschriftungen und Anmerkungen
Kubernetes-Bezeichnungen und Anmerkungen sind Metadaten, die Kubernetes-Objekten wie Namespaces zugeordnet sind, um zusätzliche Informationen bereitzustellen. Bezeichnungen sind Schlüssel-Wert-Paare, die zur Organisation und Auswahl von Ressourcen verwendet werden und eine effiziente Gruppierung und Abfrage ermöglichen. Anmerkungen speichern nicht identifizierte Metadaten, z. B. Konfigurationsdetails oder Betriebsanweisungen, die von Tools oder Systemen genutzt werden.
Sie haben die Möglichkeit, Kubernetes-Bezeichnungen und -Anmerkungen festzulegen, die auf den Namespace angewendet werden sollen.
Einführungsrichtlinie
Die Einführungsrichtlinie legt fest, wie ein vorhandener Namespace in Kubernetes beim Erstellen eines verwalteten Namespace behandelt wird.
Warnung
Das Onboarding eines vorhandenen Namespaces zur Verwaltung kann zu Unterbrechungen führen. Wenn das zugewiesene Ressourcenkontingent geringer ist als die bereits von Pods angeforderte Menge, werden neue Bereitstellungen und Pods, die das Kontingent überschreiten, abgelehnt. Vorhandene Bereitstellungen sind nicht betroffen, die Skalierung wird jedoch verweigert. Das Anwenden von Netzwerkrichtlinien auf einen vorhandenen Namespace kann sich auf den vorhandenen Datenverkehr auswirken. Stellen Sie sicher, dass die Richtlinien getestet und validiert werden, um unbeabsichtigte Störungen der Kommunikation zwischen Pods oder externen Endpunkten zu vermeiden.
Die folgenden Optionen sind verfügbar:
- Never: Wenn der Namespace bereits im Cluster existiert, schlagen die Versuche fehl, diesen Namespace als verwalteten Namespace zu erstellen.
- IfIdentical (Wenn identisch): Übernehmen des vorhandenen Namespace, der verwaltet werden soll, sofern keine Unterschiede zwischen dem vorhandenen Namespace und der gewünschten Konfiguration bestehen.
- Always (Immer): Es wird immer der vorhandene Namespace übernommen, der verwaltet werden soll, auch wenn einige Felder im Namespace möglicherweise überschrieben werden.
Löschen von Richtlinien
Die Richtlinie zum Löschen legt fest, wie der Kubernetes-Namespace behandelt wird, wenn die verwaltete Namespaceressource gelöscht wird.
Warnung
Das Löschen eines verwalteten Namespace mit der Richtlinie Löschen führt dazu, dass alle Ressourcen innerhalb dieses Namespace, wie z. B. Bereitstellungen, Dienste, eingehenden Datenverkehr und andere Kubernetes-Objekte, gelöscht werden. Stellen Sie sicher, dass Sie alle wichtigen Ressourcen sichern oder migrieren, bevor Sie fortfahren.
Die folgenden Optionen sind verfügbar:
-
Keep (Behalten): Nur verwaltete Namensraumressourcen löschen, während der Kubernetes-Namensraum intakt bleibt. Darüber hinaus wird die Bezeichnung
ManagedByARMaus dem Namespace entfernt. - Delete (Löschen): Löschen der verwalteten Namespaceressource und des Kubernetes-Namespace.
Integrierte Rollen für verwaltete Namespaces
Verwaltete Namespaces verwenden die folgenden integrierten Rollen für die Steuerungsebene.
| Rolle | BESCHREIBUNG |
|---|---|
| Mitwirkender des Azure Kubernetes-Dienstnamespaces | Ermöglicht den Zugriff zum Erstellen, Aktualisieren und Löschen verwalteter Namespaces in einem Cluster. |
| Benutzer des Azure Kubernetes-Dienstnamespace | Ermöglicht den schreibgeschützten Zugriff auf einen verwalteten Namespace in einem Cluster. Ermöglicht den Zugriff auf die Listenanmeldeinformationen im Namespace. |
Verwaltete Namespaces verwenden die folgenden integrierten Rollen für die Datenebene.
| Rolle | BESCHREIBUNG |
|---|---|
| Azure Kubernetes Service RBAC Reader | Ermöglicht nur-Lesezugriff, um die meisten Objekte in einem Namespace anzuzeigen. Es ist nicht möglich, Rollen oder Rollenbindungen anzuzeigen. Diese Rolle lässt das Anzeigen von Geheimnissen nicht zu, da das Lesen des Inhalts von Geheimnissen den Zugriff auf ServiceAccount-Anmeldeinformationen im Namespace ermöglicht, was den API-Zugriff als beliebiges Dienstkonto im Namespace ermöglichen würde (eine Form von Berechtigungsausweitung). |
| RBAC-Writer von Azure Kubernetes Service | Ermöglicht Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace. Diese Rolle lässt das Anzeigen oder Ändern von Rollen oder Rollenbindungen nicht zu. Diese Rolle ermöglicht jedoch den Zugriff auf Geheime Schlüssel und das Ausführen von Pods als beliebiges ServiceAccount im Namespace, sodass sie verwendet werden kann, um die API-Zugriffsebenen eines beliebigen ServiceAccounts im Namespace zu erhalten. |
| RBAC-Administrator von Azure Kubernetes Service | Erlaubt Lese-/Schreibzugriff auf die meisten Ressourcen in einem Namespace, einschließlich der Möglichkeit, Rollen und Rollenbindungen innerhalb des Namespace zu erstellen. Diese Rolle lässt keinen Schreibzugriff auf das Ressourcenkontingent oder den Namespace selbst zu. |
Anwendungsfälle für verwaltete Namespaces
Das ordnungsgemäße Einrichten von Namespaces mit zugehörigen Kontingenten oder Netzwerkrichtlinien kann komplex und zeitaufwändig sein. Mit verwalteten Namespaces können Sie vorkonfigurierte Namespaces in Ihren AKS-Clustern einrichten, mit denen Sie mit der Azure CLI interagieren können.
In den folgenden Abschnitten werden einige häufige Anwendungsfälle für verwaltete Namespaces beschrieben.
Verwalten von Teams und Ressourcen auf AKS
Angenommen, Sie sind ein Administrator bei einem kleinen Start. Sie haben einen AKS-Cluster bereitgestellt und möchten Namespaces für Entwickler aus Ihren Finanz-, Rechts- und Designteams einrichten. Während Sie die Umgebung Ihres Unternehmens einrichten, möchten Sie sicherstellen, dass der Zugriff streng kontrolliert ist, Ressourcen angemessen abgesteckt sind und Umgebungen ordnungsgemäß organisiert sind.
Das Finanzteam erfasst Formulare und Dateien von Teams im gesamten Unternehmen, aber sie halten vertrauliche Informationen, die idealerweise nicht ihre Umgebung verlassen sollten. Ihre Anwendungen und Workflows sind auf der Computerseite leichter, verbrauchen aber viel Arbeitsspeicher. Daher entscheiden Sie sich, einen Namespace einzurichten, der den gesamten Netzwerkeingang sowie Netzwerkausgang nur innerhalb ihres Namespaces zulässt und die Ressourcen entsprechend eingrenzt. Eine Bezeichnung für den Namespace hilft ihnen dabei, leicht zu identifizieren, welches Team es verwendet.
az aks namespace add \ --name $FINANCE_NAMESPACE \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --cpu-request 250m \ --cpu-limit 500m \ --memory-request 512Mi \ --memory-limit 2Gi \ --ingress-policy AllowAll \ --egress-policy AllowSameNamespace \ --labels team=financeDas Rechtsteam befasst sich in erster Linie mit vertraulichen Daten. Ihre Anwendungen verwenden einen fairen Arbeitsspeicher, erfordern aber wenig Rechenressourcen. Sie entscheiden sich, einen Namespace einzurichten, der sowohl für die Eingangs-/Ausgangsrichtlinien als auch für den Umfang ihrer Ressourcenkontingente äußerst restriktiv ist.
az aks namespace add \ --name $LEGAL_NAMESPACE \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --cpu-request 250m \ --cpu-limit 500m \ --memory-request 2Gi \ --memory-limit 5Gi \ --ingress-policy DenyAll \ --egress-policy DenyAll \ --labels team=legalDas Designteam benötigt die Möglichkeit, Daten frei zu teilen, um ihre Arbeit im gesamten Unternehmen zu präsentieren. Außerdem ermutigen sie Teams, ihnen Inhalte zur Referenz zu senden. Ihre Anwendungen sind intensiv und erfordern einen großen Teil des Arbeitsspeichers und der CPU. Sie entscheiden sich dafür, sie mit einem minimal restriktiven Namespace einzurichten und ihnen eine große Menge an Ressourcen zuzuweisen.
az aks namespace add \ --name $DESIGN_NAMESPACE \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --cpu-request 2000m \ --cpu-limit 2500m \ --memory-request 5Gi \ --memory-limit 8Gi \ --ingress-policy AllowAll \ --egress-policy AllowAll \ --labels team=design
Wenn diese Namespaces eingerichtet sind, verfügen Sie jetzt über Umgebungen für die drei Teams in Ihrer Organisation, die es jedem Team ermöglichen sollten, in einer Umgebung zu arbeiten, die ihren Anforderungen am besten entspricht. Administratoren können Azure CLI-Aufrufe verwenden, um die Namespaces bei Bedarf zu aktualisieren.
Anzeigen verwalteter Namespaces
Wenn die Anzahl der Teams, mit denen Sie sich beschäftigen, erweitert oder ihre Organisation wächst, müssen Sie möglicherweise die von Ihnen eingerichteten Namespaces überprüfen.
Angenommen, Sie möchten die Namespaces in Ihrem Cluster aus dem vorherigen Abschnitt überprüfen, um sicherzustellen, dass drei Namespaces vorhanden sind.
Verwenden Sie den az aks namespace list Befehl, um Ihre Namespaces zu überprüfen.
az aks namespace list \
--cluster-name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--output table
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
Name ResourceGroup Location
------------------ --------------- ----------
$CLUSTER_NAME/$DESIGN_NAMESPACE $RESOURCE_GROUP <LOCATION>
$CLUSTER_NAME/$LEGAL_NAMESPACE $RESOURCE_GROUP <LOCATION>
$CLUSTER_NAME/$FINANCE_NAMESPACE $RESOURCE_GROUP <LOCATION>
Steuern des Zugriffs auf verwaltete Namespaces
Sie können azure RBAC-Rollen, die auf jeden Namespace festgelegt sind, weiter verwenden, um zu bestimmen, welche Benutzer Zugriff auf bestimmte Aktionen im Namespace haben. Mit der richtigen Konfiguration können Sie sicherstellen, dass Benutzer über den gesamten Zugriff im Namespace verfügen und gleichzeitig den Zugriff auf andere Namespaces oder clusterweite Ressourcen beschränken.
Nächste Schritte
- Erfahren Sie, wie Sie verwaltete Namespaces in Azure Kubernetes Service (AKS) erstellen und verwenden.
- Erfahren Sie mehr über verwaltete Multicluster-Namespaces mit Azure Kubernetes Fleet Manager.