Este documento descreve os requisitos de rede para instalar e operar o Google Distributed Cloud (apenas software) em bare metal.
Esta página destina-se a administradores e arquitetos, operadores e especialistas em redes que gerem o ciclo de vida da infraestrutura tecnológica subjacente e concebem e arquitetam a rede para a respetiva organização. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulte Funções e tarefas comuns do utilizador do GKE.
Requisitos de rede externos
O Google Distributed Cloud requer uma ligação à Internet para fins operacionais. O Google Distributed Cloud obtém componentes do cluster do Artifact Registry e o cluster é registado no Connect Agent.
Pode ligar-se à Google através da Internet pública através de HTTPS, uma rede privada virtual (VPN) ou uma ligação Dedicated Interconnect.
Se as máquinas que está a usar para a estação de trabalho de administração e os nós do cluster usarem um servidor proxy para aceder à Internet, o servidor proxy tem de permitir algumas ligações específicas. Para ver detalhes, consulte a secção de pré-requisitos do artigo Instale através de um proxy.
Requisitos da rede interna
O Google Distributed Cloud pode funcionar com a conetividade da camada 2 ou da camada 3 entre os nós do cluster. Os nós do equilibrador de carga podem ser os nós do plano de controlo ou um conjunto dedicado de nós. Para mais informações, consulte o artigo Escolher e configurar balanceadores de carga.
Quando usa o balanceamento de carga da camada 2 agrupado com o
MetalLB (spec.loadBalancer.mode: bundled
e spec.loadBalancer.type: layer2
), os nós do balanceador de carga requerem a adjacência da camada 2. O requisito de adjacência da camada 2 aplica-se quer execute o equilibrador de carga em nós do plano de controlo ou num conjunto dedicado de nós de equilíbrio de carga.
O equilíbrio de carga integrado com BGP suporta o protocolo de camada 3, pelo que a adjacência estrita da camada 2 não é necessária.
Os requisitos para máquinas de balanceador de carga são os seguintes:
- Para o balanceamento de carga de camada 2 agrupado, todos os balanceadores de carga para um determinado cluster estão no mesmo domínio de camada 2. Os nós do plano de controlo também têm de estar no mesmo domínio da camada 2.
- Para o balanceamento de carga da camada 2 agrupado, todos os endereços IP virtuais (VIPs) têm de estar na sub-rede da máquina do balanceador de carga e encaminháveis para o gateway da sub-rede.
- Os utilizadores são responsáveis por permitir o tráfego do equilibrador de carga de entrada.
Networking de pods e serviços
Os intervalos de endereços IP disponíveis para serviços e pods são especificados no ficheiro de configuração do cluster. As secções seguintes abordam as restrições mínimas e máximas para os intervalos de endereços, bem como alguns dos fatores relacionados que tem de considerar ao planear a instalação do cluster.
O número de pods e serviços que pode ter nos seus clusters é controlado pelas seguintes definições:
clusterNetwork.pods.cidrBlocks
especifica o número de pods permitidos no seu cluster.clusterNetwork.services.cidrBlocks
especifica o número de serviços permitidos no seu cluster.nodeConfig.podDensity.maxPodsPerNode
especifica o número máximo de pods que podem ser executados num único nó.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: admin-basic
namespace: cluster-admin-basic
spec:
type: admin
profile: default
...
clusterNetwork:
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
...
nodeConfig:
podDensity:
maxPodsPerNode: 250
Intervalos de endereços IP para pods e serviços
Especifica um intervalo de endereços IP como um bloco CIDR (Classless Inter-Domain Routing) a ser usado para Pods e outro bloco CIDR
a ser usado para os endereços ClusterIP
dos serviços Kubernetes. Use endereços IP no espaço de endereços privados, conforme descrito na RFC
1918. O ficheiro de configuração do cluster é pré-preenchido com valores que se enquadram nos limites descritos na tabela seguinte:
Limite | Agrupamentos | Serviços |
---|---|---|
Intervalo mínimo | Valor da máscara de /18 (16 384 endereços) |
Valor da máscara de /24 (256 endereços) |
Intervalo pré-preenchido | Valor da máscara de /16 (65 536 endereços) |
Valor oculto de /20 (4096 moradas) |
Alcance máximo | Valor da máscara de /8 (16 777 216 endereços) |
Valor da máscara de /12 (1 048 576 endereços) |
Para evitar a sobreposição com endereços IP acessíveis na sua rede, pode ter de usar intervalos CIDR diferentes dos valores pré-preenchidos. Em particular, os intervalos de serviços e agrupamentos não podem sobrepor-se ao seguinte:
Endereços IP de nós em qualquer cluster
VIPs usados por nós do plano de controlo e balanceadores de carga
Endereços IP de servidores DNS ou servidores NTP
As verificações prévias bloqueiam a criação e as atualizações de clusters se forem identificados endereços IP sobrepostos.
Pode aumentar o intervalo da rede de serviços
(clusterNetwork.services.cidrBlocks
)
depois de criar um cluster, mas não pode reduzir o número de endereços IP
atribuídos nem alterá-los. Só pode alterar o sufixo do bloco CIDR, reduzindo o valor da máscara para aumentar o número de endereços IP.
Ambos os parâmetros clusterNetwork.pods.cidrBlocks
e nodeConfig.podDensity.maxPodsPerNode
(descritos na secção seguinte) são imutáveis, pelo que deve planear cuidadosamente o
crescimento futuro do cluster para evitar ficar sem capacidade de nós. Para ver os máximos recomendados para pods por cluster, pods por nó e nós por cluster com base em testes, consulte o artigo Limites.
Máximo de agrupamentos por nó
No bare metal, o Google Distributed Cloud permite-lhe configurar um máximo de 250 pods por nó. O Kubernetes atribui um bloco CIDR a cada nó para que cada pod possa ter um endereço IP exclusivo. O tamanho do bloco CIDR do pod corresponde ao número máximo de pods por nó.
A tabela seguinte indica o tamanho do bloco CIDR que o Kubernetes atribui a cada nó com base no número máximo de pods configurado por nó:
Máximo de agrupamentos por nó | Bloco CIDR por nó | Número de endereços IP |
---|---|---|
32 | /26 |
64 |
33-64 | /25 |
128 |
65-128 | /24 |
256 |
129-250 | /23 |
512 |
A execução de 250 pods por nó requer que o Kubernetes reserve um bloco CIDR para cada nó./23
Partindo do princípio de que o seu cluster usa o valor predefinido de /16
para o campo clusterNetwork.pods.cidrBlocks
, o seu cluster tem um limite de (2(23-16))=128 nós.
Se pretender expandir o cluster para além deste limite, recomendamos vivamente que defina clusterNetwork.pods.cidrBlocks
para um bloco CIDR de pods significativamente maior do que o valor pré-preenchido.
Para mais informações sobre como o número de pods e serviços, bem como outros fatores, afetam a escalabilidade do cluster, consulte o artigo Aumente a escala dos clusters do Google Distributed Cloud.
Implementação de cluster de utilizador único com alta disponibilidade
O diagrama seguinte ilustra vários conceitos de rede importantes para o Google Distributed Cloud numa possível configuração de rede.
Considere as seguintes informações para cumprir os requisitos de rede:
- Os nós do plano de controlo executam os balanceadores de carga e têm todos conetividade da camada 2, enquanto outras ligações, incluindo nós de trabalho, só requerem conetividade da camada 3.
- Os ficheiros de configuração definem os endereços IP para os conjuntos de nós de trabalho.
Os ficheiros de configuração também definem VIPs para os seguintes
fins:
- Serviços
- Entrada
- Acesso ao plano de controlo através da API Kubernetes
- Precisa de uma ligação a Google Cloud.
Utilização de portas
Esta secção identifica os requisitos de portas para clusters do Google Distributed Cloud. As tabelas seguintes mostram como as portas UDP e TCP são usadas pelos componentes do Kubernetes nos nós do cluster e do equilibrador de carga.
Nós do plano de controlo
Versão 1.29 e posteriores
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós do cluster de administrador | Estação de trabalho do administrador |
TCP | De entrada | 2379 - 2381 | API, métricas e estado de funcionamento do cliente do servidor etcd | kube-apiserver e etcd |
TCP | De entrada | 2382 - 2384 | API do cliente do servidor etcd-events, métricas e estado | kube-apiserver e etcd-events |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 6444 | Servidor da API Kubernetes | Tudo |
TCP | De entrada | 9100 | auth-proxy | node-exporter |
TCP | De entrada | 9101 | Publique métricas de nós apenas no anfitrião local
(aplica-se à versão 1.28 e superior) |
node-exporter |
TCP | De entrada | 9977 | Receber evento de auditoria do servidor da API | audit-proxy |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 10257 | kube-controller-manager
(alteração do número da porta para a versão 1.28 e superior) |
O próprio |
TCP | De entrada | 10259 | kube-scheduler
(alteração do número da porta para a versão 1.28 e superior) |
O próprio |
TCP | De entrada | 11002 | O contentor principal do GKE Identity Service associa-se à porta através de hostPort
(aplica-se à versão 1.29 e superior) |
O próprio |
TCP | De entrada | 14443 | ANG Webhook Service | kube-apiserver e ang-controller-manager |
Versão 1.28
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós do cluster de administrador | Estação de trabalho do administrador |
TCP | De entrada | 2379 - 2381 | API, métricas e estado de funcionamento do cliente do servidor etcd | kube-apiserver e etcd |
TCP | De entrada | 2382 - 2384 | API do cliente do servidor etcd-events, métricas e estado | kube-apiserver e etcd-events |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 6444 | Servidor da API Kubernetes | Tudo |
TCP | De entrada | 8444 | O contentor principal do GKE Identity Service associa-se à porta através de
hostPort
(aplica-se apenas à versão 1.28) |
Tudo |
TCP | De entrada | 9100 | auth-proxy | node-exporter |
TCP | De entrada | 9101 | Publique métricas de nós apenas no anfitrião local
(aplica-se à versão 1.28 e superior) |
node-exporter |
TCP | De entrada | 9977 | Receber evento de auditoria do servidor da API | audit-proxy |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 10257 | kube-controller-manager
(alteração do número da porta para a versão 1.28 e superior) |
O próprio |
TCP | De entrada | 10259 | kube-scheduler
(alteração do número da porta para a versão 1.28 e superior) |
O próprio |
TCP | De entrada | 14443 | ANG Webhook Service | kube-apiserver e ang-controller-manager |
Versão 1.16
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós do cluster de administrador | Estação de trabalho do administrador |
TCP | De entrada | 2379 - 2381 | API, métricas e estado de funcionamento do cliente do servidor etcd | kube-apiserver e etcd |
TCP | De entrada | 2382 - 2384 | API do cliente do servidor etcd-events, métricas e estado
(aplica-se à versão 1.16 e superiores) |
kube-apiserver e etcd-events |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 6444 | Servidor da API Kubernetes | Tudo |
TCP | De entrada | 9100 | Publicar métricas | node-exporter |
TCP | De entrada | 9443 | Apresentar/servir métricas de proxy para componentes do plano de controlo (este requisito de porta destina-se à versão 1.16 e inferior do cluster) | kube-control-plane-metrics-proxy |
TCP | De entrada | 9977 | Receber evento de auditoria do servidor da API | audit-proxy |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10251 | kube-scheduler |
O próprio |
TCP | De entrada | 10252 | kube-controller-manager |
O próprio |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 14443 | ANG Webhook Service | kube-apiserver e ang-controller-manager |
Versão 1.15 e inferior
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós do cluster de administrador | Estação de trabalho do administrador |
TCP | De entrada | 2379 - 2381 | API, métricas e estado de funcionamento do cliente do servidor etcd | kube-apiserver e etcd |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 6444 | Servidor da API Kubernetes | Tudo |
TCP | De entrada | 9100 | Publicar métricas | node-exporter |
TCP | De entrada | 9443 | Apresentar/servir métricas de proxy para componentes do plano de controlo (este requisito de porta destina-se à versão 1.16 e inferior do cluster) | kube-control-plane-metrics-proxy |
TCP | De entrada | 9977 | Receber evento de auditoria do servidor da API | audit-proxy |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10251 | kube-scheduler |
O próprio |
TCP | De entrada | 10252 | kube-controller-manager |
O próprio |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 14443 | ANG Webhook Service | kube-apiserver e ang-controller-manager |
Nós trabalhadores
Versão 1.29 e posteriores
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 9100 | auth-proxy | node-exporter |
TCP | De entrada | 9101 | Publique métricas de nós apenas no anfitrião local
(aplica-se à versão 1.28 e superior) |
node-exporter |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 30000 - 32767 | Serviços do NodePort |
O próprio |
Versão 1.28
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 9100 | auth-proxy | node-exporter |
TCP | De entrada | 9101 | Publique métricas de nós apenas no anfitrião local
(aplica-se à versão 1.28 e superior) |
node-exporter |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 30000 - 32767 | Serviços do NodePort |
O próprio |
Versão 1.16
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 9100 | Publicar métricas | node-exporter |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 30000 - 32767 | Serviços do NodePort |
O próprio |
Versão 1.15 e inferior
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 9100 | Publicar métricas | node-exporter |
TCP | De entrada | 10250 | kubelet API |
Próprio e plano de controlo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 30000 - 32767 | Serviços do NodePort |
O próprio |
Nós do balanceador de carga
Versão 1.29 e posteriores
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | De entrada | 443 | Gestão de clusters Esta porta pode ser configurada no ficheiro de configuração do cluster com o campo |
Tudo |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP e UDP | De entrada | 7946 | Verificação de funcionamento do MetalLB | Nós do balanceador de carga |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
TCP | De entrada | 11000 | Porta de audição para métricas do HAProxy (imutável)
(aplica-se à versão 1.29 e superior) |
Tudo |
TCP | De entrada | 11001 | Porta de audição para o serviço de identidade do GKE (imutável)
(aplica-se à versão 1.29 e superior) |
Tudo |
Versão 1.28
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | De entrada | 443 | Gestão de clusters Esta porta pode ser configurada no ficheiro de configuração do cluster com o campo |
Tudo |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP e UDP | De entrada | 7946 | Verificação de funcionamento do MetalLB | Nós do balanceador de carga |
TCP | De entrada | 8443 | Porta de audição para o serviço de identidade do GKE (imutável)
(aplica-se apenas à versão 1.28) |
Tudo |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
Versão 1.16
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | De entrada | 443 | Gestão de clusters Esta porta pode ser configurada no ficheiro de configuração do cluster com o campo |
Tudo |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 7946 | Verificação de funcionamento do MetalLB | nós do balanceador de carga |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
Versão 1.15 e inferior
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós de cluster de utilizadores | Administre nós de cluster |
TCP | De entrada | 443 | Gestão de clusters Esta porta pode ser configurada no ficheiro de configuração do cluster com o campo |
Tudo |
TCP | Ambos | 4240 | Verificação de funcionamento da CNI | Tudo |
UDP | De entrada | 6081 | Encapsulamento GENEVE | O próprio |
TCP | De entrada | 7946 | Verificação de funcionamento do MetalLB | nós do balanceador de carga |
TCP | De entrada | 10256 | Verificação de funcionamento do nó | Tudo |
Requisitos de portas de vários clusters
Numa configuração com vários clusters, os clusters adicionados têm de incluir as seguintes portas para comunicar com o cluster de administrador.
Protocolo | Direção | Intervalo de portas | Finalidade | Utilizada por |
---|---|---|---|---|
TCP | De entrada | 22 | Aprovisionamento e atualização de nós do cluster | Todos os nós |
TCP | De entrada | 443 | Servidor da API Kubernetes para o cluster adicionado Esta porta pode ser configurada
na configuração do cluster, através do campo |
Nós do balanceador de carga e do plano de controlo |
Configure as portas do firewalld
Não tem de desativar o firewalld para executar o Google Distributed Cloud no Red Hat Enterprise Linux (RHEL). Para usar o firewalld, tem de abrir as portas UDP e TCP usadas pelos nós do plano de controlo, do trabalhador e do equilibrador de carga, conforme descrito em Utilização de portas nesta página. As configurações de exemplo seguintes mostram como pode abrir portas com firewall-cmd
, o utilitário de linha de comandos firewalld. Deve executar os comandos como utilizador root.
Exemplo de configuração do nó do plano de controlo
O bloco de comandos seguinte mostra um exemplo de como pode abrir as portas necessárias em servidores que executam nós do plano de controlo:
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=10256/tcp
firewall-cmd --permanent --zone=public --add-port=10257/tcp
firewall-cmd --permanent --zone=public --add-port=10259/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
Para ver os requisitos de portas específicos da versão do cluster que pretende usar, consulte a secção Utilização de portas anterior. Atualize os comandos de exemplo em conformidade.
Substitua PODS_CIDR
pelos blocos CIDR reservados para os seus pods configurados no campo clusterNetwork.pods.cidrBlocks
. O bloco CIDR predefinido para pods é 192.168.0.0/16
.
Exemplo de configuração do nó trabalhador
O bloco de comandos seguinte mostra um exemplo de como pode abrir as portas necessárias em servidores que executam nós de trabalho:
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
Para ver os requisitos de portas específicos da versão do cluster que pretende usar, consulte a secção Utilização de portas anterior. Atualize os comandos de exemplo em conformidade.
Substitua PODS_CIDR
pelos blocos CIDR reservados para os seus pods configurados no campo clusterNetwork.pods.cidrBlocks
. O bloco CIDR predefinido para pods é 192.168.0.0/16
.
Exemplo de configuração do nó do balanceador de carga
O bloco de comandos seguinte mostra um exemplo de como pode abrir as portas necessárias em servidores que executam nós do equilibrador de carga:
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
Para ver os requisitos de portas específicos da versão do cluster que pretende usar, consulte a secção Utilização de portas anterior. Atualize os comandos de exemplo em conformidade.
Substitua PODS_CIDR
pelos blocos CIDR reservados para os seus pods configurados no campo clusterNetwork.pods.cidrBlocks
. O bloco CIDR predefinido para pods é 192.168.0.0/16
.
Configuração suplementar para o RHEL 9.2 e 9.4
O Red Hat Enterprise Linux (RHEL) versão 9.2 e 9.4 é suportado como GA nas versões 1.29.400 e superiores. Com as versões 9.2 e 9.4 do RHEL, tem de fazer uma configuração adicional do firewalld nos nós para que os seus serviços e pods funcionem corretamente:
Liste as interfaces ativas do nó para encontrar a interface do nó principal:
firewall-cmd --list-interfaces
Com base nas convenções de nomenclatura das interfaces de máquinas Linux, o nome da sua interface principal pode ser semelhante a um dos seguintes:
eth0
,eno1
,ens1
ouenp2s0
.Liste as zonas do nó para saber que zona a interface principal usa:
firewall-cmd --list-all-zones
Por exemplo, se a sua interface principal for
eno1
, a secção seguinte da resposta indica que a interface principal está na zonapublic
:... public (active) target: default icmp-block-inversion: no interfaces: eno1 sources: ...
Execute os seguintes comandos firewalld para configurar detalhes personalizados da zona e da política para o RHEL 9.2 ou 9.4:
firewall-cmd --permanent --new-zone=cilium firewall-cmd --permanent --zone=cilium --add-interface=cilium_host firewall-cmd --permanent --zone=cilium --set-target ACCEPT firewall-cmd --permanent --zone=cilium --add-masquerade firewall-cmd --permanent --zone=cilium --add-forward firewall-cmd --permanent --new-policy cilium-host-port-forwarding firewall-cmd --permanent --policy cilium-host-port-forwarding --add-ingress-zone IN_ZONE firewall-cmd --permanent --policy cilium-host-port-forwarding --add-egress-zone cilium firewall-cmd --permanent --policy cilium-host-port-forwarding --set-target ACCEPT firewall-cmd --reload
Substitua
IN_ZONE
por um dos seguintes valores, com base no que encontrou nos passos anteriores:public
: zona predefinida para utilização em áreas públicas onde apenas são aceites ligações recebidas selecionadas.trusted
: zona predefinida num ambiente controlado onde todas as ligações de rede são aceites.- O nome de uma zona personalizada que definiu.
Siga a documentação do fornecedor para configurar a sua solução de armazenamento.
Por exemplo, se estiver a usar o Portworx para gerir cargas de trabalho com estado, os requisitos de rede do Portworx indicam as portas que têm de permanecer abertas.
Para cada uma das portas indicadas na documentação do fornecedor, execute o seguinte comando:
firewall-cmd --permanent --zone=public --add-port=PORT_INFO
Substitua
PORT_INFO
pelo número da porta ou pelo intervalo de números de porta, seguido do protocolo. Por exemplo,10250-10252/tcp
.
Confirme a configuração de portas
Para validar a configuração da porta, use os seguintes passos nos nós do plano de controlo, do trabalhador e do balanceador de carga:
Execute o seguinte comando do Network Mapper para ver que portas estão abertas:
nmap localhost
Execute os seguintes comandos para obter as definições de configuração do firewalld:
firewall-cmd --info-zone=public firewall-cmd --info-zone=k8s-pods firewall-cmd --list-all-policies
Se necessário, volte a executar os comandos das secções anteriores para configurar os nós corretamente. Pode ter de executar os comandos como utilizador root.
Problema conhecido do firewalld
Quando executa o Google Distributed Cloud com o firewalld
ativado no Red Hat Enterprise Linux (RHEL), as alterações ao firewalld
podem remover as cadeias iptables
na rede do anfitrião. As cadeias iptables
são adicionadas pelo dispositivo anetd
Pod
quando é iniciado. A perda das cadeias iptables
do Cilium faz com que o pod no nó perca a conetividade de rede fora do nó.
As alterações a firewalld
que removem as cadeias de iptables
incluem, entre outras:
A reiniciar
firewalld
com osystemctl
Atualizar o
firewalld
com o cliente de linha de comandos (firewall-cmd --reload
)
Para aplicar as alterações firewalld
sem remover as cadeias iptables
, reinicie anetd
no nó:
Localize e elimine o
anetd
pod com os seguintes comandos para reiniciaranetd
:kubectl get pods -n kube-system kubectl delete pods -n kube-system ANETD_XYZ
Substitua ANETD_XYZ pelo nome do Pod
anetd
.