Questo documento descrive i requisiti di rete per l'installazione e l'utilizzo di GKE su Bare Metal.
Requisiti di rete esterna
GKE su Bare Metal richiede una connessione a internet per scopi operativi. GKE su Bare Metal recupera i componenti del cluster da Container Registry e il cluster viene registrato con Connect.
Puoi connetterti a Google utilizzando la rete internet pubblica tramite HTTPS, una rete privata virtuale (VPN) o una connessione Dedicated Interconnect.
Se le macchine che utilizzi per la workstation di amministrazione e i nodi del cluster utilizzano un server proxy per accedere a internet, il server proxy deve consentire alcune connessioni specifiche. Per maggiori dettagli, consulta la sezione dei prerequisiti di Eseguire l'installazione tramite proxy.
Requisiti di rete interni
GKE su Bare Metal può funzionare con la connettività di livello 2 o livello 3 tra i nodi del cluster. I nodi del bilanciatore del carico possono essere i nodi del piano di controllo o un set dedicato di nodi. Per saperne di più, consulta Scelta e configurazione dei bilanciatori del carico.
Quando utilizzi il bilanciamento del carico di livello 2 in bundle con MetalLB (spec.loadBalancer.mode: bundled
e spec.loadBalancer.type: layer2
), i nodi del bilanciatore del carico richiedono l'adiacenza di livello 2. Il requisito di adiacenza di livello 2 si applica a prescindere dall'esecuzione del bilanciatore del carico sui nodi del piano di controllo o in un set dedicato di nodi di bilanciamento del carico.
Il bilanciamento del carico in bundle con BGP supporta il protocollo di livello 3, pertanto non è richiesta una rigorosa adiacenza di livello 2.
I requisiti per le macchine del bilanciatore del carico sono i seguenti:
- Per il bilanciamento del carico di livello 2 in bundle, tutti i bilanciatori del carico di un determinato cluster si trovano nello stesso dominio di livello 2. Anche i nodi del piano di controllo devono trovarsi nello stesso dominio di livello 2.
- Per il bilanciamento del carico di livello 2 in bundle, tutti gli indirizzi IP virtuali (VIP) devono trovarsi nella subnet della macchina del bilanciatore del carico ed essere instradabili al gateway della subnet.
- Gli utenti sono responsabili della concessione del traffico del bilanciatore del carico in entrata.
Networking di pod
GKE su Bare Metal 1.7.0 e versioni successive consente di configurare fino a 250 pod per nodo. Kubernetes assegna un blocco CIDR (Classless Inter-Domain Routing) a ciascun nodo in modo che ogni pod possa avere un indirizzo IP univoco. Le dimensioni del blocco CIDR corrispondono al numero massimo di pod per nodo. La seguente tabella elenca le dimensioni del blocco CIDR che Kubernetes assegna a ciascun nodo in base al numero massimo di pod configurati per nodo:
Numero massimo di pod per nodo | Blocco CIDR per nodo | Numero di indirizzi IP |
---|---|---|
32 | /26 | 64 |
33-64 | /25 | 128 |
65-128 | /24 | 256 |
129 - 250 | /23 | 512 |
L'esecuzione di 250 pod per nodo richiede che Kubernetes prenoti un blocco CIDR /23
per ciascun nodo. Supponendo che il cluster utilizzi il valore predefinito di /16
per il campo clusterNetwork.pods.cidrBlocks
, il cluster ha un limite di (2(23-16))=128 nodi. Se intendi aumentare il
cluster oltre questo limite, puoi aumentare il valore di
clusterNetwork.pods.cidrBlocks
o diminuire il valore di
nodeConfig.podDensity.maxPodsPerNode
.
Deployment di cluster utente singolo con disponibilità elevata
Il seguente diagramma illustra una serie di concetti chiave di networking per GKE su Bare Metal in un'unica configurazione di rete possibile.
Per soddisfare i requisiti di rete, prendi in considerazione le seguenti informazioni:
- I nodi del piano di controllo eseguono i bilanciatori del carico e hanno tutti la connettività di livello 2, mentre altre connessioni, inclusi i nodi worker, richiedono solo la connettività di livello 3.
- I file di configurazione definiscono gli indirizzi IP per i pool di nodi worker.
I file di configurazione definiscono anche i VIP per i seguenti scopi:
- Servizi
- In entrata
- Accesso al piano di controllo tramite l'API Kubernetes
- È necessaria una connessione a Google Cloud.
Utilizzo porta
Questa sezione mostra come vengono utilizzate le porte UDP e TCP sui nodi di cluster e bilanciatore del carico.
Nodi del piano di controllo
Protocollo | Direzione | Intervallo porte | Finalità | Utilizzata da |
---|---|---|---|---|
UDP | In entrata | 6081 | Incapsulamento GENEVE | Indipendente |
TCP | In entrata | 22 | Provisioning e aggiornamenti dei nodi del cluster di amministrazione | Workstation di amministrazione |
TCP | In entrata | 6444 | Server API Kubernetes | Tutti |
TCP | In entrata | 2379 - 2380 | API client server etcd | kube-apiserver e etcd |
TCP | In entrata | 10250 | kubelet API | Auto e piano di controllo |
TCP | In entrata | 10251 | kube-scheduler | Indipendente |
TCP | In entrata | 10252 | kube-controller-manager | Indipendente |
TCP | In entrata | 10256 | Controllo di integrità del nodo | Tutti |
TCP | Entrambe | 4240 | Controllo di integrità CNI | Tutti |
Nodi worker
Protocollo | Direzione | Intervallo porte | Finalità | Utilizzata da |
---|---|---|---|---|
TCP | In entrata | 22 | Provisioning e aggiornamenti dei nodi dei cluster utente | Nodi del cluster di amministrazione |
UDP | In entrata | 6081 | Incapsulamento GENEVE | Indipendente |
TCP | In entrata | 10250 | kubelet API | Auto e piano di controllo |
TCP | In entrata | 10256 | Controllo di integrità del nodo | Tutti |
TCP | In entrata | 30.000 - 32.767 | Servizi NodePort | Indipendente |
TCP | Entrambe | 4240 | Controllo di integrità CNI | Tutti |
Nodi del bilanciatore del carico
Protocollo | Direzione | Intervallo porte | Finalità | Utilizzata da |
---|---|---|---|---|
TCP | In entrata | 22 | Provisioning e aggiornamenti dei nodi dei cluster utente | Nodi del cluster di amministrazione |
UDP | In entrata | 6081 | Incapsulamento GENEVE | Indipendente |
TCP | In entrata | 443* | Gestione dei cluster | Tutti |
TCP | Entrambe | 4240 | Controllo di integrità CNI | Tutti |
TCP | In entrata | 7946 | Controllo di integrità dell'LB Metal | nodi del bilanciatore del carico |
UDP | In entrata | 7946 | Controllo di integrità dell'LB Metal | nodi del bilanciatore del carico |
TCP | In entrata | 10256 | Controllo di integrità del nodo | Tutti |
* Questa porta può essere configurata nella configurazione del cluster utilizzando il campo controlPlaneLBPort
.
Requisiti per le porte multi-cluster
In una configurazione multi-cluster, i cluster aggiunti devono includere le seguenti porte per comunicare con il cluster di amministrazione.
Protocollo | Direzione | Intervallo porte | Finalità | Utilizzata da |
---|---|---|---|---|
TCP | In entrata | 22 | Provisioning e aggiornamenti dei nodi del cluster | Tutti i nodi |
TCP | In entrata | 443* | Server API Kubernetes per un cluster aggiunto | Nodi del piano di controllo e del bilanciatore del carico |
* Questa porta può essere configurata nella configurazione del cluster utilizzando il campo controlPlaneLBPort
.
Configura le porte con firewall
Non è necessario disabilitare il firewall per eseguire GKE su Bare Metal su Red
Hat Enterprise Linux (RHEL) o CentOS. Per utilizzare l'opzione firewall, devi aprire le porte UDP e TCP utilizzate dai nodi del piano di controllo, del worker e del bilanciatore del carico, come descritto nella sezione Utilizzo delle porte in questa pagina. Le configurazioni di esempio seguenti mostrano come aprire le porte con firewall-cmd
, l'utilità a riga di comando firewalld. Dovresti eseguire i comandi come utente root.
Configurazione di esempio del nodo del piano di controllo
Il seguente blocco di comandi mostra un esempio di come aprire le porte necessarie sui server che eseguono i nodi del piano di controllo:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250-10252/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
Sostituisci PODS_CIDR
con i blocchi CIDR riservati ai
pod configurati nel campo clusterNetwork.pods.cidrBlocks
. Il blocco CIDR predefinito per i pod è 192.168.0.0/16
.
Configurazione di esempio del nodo worker
Il seguente blocco di comandi mostra un esempio di come aprire le porte necessarie sui server che eseguono i nodi worker:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
Sostituisci PODS_CIDR
con i blocchi CIDR riservati ai
pod configurati nel campo clusterNetwork.pods.cidrBlocks
. Il blocco CIDR predefinito per i pod è 192.168.0.0/16
.
Configurazione di esempio del nodo del bilanciatore del carico
Il seguente blocco di comandi mostra un esempio di come aprire le porte necessarie sui server che eseguono i nodi del bilanciatore del carico:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
Sostituisci PODS_CIDR
con i blocchi CIDR riservati ai
pod configurati nel campo clusterNetwork.pods.cidrBlocks
. Il blocco CIDR predefinito per i pod è 192.168.0.0/16
.
Conferma la configurazione delle porte
Per verificare la configurazione delle porte, segui questi passaggi sui nodi del piano di controllo, dei worker e del bilanciatore del carico:
Esegui il seguente comando Network Mapper per vedere quali porte sono aperte:
nmap localhost
Esegui questi comandi per recuperare le impostazioni di configurazione protette da firewall:
firewall-cmd --zone=public --list-all-policies firewall-cmd --zone=public --list-ports firewall-cmd --zone=public --list-services firewall-cmd --zone=k8s-pods --list-all-policies firewall-cmd --zone=k8s-pods --list-ports firewall-cmd --zone=k8s-pods --list-services
Se necessario, esegui nuovamente i comandi delle sezioni precedenti per configurare correttamente i nodi. Potresti dover eseguire i comandi come utente root.