Auf dieser Seite wird erläutert, wie Sie einen privaten GKE-Cluster (Google Kubernetes Engine) erstellen, der eine Art VPC-nativer Cluster ist. In einem privaten Cluster haben Knoten nur interne IP-Adressen. Das heißt, Knoten und Pods sind standardmäßig vom Internet isoliert. Sie können sich dafür entscheiden, keinen Clientzugriff, eingeschränkten Zugriff oder uneingeschränkten Zugriff auf die Steuerungsebene zu haben.
Limits und Einschränkungen
Private Cluster müssen VPC-native Cluster sein. VPC-native Cluster unterstützen keine Legacy-Netzwerke.
Maximieren Sie die folgenden Abschnitte, um die Regeln für IP-Adressbereiche und Traffic beim Erstellen eines Clusters aufzurufen.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit
gcloud components update
ab.
Prüfen Sie, ob Sie die erforderliche Berechtigung zum Erstellen von Clustern haben. Sie sollten mindestens ein Kubernetes Engine-Cluster-Administrator sein.
Achten Sie darauf, dass Sie eine Route zum Standard-Internetgateway haben.
Privaten Cluster ohne Clientzugriff auf den öffentlichen Endpunkt erstellen
In diesem Abschnitt erstellen Sie die folgenden Ressourcen:
- Einen privaten Cluster mit dem Namen
private-cluster-0
, der private Knoten und keinen Clientzugriff auf den öffentlichen Endpunkt hat. - Ein Netzwerk mit dem Namen
my-net-0
. - Ein Subnetz mit dem Namen
my-subnet-0
.
Console
Netzwerk und Subnetz erstellen
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf add_box VPC-Netzwerk erstellen.
Geben Sie für Name
my-net-0
ein.Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.
Geben Sie im Feld Neues Subnetz für Name den Wert
my-subnet-0
ein.Wählen Sie in der Liste Region die gewünschte Region aus.
Geben Sie
10.2.204.0/22
als IP-Adressbereich ein.Setzen Sie Privater Google-Zugriff auf An.
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
Privaten Cluster erstellen
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie auf
Erstellen und dann im Bereich „Standard“ oder „Autopilot“ auf Konfigurieren.Geben Sie im Feld Name
private-cluster-0
ein.Klicken Sie im Navigationsbereich auf Netzwerk.
Wählen Sie in der Liste Netzwerk die Option my-net-0 aus.
Wählen Sie in der Liste Knotensubnetz die Option my-subnet-0 aus.
Wählen Sie das Optionsfeld Privater Cluster aus.
Entfernen Sie das Häkchen aus dem Kästchen Zugriffssteuerungsebene über die externe IP-Adresse.
(Optional für Autopilot): Setzen Sie IP-Bereich der Steuerungsebene auf
172.16.0.32/28
.Klicken Sie auf Erstellen.
gcloud
Führen Sie für Autopilot-Cluster den folgenden Befehl aus:
gcloud container clusters create-auto private-cluster-0 \ --create-subnetwork name=my-subnet-0 \ --enable-master-authorized-networks \ --enable-private-nodes \ --enable-private-endpoint
Führen Sie für Standardcluster den folgenden Befehl aus:
gcloud container clusters create private-cluster-0 \ --create-subnetwork name=my-subnet-0 \ --enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --enable-private-endpoint \ --master-ipv4-cidr 172.16.0.32/28
Dabei gilt:
--create-subnetwork name=my-subnet-0
bewirkt, dass GKE automatisch ein Subnetz mit dem Namenmy-subnet-0
erstellt.--enable-master-authorized-networks
gibt an, dass der Zugriff auf den öffentlichen Endpunkt auf von Ihnen autorisierte IP-Adressbereiche beschränkt ist.
--enable-ip-alias
sorgt dafür, dass der Cluster VPC-nativ ist (nicht für Autopilot erforderlich).
--enable-private-nodes
gibt an, dass die Knoten des Clusters keine externen IP-Adressen haben.--enable-private-endpoint
gibt an, dass der Cluster mithilfe der internen IP-Adresse für den API-Endpunkt der Steuerungsebene verwaltet wird.
--master-ipv4-cidr 172.16.0.32/28
gibt einen internen IP-Adressbereich für die Steuerungsebene an (optional für Autopilot). Diese Einstellung ist für diesen Cluster dauerhaft und muss innerhalb der VPC eindeutig sein. Die Verwendung von internen IP-Adressen außerhalb von RFC 1918 wird unterstützt.
API
Zum Erstellen eines Clusters ohne öffentlich erreichbare Steuerungsebene geben Sie in der Ressource privateClusterConfig
das Feld enablePrivateEndpoint: true
an.
Dies sind derzeit die einzigen IP-Adressen mit Zugriff auf die Steuerungsebene:
- Der primäre Bereich von
my-subnet-0
- Der für Pods verwendete sekundäre Bereich
Angenommen, Sie haben im primären Bereich von my-subnet-0
eine VM erstellt.
Dann können Sie für diese VM kubectl
so konfigurieren, dass die interne IP-Adresse der Steuerungsebene verwendet wird.
Wenn Sie außerhalb von my-subnet-0
auf die Steuerungsebene zugreifen möchten, gewähren Sie mindestens einem Adressbereich Zugriff auf den privaten Endpunkt.
Angenommen, Sie haben eine VM im Standardnetzwerk in derselben Region wie Ihr Cluster, aber nicht in my-subnet-0
.
Beispiele:
my-subnet-0
:10.0.0.0/22
- Sekundärer Bereich für Pods:
10.52.0.0/14
- VM-Adresse:
10.128.0.3
Sie können der VM mit folgendem Befehl Zugriff auf die Steuerungsebene gewähren:
gcloud container clusters update private-cluster-0 \
--enable-master-authorized-networks \
--master-authorized-networks 10.128.0.3/32
Privaten Cluster mit beschränktem Zugriff auf den öffentlichen Endpunkt erstellen
Beim Erstellen eines privaten Clusters mit dieser Konfiguration können Sie ein automatisch erzeugtes Subnetz oder ein benutzerdefiniertes Subnetz verwenden.
Automatisch erzeugtes Subnetz verwenden
In diesem Abschnitt erstellen Sie einen privaten Cluster mit dem Namen private-cluster-1
, in dem GKE automatisch ein Subnetz für Ihre Clusterknoten erzeugt.
Für das Subnetz ist der private Google-Zugriff aktiviert. GKE erstellt im Subnetz automatisch zwei sekundäre Bereiche: einen für Pods und einen für Dienste.
Sie können dazu die Google Cloud CLI oder die GKE API verwenden.
gcloud
Führen Sie für Autopilot-Cluster den folgenden Befehl aus:
gcloud container clusters create-auto private-cluster-1 \ --create-subnetwork name=my-subnet-1 \ --enable-master-authorized-networks \ --enable-private-nodes
Führen Sie für Standardcluster den folgenden Befehl aus:
gcloud container clusters create private-cluster-1 \ --create-subnetwork name=my-subnet-1 \ --enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.0/28
Dabei gilt:
--create-subnetwork name=my-subnet-1
bewirkt, dass GKE automatisch ein Subnetz mit dem Namenmy-subnet-1
erstellt.--enable-master-authorized-networks
gibt an, dass der Zugriff auf den öffentlichen Endpunkt auf von Ihnen autorisierte IP-Adressbereiche beschränkt ist.
--enable-ip-alias
sorgt dafür, dass der Cluster VPC-nativ ist (nicht für Autopilot erforderlich).
--enable-private-nodes
gibt an, dass die Knoten des Clusters keine externen IP-Adressen haben.
--master-ipv4-cidr 172.16.0.0/28
gibt einen internen IP-Adressbereich für die Steuerungsebene an (optional für Autopilot). Diese Einstellung ist für diesen Cluster dauerhaft und muss innerhalb der VPC eindeutig sein. Die Verwendung von internen IP-Adressen außerhalb von RFC 1918 wird unterstützt.
API
Geben Sie das Feld privateClusterConfig
in der API-Ressource Cluster
an:
{
"name": "private-cluster-1",
...
"ipAllocationPolicy": {
"createSubnetwork": true,
},
...
"privateClusterConfig" {
"enablePrivateNodes": boolean # Creates nodes with internal IP addresses only
"enablePrivateEndpoint": boolean # false creates a cluster control plane with a publicly-reachable endpoint
"masterIpv4CidrBlock": string # CIDR block for the cluster control plane
"privateEndpoint": string # Output only
"publicEndpoint": string # Output only
}
}
Dies sind an diesem Punkt die einzigen IP-Adressen mit Zugriff auf die Clustersteuerungsebene:
- Der primäre Bereich von
my-subnet-1
- Der für Pods verwendete sekundäre Bereich
Angenommen, Sie haben außerhalb Ihres VPC-Netzwerks mehrere Maschinen mit Adressen im Bereich 203.0.113.0/29
. Diesen Maschinen können Sie mit folgendem Befehl Zugriff auf den öffentlichen Endpunkt gewähren:
gcloud container clusters update private-cluster-1 \
--enable-master-authorized-networks \
--master-authorized-networks 203.0.113.0/29
Dies sind jetzt die einzigen IP-Adressen mit Zugriff auf die Steuerungsebene:
- Der primäre Bereich von
my-subnet-1
- Der für Pods verwendete sekundäre Bereich
- Von Ihnen autorisierte Adressbereiche, beispielsweise
203.0.113.0/29
.
Benutzerdefiniertes Subnetz verwenden
In diesem Abschnitt erstellen Sie die folgenden Ressourcen:
- Ein privater Cluster mit dem Namen
private-cluster-2
. - Ein Netzwerk mit dem Namen
my-net-2
. - Ein Subnetz mit dem Namen
my-subnet-2
mit dem primären Bereich192.168.0.0/20
für Ihre Clusterknoten. Das Subnetz hat die folgenden sekundären Adressbereiche:my-pods
für die Pod-IP-Adressen.my-services
für die Service-IP-Adressen.
Console
Netzwerk, Subnetz und sekundäre Bereiche erstellen
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf add_box VPC-Netzwerk erstellen.
Geben Sie für Name
my-net-2
ein.Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.
Geben Sie im Feld Neues Subnetz für Name den Wert
my-subnet-2
ein.Wählen Sie in der Liste Region die gewünschte Region aus.
Geben Sie
192.168.0.0/20
als IP-Adressbereich ein.Klicken Sie auf Sekundären IP-Bereich erstellen. Geben Sie
my-services
für Name des Subnetzbereichs und10.0.32.0/20
für Sekundärer IP-Bereich ein.Klicken Sie auf IP-Bereich hinzufügen. Geben Sie für Name des Subnetzbereichs
my-pods
und für Sekundärer IP-Bereich10.4.0.0/14
ein.Setzen Sie Privater Google-Zugriff auf An.
Klicken Sie auf Fertig.
Klicken Sie auf Erstellen.
Privaten Cluster erstellen
Erstellen Sie einen privaten Cluster, der Ihr Subnetz verwendet:
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie auf
Erstellen und dann im Bereich „Standard“ oder „Autopilot“ auf Konfigurieren.Geben Sie im Feld Name
private-cluster-2
ein.Klicken Sie im Navigationsbereich auf Netzwerk.
Wählen Sie das Optionsfeld Privater Cluster aus.
Wenn Sie eine Steuerungsebene erstellen möchten, auf die von autorisierten externen IP-Bereichen aus zugegriffen werden kann, behalten Sie das Häkchen im Kästchen Zugriffsebene der Steuerungsebene mit externer IP-Adresse bei.
(Optional für Autopilot) Legen Sie den IP-Bereich der Steuerungsebene auf
172.16.0.16/28
fest.Wählen Sie in der Liste Netzwerk die Option my-net-2 aus.
Wählen Sie in der Liste Knotensubnetz die Option my-subnet-2 aus.
Entfernen Sie das Häkchen aus dem Kästchen Sekundäre Bereiche automatisch erstellen.
Wählen Sie in der Liste Sekundärer Pod-CIDR-Bereich die Option my-pods aus.
Wählen Sie in der Liste Sekundärer CIDR-Dienstbereich die Option my-services aus.
Klicken Sie das Kästchen Autorisierte Steuerungsebenennetzwerke aktivieren an.
Klicken Sie auf Erstellen.
gcloud
Netzwerk erstellen
Erstellen Sie zuerst ein Netzwerk für den Cluster. Mit dem folgenden Befehl wird das Netzwerk my-net-2
erstellt:
gcloud compute networks create my-net-2 \
--subnet-mode custom
Subnetz und sekundäre Bereiche erstellen
Erstellen Sie dann das Subnetz my-subnet-2
im Netzwerk my-net-2
mit den sekundären Bereichen my-pods
für Pods und my-services
für Dienste:
gcloud compute networks subnets create my-subnet-2 \
--network my-net-2 \
--range 192.168.0.0/20 \
--secondary-range my-pods=10.4.0.0/14,my-services=10.0.32.0/20 \
--enable-private-ip-google-access
Privaten Cluster erstellen
Erstellen Sie nun den privaten Cluster private-cluster-2
mit dem Netzwerk, Subnetz und den sekundären Bereichen, die Sie erstellt haben.
Führen Sie für Autopilot-Cluster den folgenden Befehl aus:
gcloud container clusters create-auto private-cluster-2 \ --enable-master-authorized-networks \ --network my-net-2 \ --subnetwork my-subnet-2 \ --cluster-secondary-range-name my-pods \ --services-secondary-range-name my-services \ --enable-private-nodes
Führen Sie für Standardcluster den folgenden Befehl aus:
gcloud container clusters create private-cluster-2 \ --enable-master-authorized-networks \ --network my-net-2 \ --subnetwork my-subnet-2 \ --cluster-secondary-range-name my-pods \ --services-secondary-range-name my-services \ --enable-private-nodes \ --enable-ip-alias \ --master-ipv4-cidr 172.16.0.16/28 \ --no-enable-basic-auth \ --no-issue-client-certificate
Dies sind derzeit die einzigen IP-Adressen mit Zugriff auf die Steuerungsebene:
- Der primäre Bereich von
my-subnet-2
- Der sekundäre Bereich
my-pods
Angenommen, Sie haben eine Gruppe von Computern außerhalb von my-net-2
mit Adressen im Bereich 203.0.113.0/29
. Diesen Maschinen können Sie mit folgendem Befehl Zugriff auf den öffentlichen Endpunkt gewähren:
gcloud container clusters update private-cluster-2 \
--enable-master-authorized-networks \
--master-authorized-networks 203.0.113.0/29
Dies sind derzeit die einzigen IP-Adressen mit Zugriff auf die Steuerungsebene:
- Der primäre Bereich von
my-subnet-2
- Der sekundäre Bereich
my-pods
- Von Ihnen autorisierte Adressbereiche, beispielsweise
203.0.113.0/29
.
Mit Cloud Shell auf einen privaten Cluster zugreifen
Wenn Sie einen privaten Endpunkt aktiviert haben, können Sie mit Cloud Shell nicht auf Ihre GKE-Steuerungsebene zugreifen.
Wenn Sie mit Cloud Shell auf Ihren Cluster zugreifen möchten, müssen Sie der Liste der autorisierten Netzwerke des Clusters die externe IP-Adresse Ihrer Cloud Shell hinzufügen.
Vorgehensweise:
Verwenden Sie im Cloud Shell-Befehlszeilenfenster
dig
, um die externe IP-Adresse Ihrer Cloud Shell zu finden:dig +short myip.opendns.com @resolver1.opendns.com
Fügen Sie der Liste autorisierter Netzwerke Ihres Clusters die externe Adresse von Cloud Shell hinzu:
gcloud container clusters update CLUSTER_NAME \ --enable-master-authorized-networks \ --master-authorized-networks EXISTING_AUTH_NETS,SHELL_IP/32
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Der Name Ihres Clusters.EXISTING_AUTH_NETS
: Die IP-Adressen der vorhandenen Liste autorisierter Netzwerke. Sie finden Ihre autorisierten Netzwerke in der Console oder durch Ausführen des folgenden Befehls:gcloud container clusters describe CLUSTER_NAME --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"
SHELL_IP
ist die externe IP-Adresse Ihrer Cloud Shell.
Rufen Sie die Anmeldedaten ab, damit Sie
kubectl
für den Zugriff auf den Cluster verwenden können:gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --internal-ip
Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID.Verwenden Sie in Cloud Shell
kubectl
, um auf Ihren Cluster zuzugreifen:kubectl get nodes
Die Ausgabe sieht in etwa so aus:
NAME STATUS ROLES AGE VERSION gke-cluster-1-default-pool-7d914212-18jv Ready <none> 104m v1.21.5-gke.1302 gke-cluster-1-default-pool-7d914212-3d9p Ready <none> 104m v1.21.5-gke.1302 gke-cluster-1-default-pool-7d914212-wgqf Ready <none> 104m v1.21.5-gke.1302
Privaten Cluster mit unbeschränktem Zugriff auf den öffentlichen Endpunkt erstellen
In diesem Abschnitt erstellen Sie einen privaten Cluster, in dem jede IP-Adresse auf die Steuerungsebene zugreifen kann.
Console
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie auf
Erstellen und dann im Bereich „Standard“ oder „Autopilot“ auf Konfigurieren.Geben Sie im Feld Name
private-cluster-3
ein.Klicken Sie im Navigationsbereich auf Netzwerk.
Wählen Sie die Option Privater Cluster aus.
Behalten Sie das Häkchen im Kästchen Zugriffsebene der Steuerungsebene mit externer IP-Adresse bei.
(Optional für Autopilot) Legen Sie den IP-Bereich der Steuerungsebene auf
172.16.0.32/28
fest.Belassen Sie Netzwerk und Knotensubnetz auf
default
. GKE generiert dadurch ein Subnetz für den Cluster.Entfernen Sie das Häkchen aus dem Kästchen Autorisierte Steuerungsebenennetzwerke aktivieren.
Klicken Sie auf Erstellen.
gcloud
Führen Sie für Autopilot-Cluster den folgenden Befehl aus:
gcloud container clusters create-auto private-cluster-3 \ --create-subnetwork name=my-subnet-3 \ --no-enable-master-authorized-networks \ --enable-private-nodes
Führen Sie für Standardcluster den folgenden Befehl aus:
gcloud container clusters create private-cluster-3 \ --create-subnetwork name=my-subnet-3 \ --no-enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.32/28
Dabei gilt:
--create-subnetwork name=my-subnet-3
bewirkt, dass GKE automatisch ein Subnetz mit dem Namenmy-subnet-3
erstellt.--no-enable-master-authorized-networks
deaktiviert autorisierte Netzwerke für den Cluster.
--enable-ip-alias
sorgt dafür, dass der Cluster VPC-nativ ist (nicht für Autopilot erforderlich).
--enable-private-nodes
gibt an, dass die Knoten des Clusters keine externen IP-Adressen haben.
--master-ipv4-cidr 172.16.0.32/28
gibt einen internen IP-Adressbereich für die Steuerungsebene an (optional für Autopilot). Diese Einstellung ist für diesen Cluster dauerhaft und muss innerhalb der VPC eindeutig sein. Die Verwendung von internen IP-Adressen außerhalb von RFC 1918 wird unterstützt.
Firewallregeln für bestimmte Anwendungsfälle hinzufügen
In diesem Abschnitt wird erläutert, wie Sie einem Cluster eine Firewallregel hinzufügen. Die Steuerungsebene Ihres Clusters wird von Firewallregeln standardmäßig so beschränkt, dass nur TCP-Verbindungen zu den Knoten und Pods auf den Ports 443
(HTTPS) und 10250
(Kubelet) initiiert werden.
Bei einigen Kubernetes-Funktionen müssen eventuell Firewallregeln ergänzt werden, um den Zugriff auf zusätzlichen Ports zuzulassen. Erstellen Sie keine Firewallregeln oder hierarchischen Firewallregeln, die eine höhere Priorität als die automatisch erstellten Firewallregeln haben.
Zu den Kubernetes-Features, für die weitere Firewallregeln erforderlich sind, gehören:
- Zulassungs-Webhooks
- Aggregierte API-Server
- Webhook-Umwandlung
- Dynamische Audit-Konfiguration
- Im Allgemeinen sind für jede API mit einem Feld „ServiceReference“ zusätzliche Firewallregeln erforderlich.
Durch Hinzufügen einer Firewallregel wird Traffic von der Clustersteuerungsebene zu Folgendem ermöglicht:
- Zum angegebenen Port jedes Knotens (hostPort)
- Zum angegebenen Port jedes Pods, der auf diesen Knoten ausgeführt wird
- Zum angegebenen Port jedes Dienstes, der auf diesen Knoten ausgeführt wird
Informationen zu Firewallregeln finden Sie in der Dokumentation zu Cloud Load Balancing unter Firewallregeln.
Wenn Sie eine Firewallregel in einem Cluster hinzufügen möchten, müssen Sie den CIDR-Block der Clustersteuerungsebene und das verwendete Ziel erfassen. Nach dem Erfassen können Sie die Regel erstellen.
CIDR-Block der Steuerungsebene ansehen
Sie benötigen den CIDR-Block der Clustersteuerungsebene, um eine Firewallregel hinzuzufügen.
Console
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie in der Clusterliste auf den Clusternamen.
Notieren Sie sich vom Tab Details unter Netzwerk den Wert im Feld Adressbereich der Steuerungsebene.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud container clusters describe CLUSTER_NAME
Ersetzen Sie CLUSTER_NAME
durch den Namen Ihres Clusters.
Notieren Sie sich in der Befehlsausgabe den Wert im Feld masterIpv4CidrBlock.
Vorhandene Firewallregeln ansehen
Das von den vorhandenen Firewallregeln des Clusters verwendete Ziel muss angegeben werden. In diesem Fall sind es Zielknoten.
Console
Rufen Sie in der Google Cloud -Konsole die Seite Firewallrichtlinien auf.
Geben Sie unter VPC-Firewallregeln bei Tabelle filtern den Wert
gke-CLUSTER_NAME
ein.
Notieren Sie aus den Ergebnissen den Wert im Feld Ziele.
gcloud
Führen Sie den folgenden Befehl aus:
gcloud compute firewall-rules list \
--filter 'name~^gke-CLUSTER_NAME' \
--format 'table(
name,
network,
direction,
sourceRanges.list():label=SRC_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
targetTags.list():label=TARGET_TAGS
)'
Notieren Sie sich aus der Befehlsausgabe den Wert im Feld Ziele.
Wenn Sie Firewallregeln für eine freigegebene VPC aufrufen möchten, fügen Sie dem Befehl das Flag --project HOST_PROJECT_ID
hinzu.
Firewallregel hinzufügen
Console
Rufen Sie in der Google Cloud -Konsole die Seite Firewallrichtlinien auf.
Klicken Sie auf add_box Firewallregel erstellen.
Geben Sie für Name einen Namen für die Firewallregel ein.
Wählen Sie in der Liste Netzwerk das entsprechende Netzwerk aus.
Klicken Sie unter Trafficrichtung auf Eingehend.
Klicken Sie unter Aktion bei Übereinstimmung auf Zulassen.
Wählen Sie in der Liste Ziele Angegebene Ziel-Tags aus.
Geben Sie unter Zieltags den zuvor notierten Zielwert ein.
Wählen Sie in der Liste Quellfilter die Option IPv4-Bereiche aus.
Geben Sie bei Quell-IPv4-Bereiche den CIDR-Block der Clustersteuerungsebene ein.
Klicken Sie unter Protokolle und Ports auf Angegebene Protokolle und Ports, wählen Sie das Kästchen für das entsprechende Protokoll aus (TCP oder udp) und geben Sie die Portnummer in das Protokollfeld ein.
Klicken Sie auf Erstellen.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--action ALLOW \
--direction INGRESS \
--source-ranges CONTROL_PLANE_RANGE \
--rules PROTOCOL:PORT \
--target-tags TARGET
Ersetzen Sie Folgendes:
FIREWALL_RULE_NAME
ist der von Ihnen ausgewählte Name für die Firewallregel.CONTROL_PLANE_RANGE
ist der IP-Adressbereich der Clustersteuerungsebene (masterIpv4CidrBlock
), den Sie zuvor erfasst haben.PROTOCOL:PORT
ist der gewünschte Port und das zugehörige Protokoll,tcp
oderudp
.TARGET
ist der vorher notierte Zielwert (Targets
).
Wenn Sie eine Firewallregel für eine freigegebene VPC hinzufügen möchten, fügen Sie dem Befehl die folgenden Flags hinzu:
--project HOST_PROJECT_ID
--network NETWORK_ID
Externe IP-Adressen für Knoten ausschließen
Kontrollieren Sie nach dem Erstellen eines privaten Clusters, dass die Knoten des Clusters keine externen IP-Adressen haben.
Console
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie in der Liste der Cluster auf den Clusternamen.
Klicken Sie bei Autopilot-Clustern im Abschnitt Clustergrundlagen auf das Feld Externer Endpunkt. Der Wert ist Deaktiviert.
Führen Sie für Standardcluster die folgenden Schritte aus:
- Klicken Sie auf der Seite Cluster auf den Tab Knoten.
- Klicken Sie unter Knotenpools auf den Namen des Knotenpools.
- Klicken Sie auf der Seite Knotenpooldetails unter Instanzgruppen auf den Namen Ihrer Instanzgruppe. Beispiel: gke-private-cluster-0-default-pool-5c5add1f-grp.
- Bestätigen Sie in der Liste der Instanzen, dass Ihre Instanzen keine externen IP-Adressen haben.
gcloud
Führen Sie den folgenden Befehl aus:
kubectl get nodes --output wide
Die Spalte EXTERNAL-IP
der Ausgabe ist leer:
STATUS ... VERSION EXTERNAL-IP OS-IMAGE ...
Ready v.8.7-gke.1 Container-Optimized OS
Ready v1.8.7-gke.1 Container-Optimized OS
Ready v1.8.7-gke.1 Container-Optimized OS
Wiederverwendung von VPC-Peering im Cluster prüfen
Für private Cluster, die nach dem 15. Januar 2020 erstellt werden, können VPC-Netzwerk-Peering-Verbindungen wiederverwendet werden.
Mit der gcloud CLI oder der Google Cloud -Console können Sie prüfen, ob Ihr privater Cluster VPC-Netzwerk-Peering-Verbindungen wiederverwendet.
Console
Prüfen Sie die Zeile für das VPC-Peering auf der Seite Clusterdetails. Wenn Ihr Cluster VPC-Peering-Verbindungen wiederverwendet, beginnt die Ausgabe mit gke-n
.
Beispiel: gke-n34a117b968dee3b2221-93c6-40af-peer
gcloud
gcloud container clusters describe CLUSTER_NAME \
--format="value(privateClusterConfig.peeringName)"
Wenn Ihr Cluster VPC-Peering-Verbindungen wiederverwendet, beginnt die Ausgabe mit gke-n
. Beispiel: gke-n34a117b968dee3b2221-93c6-40af-peer
.
Erweiterte Clusterkonfigurationen
In diesem Abschnitt werden einige erweiterte Konfigurationen beschrieben, die Sie beim Erstellen eines privaten Clusters verwenden können.
Privaten Knoten ausgehenden Internetzugriff gewähren
Wenn Sie privaten Knoten ausgehenden Internetzugriff gewähren möchten, z. B. um Images aus einer externen Registry abzurufen, verwenden Sie Cloud NAT, um einen Cloud Router zu erstellen und zu konfigurieren. Mit Cloud NAT können private Knoten ausgehende Verbindungen über das Internet herstellen, um Pakete zu senden und zu empfangen.
Der Cloud Router ermöglicht allen Knoten in der Region, Cloud NAT für alle primären und Alias-IP-Bereiche zu verwenden. Außerdem werden die externen IP-Adressen für das NAT-Gateway automatisch zugeordnet.
Eine Anleitung zum Erstellen und Konfigurieren eines Cloud Routers finden Sie in der Cloud NAT-Dokumentation unter Cloud NAT-Konfiguration mit Cloud Router erstellen.
Privaten Cluster in einem freigegebenen VPC-Netzwerk erstellen
Informationen zum Erstellen eines privaten Clusters in einem freigegebenen VPC-Netzwerk finden Sie unter Private Cluster in einer freigegebenen VPC erstellen.
Windows Server-Containeranwendung bereitstellen
Informationen zum Bereitstellen einer Windows Server-Containeranwendung in einem Cluster mit privaten Knoten finden Sie in der Dokumentation zu Windows-Knotenpools.
Global auf privaten Endpunkt der Steuerungsebene zugreifen
Der private Endpunkt der Steuerungsebene wird von einem internen Passthrough-Network Load Balancer im VPC-Netzwerk der Steuerungsebene implementiert. Interne oder über Cloud VPN-Tunnel und Cloud Interconnect-VLAN-Anhänge verbundene Clients können auf interne Passthrough-Network Load Balancer zugreifen.
Standardmäßig müssen sich diese Clients in derselben Region wie der Load-Balancer befinden.
Wenn Sie den globalen Zugriff auf die Steuerungsebene aktivieren, ist der interne Passthrough-Network Load Balancer global zugänglich. Client-VMs und lokale Systeme können gemäß der Konfiguration der autorisierten Netzwerke von einer beliebigen Region aus eine Verbindung zum privaten Endpunkt der Steuerungsebene herstellen.
Weitere Informationen zu den internen Passthrough-Network Load Balancern und dem globalen Zugriff finden Sie unter Interne Load Balancer und verbundene Netzwerke.
Globalen Zugriff auf privaten Endpunkt der Steuerungsebene aktivieren
Standardmäßig ist der globale Zugriff nicht für den privaten Endpunkt der Steuerungsebene aktiviert, wenn Sie einen privaten Cluster erstellen. Verwenden Sie die folgenden Tools basierend auf Ihrem Clustermodus, um den globalen Zugriff auf die Steuerungsebene zu aktivieren:
- Für Standardcluster können Sie
Google Cloud CLI
oder die Google Cloud Console verwenden.
- Für Autopilot-Cluster können Sie die Terraform-Ressource
google_container_cluster
verwenden.
Console
Führen Sie die folgenden Schritte aus, um einen neuen privaten Cluster mit aktiviertem globalem Zugriff auf die Steuerungsebene zu erstellen:
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie auf
Erstellen und dann im Bereich „Standard“ oder „Autopilot“ auf Konfigurieren.Geben Sie einen Namen ein.
Klicken Sie im Navigationsbereich auf Netzwerk.
Wählen Sie Privater Cluster aus.
Klicken Sie das Kästchen Globalen Zugriff auf Steuerungsebene aktivieren an.
Konfigurieren Sie gegebenenfalls andere Felder.
Klicken Sie auf Erstellen.
Führen Sie die folgenden Schritte aus, um den globalen Zugriff auf die Steuerungsebene für einen vorhandenen privaten Cluster zu aktivieren:
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Klicken Sie neben dem Cluster, den Sie bearbeiten möchten, auf more_vert Aktionen und dann auf edit Bearbeiten.
Klicken Sie unter Netzwerk neben Globaler Zugriff auf Steuerungsebene auf edit Bearbeiten.
Klicken Sie im Dialogfeld Globalen Zugriff auf Steuerungsebene bearbeiten das Kästchen Globalen Zugriff auf Steuerungsebene aktivieren an.
Klicken Sie auf Änderungen speichern.
gcloud
Fügen Sie das Flag --enable-master-global-access
hinzu, um einen privaten Cluster mit aktiviertem globalem Zugriff auf den privaten Endpunkt der Steuerungsebene zu erstellen:
gcloud container clusters create CLUSTER_NAME \
--enable-private-nodes \
--enable-master-global-access
Sie können den globalen Zugriff auf den privaten Endpunkt der Steuerungsebene auch für einen vorhandenen privaten Cluster aktivieren:
gcloud container clusters update CLUSTER_NAME \
--enable-master-global-access
Globalen Zugriff auf privaten Endpunkt der Steuerungsebene prüfen
Sie können prüfen, ob der globale Zugriff auf den privaten Endpunkt der Steuerungsebene aktiviert ist. Führen Sie dafür den folgenden Befehl aus und sehen Sie sich die Ausgabe an.
gcloud container clusters describe CLUSTER_NAME
Die Ausgabe enthält den Abschnitt privateClusterConfig
, in dem Sie den Status von masterGlobalAccessConfig
sehen können.
privateClusterConfig:
enablePrivateNodes: true
masterIpv4CidrBlock: 172.16.1.0/28
peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
privateEndpoint: 172.16.1.2
publicEndpoint: 34.68.128.12
masterGlobalAccessConfig:
enabled: true
Von anderen Netzwerken auf den privaten Endpunkt der Steuerungsebene zugreifen
Wenn Sie einen privaten GKE-Cluster erstellen und den öffentlichen Endpunkt der Steuerungsebene deaktivieren, müssen Sie den Cluster mit Tools wie kubectl
verwalten. Verwenden Sie dazu den privaten Endpunkt der Steuerungsebene. Sie können über ein anderes Netzwerk auf den privaten Endpunkt der Steuerungsebene des Clusters zugreifen. Dazu gehören:
- Ein lokales Netzwerk, das über Cloud VPN-Tunnel oder Cloud Interconnect-VLAN-Anhänge mit dem VPC-Netzwerk des Clusters verbunden ist
- Ein anderes VPC-Netzwerk, das über Cloud VPN-Tunnel mit dem VPC-Netzwerk des Clusters verbunden ist
Das folgende Diagramm zeigt einen Routingpfad zwischen einem lokalen Netzwerk und den Knoten der GKE-Steuerungsebene:
Die folgenden Anforderungen müssen erfüllt sein, damit Systeme in einem anderen Netzwerk eine Verbindung zum privaten Endpunkt der Steuerungsebene eines Clusters herstellen können:
Identifizieren und notieren Sie relevante Netzwerkinformationen für den Cluster und den privaten Endpunkt seiner Steuerungsebene.
gcloud container clusters describe CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --format="yaml(network, privateClusterConfig)"
Ersetzen Sie Folgendes:
CLUSTER_NAME
: der Name des Clusters.COMPUTE_LOCATION
: der Compute Engine-Standort des Clusters.
Identifizieren Sie in der Ausgabe des Befehls die folgenden Informationen und notieren Sie sie zur Verwendung in den nächsten Schritten:
network
: der Name oder URI für das VPC-Netzwerk des Clusters.privateEndpoint
: die IPv4-Adresse des privaten Endpunkts der Steuerungsebene oder der einschließende IPv4-CIDR-Bereich (masterIpv4CidrBlock
).peeringName
: der Name der VPC-Netzwerk-Peering-Verbindung, die zum Herstellen einer Verbindung des VPC-Netzwerks des Clusters zum VPC-Netzwerk der Steuerungsebene verwendet wird.
Die Ausgabe sieht in etwa so aus:
network: cluster-network privateClusterConfig: enablePrivateNodes: true masterGlobalAccessConfig: enabled: true masterIpv4CidrBlock: 172.16.1.0/28 peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer privateEndpoint: 172.16.1.2 publicEndpoint: 34.68.128.12
Erwägen Sie, den globalen Zugriff auf den privaten Endpunkt der Steuerungsebene zu aktivieren, damit Pakete aus jeder Region im VPC-Netzwerk des Clusters eingegeben werden können. Wenn Sie den globalen Zugriff auf den privaten Endpunkt der Steuerungsebene aktivieren, können Sie eine Verbindung zum privaten Endpunkt über Cloud VPN-Tunnel oder Cloud Interconnect-VLAN-Anhänge herstellen, die sich in einer beliebigen Region befinden, nicht nur in der Region des Clusters.
Erstellen Sie eine Route für die IP-Adresse des
privateEndpoint
oder den IP-Adressbereich desmasterIpv4CidrBlock
im anderen Netzwerk. Da die IP-Adresse des privaten Endpunkts der Steuerungsebene immer im IPv4-AdressbereichmasterIpv4CidrBlock
liegt, wird durch Erstellen einer Route für die IP-AdresseprivateEndpoint
oder den einschließenden Bereich ein Pfad für Pakete aus einem anderen Netzwerk zum privaten Endpunkt der Steuerungsebene bereitgestellt, wenn Folgendes zutrifft:Das andere Netzwerk stellt eine Verbindung zum VPC-Netzwerk des Clusters über Cloud Interconnect-VLAN-Anhänge oder Cloud VPN-Tunnel her, die dynamische (BGP-)Routen verwenden: Verwenden Sie eine benutzerdefinierte beworbene Cloud Router-Route. Weitere Informationen finden Sie in der Cloud Router-Dokumentation unter Benutzerdefinierte Adressbereiche bewerben.
Das andere Netzwerk stellt über klassische VPN-Tunnel, die keine dynamischen Routen verwenden, eine Verbindung zum VPC-Netzwerk des Clusters her: Sie müssen eine statische Route im anderen Netzwerk konfigurieren.
Konfigurieren Sie das VPC-Netzwerk des Clusters so, dass die benutzerdefinierten Routen in der Peering-Beziehung in das VPC-Netzwerk der Steuerungsebene exportiert werden. Google Cloud konfiguriert das VPC-Netzwerk der Steuerungsebene immer so, dass benutzerdefinierte Routen aus dem VPC-Netzwerk des Clusters importiert werden. In diesem Schritt wird ein Pfad für Pakete vom privaten Endpunkt der Steuerungsebene zurück zum anderen Netzwerk bereitgestellt.
Verwenden Sie den folgenden Befehl, um den Export benutzerdefinierter Routen aus dem VPC-Netzwerk des Clusters zu aktivieren:
gcloud compute networks peerings update PEERING_NAME \ --network=CLUSTER_VPC_NETWORK \ --export-custom-routes
Ersetzen Sie Folgendes:
PEERING_NAME
: der Name der Peering-Verbindung, über die das VPC-Netzwerk des Clusters mit dem VPC-Netzwerk der Steuerungsebene verbunden wird.CLUSTER_VPC_NETWORK
: der Name oder URI für das VPC-Netzwerk des Clusters.
Wenn der Export benutzerdefinierter Routen für die VPC aktiviert ist, kann das Erstellen von Routen, die sich mit Google Cloud IP-Bereichen überschneiden, den Cluster beeinträchtigen.
Weitere Informationen zum Aktualisieren des Routenaustauschs für vorhandene VPC-Netzwerk-Peering-Verbindungen finden Sie unter Peering-Verbindung aktualisieren.
Benutzerdefinierte Routen im VPC-Netzwerk des Clusters enthalten Routen, deren Ziele IP-Adressbereiche in anderen Netzwerken sind, z. B. ein lokales Netzwerk. Wie Sie dafür sorgen, dass diese Routen als benutzerdefinierte Peering-Routen im VPC-Netzwerk der Steuerungsebene wirksam werden, erfahren Sie unter Unterstützte Ziele aus dem anderen Netzwerk.
Unterstützte Ziele aus dem anderen Netzwerk
Die Adressbereiche, die das andere Netzwerk an die Cloud Router im VPC-Netzwerk des Clusters sendet, müssen die folgenden Bedingungen erfüllen:
Während die VPC Ihres Clusters eine Standardroute (
0.0.0.0/0
) akzeptiert, lehnt das VPC-Netzwerk der Steuerungsebene immer Standardrouten ab, da es bereits eine lokale Standardroute hat. Wenn das andere Netzwerk eine Standardroute an Ihr VPC-Netzwerk sendet, muss das andere Netzwerk auch die spezifischen Ziele von Systemen senden, die eine Verbindung zum privaten Endpunkt der Steuerungsebene herstellen müssen. Weitere Informationen finden Sie unter Routingreihenfolge.Wenn das VPC-Netzwerk der Steuerungsebene Routen akzeptiert, die eine Standardroute effektiv ersetzen, wird die Verbindung zuGoogle Cloud APIs und ‑Diensten getrennt und die Steuerungsebene des Clusters wird dadurch unterbrochen. Ein repräsentatives Beispiel: Das andere Netzwerk darf keine Routen mit den Zielen
0.0.0.0/1
und128.0.0.0/1
anbieten. Eine Alternative finden Sie im vorherigen Punkt.
Überwachen Sie die Cloud Router-Limits, insbesondere die maximale Anzahl eindeutiger Ziele für erkannte Routen.
Private Cluster mit VPC Service Controls schützen
Mit VPC Service Controls können Sie Ihre privaten GKE-Cluster noch besser schützen.
VPC Service Controls bietet zusätzliche Sicherheit für private GKE-Cluster, um das Risiko einer Datenexfiltration zu verringern. Mithilfe von VPC Service Controls können Sie Projekte in Perimeterbereiche einfügen, die Ressourcen und Services vor Anfragen schützen, die ihren Ursprung außerhalb des Perimeters haben.
Weitere Informationen zu Dienstperimetern finden Sie unter Informationen zu Dienstperimetern und deren Konfiguration.
Wenn Sie Artifact Registry mit Ihrem privaten GKE-Cluster in einem VPC Service Controls-Dienstperimeter verwenden, müssen Sie das Routing zur eingeschränkten virtuellen IP-Adresse konfigurieren, um die Exfiltration von Daten zu verhindern.
Bereinigen
Wenn Sie mit den Aufgaben auf dieser Seite fertig sind, entfernen Sie die Ressourcen anhand der folgenden Schritte, sodass keine unerwünschten Kosten für Ihr Konto entstehen:
Cluster löschen
Console
Rufen Sie in der Google Cloud -Konsole die Seite Google Kubernetes Engine auf.
Wählen Sie jeden Cluster aus.
Klicken Sie auf delete Löschen.
gcloud
gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3
Netzwerk löschen
Console
Rufen Sie in der Google Cloud -Konsole die Seite VPC-Netzwerke auf.
Klicken Sie in der Liste der Netzwerke auf
my-net-0
.Klicken Sie auf der Seite VPC-Netzwerkdetails auf delete VPC-Netzwerk löschen.
Klicken Sie im Dialogfeld Netzwerk löschen auf Löschen.
gcloud
gcloud compute networks delete my-net-0
Nächste Schritte
- Weitere Informationen zu erweiterten Konfigurationen mit privaten Clustern
- VPC-native Cluster erstellen
- Weitere Informationen zum VPC-Netzwerk-Peering.