Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Configurar a CNI para nós híbridos
O Cilium é interface de rede de contêineres (CNI) compatível com a AWS para o Amazon EKS Hybrid Nodes. Você deve instalar uma CNI para que os nós híbridos fiquem prontos para atender às workloads. Os nós híbridos aparecem com o status Not Ready
até que uma CNI esteja em execução. Você pode gerenciar essa CNI com ferramentas de sua escolha, como o Helm. As instruções nesta página abrangem o gerenciamento do ciclo de vida do Cilium (instalação, atualização, exclusão). Consulte Visão geral do Ingress do Cilium e do Gateway do Cilium, Tipo de serviço LoadBalancer, e Configurar políticas de rede do Kubernetes para nós híbridos para saber como configurar o Cilium para Ingress, balanceamento de carga e políticas de rede.
O Cilium não é compatível com a AWS quando executados em nós na Nuvem AWS. A CNI da Amazon VPC não é compatível com nós híbridos e está configurada com antiafinidade para o rótulo eks.amazonaws.com/compute-type: hybrid
.
A documentação anterior do Calico nesta página foi movida para o Repositório de exemplos híbridos do EKS
Compatibilidade da versão
A versão v1.17.x
do Cilium é compatível com o EKS Hybrid Nodes para cada versão do Kubernetes compatível com o Amazon EKS.
Consulte o suporte a versões do Kubernetes para obter uma lista das versões do Kubernetes compatíveis com o Amazon EKS. O EKS Hybrid Nodes tem o mesmo suporte a versão do Kubernetes que os clusters do Amazon EKS com nós na nuvem.
Recursos com suporte
A AWS mantém compilações do Cilium para o EKS Hybrid Nodes baseadas no projeto Cilium
A AWS oferece suporte técnico para a configuração padrão dos recursos do Cilium para uso com o EKS Hybrid Nodes. Se você planeja usar o recurso fora do escopo do suporte da AWS, recomendamos que obtenha suporte comercial para o Cilium ou tenha a experiência interna para solucionar problemas e contribuir com correções para o projeto do Cilium.
Atributo do Cilium | Com suporte da AWS |
---|---|
Conformidade da rede do Kubernetes |
Sim |
Conectividade do cluster principal |
Sim |
Família IP |
IPv4 |
Gerenciamento de ciclo de vida |
Helm |
Modo de rede |
Encapsulamento VXLAN |
Gerenciamento de endereços IP (IPAM) |
Escopo do cluster de IPAM do Cilium |
Política de rede |
Política de rede do Kubernetes |
Protocolo de Gateway da Borda (BGP) |
Ambiente de gerenciamento BGP do Cilium |
Ingress do Kubernetes |
Ingress do Cilium, Gateway do Cilium |
Alocação de IP do Service LoadBalancer |
Balanceador de Carga de IPAM do Cilium |
Anúncio de Endereço IP do Service LoadBalancer |
Ambiente de gerenciamento BGP do Cilium |
substituição do kube-proxy |
Sim |
Considerações sobre o Cilium
-
Repositório Helm: a AWS hospeda o chart do Helm do Cilium no Amazon Elastic Container Registry Public (Amazon ECR Public) no Amazon EKS Cilium/Cilium
. Você pode usar o seguinte URI em seus comandos helm
para usar este repositório:oci://public.ecr.aws/eks/cilium/cilium:1.17.6-0
. Os comandos neste tópico usam esse repositório. Observe que certos comandoshelm repo
não são válidos para repositórios do Helm no Amazon ECR Public, então você não pode se referir a esse repositório a partir de um nome de repositório local do Helm. Em vez disso, use o URI completo na maioria dos comandos. -
Por padrão, o Cilium é configurado para ser executado no modo sobreposto e túnel com VXLAN como método de encapsulamento
. Esse modo tem o menor número de requisitos para a rede física subjacente. -
Por padrão, o Cilium mascara
o endereço IP de origem de todo o tráfego de pods que sai do cluster para o endereço IP do nó. Se você desabilitar o mascaramento, os CIDRs do pod devem ser roteáveis na sua rede on-premises. -
Se você estiver executando webhooks em nós híbridos, os CIDRs do pod deverão ser roteáveis em sua rede on-premises. Se os CIDRs de pod não forem roteáveis na rede on-premises, é recomendável executar webhooks em nós de nuvem no mesmo cluster. Consulte Configurar webhooks para nós híbridos e Preparar a rede para nós híbridos para obter mais informações.
-
A AWS recomenda o uso da funcionalidade BGP integrada do Cilium para tornar os CIDRs do pod roteáveis na sua rede on-premises. Para obter mais informações sobre como configurar o BGP do Cilium com nós híbridos, consulte Configurar o BGP do Cilium para nós híbridos.
-
O Gerenciamento de endereços IP (IPAM) padrão no Cilium é chamado de Escopo do cluster
, em que o operador do Cilium aloca endereços IP para cada nó com base nos CIDRs de pod configurados pelo usuário.
Instalar o Cilium em nós híbridos
Procedimento
-
Crie um novo arquivo YAML denominado
cilium-values.yaml
. O exemplo a seguir configura o Cilium para ser executado somente em nós híbridos, definindo a afinidade para o rótuloeks.amazonaws.com/compute-type: hybrid
para o atendente e operador do Cilium.-
Configure
clusterPoolIpv4PodCIDRList
com os mesmos CIDRs de pods que configurou as redes remotas de pods do seu cluster do EKS. Por exemplo, .10.100.0.0/24
O operador do Cilium aloca fatias de endereço IP por meio do espaço de IP configuradoclusterPoolIpv4PodCIDRList
. O CIDR do seu pod não deve se sobrepor ao CIDR do nó on-premises, ao CIDR da VPC ou ao CIDR do serviço do Kubernetes. -
Configure
clusterPoolIpv4MaskSize
com base nos pods necessários por nó. Por exemplo,25
para um tamanho de segmento /25 de 128 pods por nó. -
Não altere
clusterPoolIpv4PodCIDRList
ouclusterPoolIpv4MaskSize
depois de implantar o Cilium em seu cluster, consulte Expandir o pool de clusterspara obter mais informações. -
Se você estiver executando o Cilium no modo de substituição do kube-proxy, defina
kubeProxyReplacement: "true"
em seus valores de Helm e certifique-se de não ter uma implantação existente do kube-proxy em execução nos mesmos nós que o Cilium. -
O exemplo abaixo desabilita o proxy Envoy Layer 7 (L7) que o Cilium usa para políticas de rede L7 e Ingress. Para obter mais informações, consulte Configurar políticas de rede do Kubernetes para nós híbridos e Visão geral do Ingress do Cilium e do Gateway do Cilium.
-
O exemplo abaixo configura
loadBalancer.serviceTopology
:true
para que a Distribuição de tráfego de serviços funcione corretamente se você a configurar para seus serviços. Para obter mais informações, consulte Configurar a Distribuição de Tráfego de Serviços. -
Para obter uma lista completa dos valores do Helm para o Cilium, consulte a referência do Helm
na documentação do Cilium. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid ipam: mode: cluster-pool operator: clusterPoolIPv4MaskSize:
25
clusterPoolIPv4PodCIDRList: -POD_CIDR
loadBalancer: serviceTopology: true operator: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid unmanagedPodWatcher: restart: false loadBalancer: serviceTopology: true envoy: enabled: false kubeProxyReplacement: "false"
-
-
Instale o Cilium no cluster.
-
Substitua
CILIUM_VERSION
por uma versão do Cilium (por exemplo,1.17.5
). É recomendável usar a versão de patch mais recente para a versão secundária do Cilium. Você pode encontrar a versão mais recente do patch disponível em seu repositório Helm local com o comandohelm search repo cilium/cilium --versions
. -
Caso esteja usando um arquivo kubeconfig específico, use o sinalizador
--kubeconfig
com o comando de instalação do Helm.helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --version
CILIUM_VERSION
\ --namespace kube-system \ --values cilium-values.yaml
-
-
Confirme que a instalação do Cilium teve êxito com os comandos a seguir. Você deve ver a implantação
cilium-operator
e ocilium-agent
em execução em cada um dos seus nós híbridos. Além disso, os nós híbridos agora devem ter o statusReady
. Para obter informações sobre como configurar o BGP do Cilium para anunciar seus CIDRs de pod em sua rede on-premises, acesse Configurar o BGP do Cilium para nós híbridos.kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE cilium-jjjn8 1/1 Running 0 11m cilium-operator-d4f4d7fcb-sc5xn 1/1 Running 0 11m
kubectl get nodes
NAME STATUS ROLES AGE VERSION mi-04a2cf999b7112233 Ready <none> 19m v1.31.0-eks-a737599
Atualizar o Cilium em nós híbridos
Antes de atualizar a implantação do Cilium, analise cuidadosamente a documentação de atualização do Cilium
-
Certifique-se de ter instalado a CLI do
helm
no ambiente de linha de comandos. Consulte a documentação do Helmpara obter instruções da instalação. -
Execute a verificação de pré-lançamento da atualização do Cilium. Substitua
CILIUM_VERSION
pela sua versão de destino do Cilium. Recomendamos executar a versão de patch mais recente para a versão secundária do Cilium. Você pode encontrar a versão de patch mais recente para uma determinada versão secundária do Cilium na seção Stable Releasesda documentação do Cilium. helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \ --namespace=kube-system \ --set preflight.enabled=true \ --set agent=false \ --set operator.enabled=false
-
Depois de aplicar o
cilium-preflight.yaml
, certifique-se de que o número de podsREADY
seja o mesmo número de pods do Cilium em execução.kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE cilium 2 2 2 2 2 <none> 1h20m cilium-pre-flight-check 2 2 2 2 2 <none> 7m15s
-
Quando o número de pods READY for igual, certifique-se de que a implantação de pré-lançamento do Cilium também esteja marcada como READY 1/1. Caso mostre READY 0/1, consulte a seção Validação de CNP
e resolva problemas com a implantação antes de continuar com a atualização. kubectl get deployment -n kube-system cilium-pre-flight-check -w
NAME READY UP-TO-DATE AVAILABLE AGE cilium-pre-flight-check 1/1 1 0 12s
-
Excluir o pré-lançamento
helm uninstall cilium-preflight --namespace kube-system
-
Antes de executar o comando
helm upgrade
, preserve os valores da implantação em umexisting-cilium-values.yaml
ou use as opções da linha de comando--set
para as configurações quando estiver executando o comando de upgrade. A operação de atualização substitui o ConfigMap do Cilium, portanto, é fundamental que os valores de configuração sejam passados durante a atualização.helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
-
Durante as operações normais do cluster, todos os componentes do Cilium devem executar a mesma versão. As etapas a seguir descrevem como atualizar todos os componentes de uma versão estável para uma versão estável posterior. Ao atualizar de uma versão secundária para outra versão secundária, é recomendável atualizar primeiro para a versão de patch mais recente da versão secundária existente do Cilium. Para minimizar a interrupção, a opção
upgradeCompatibility
deve ser definida para a versão inicial do Cilium que foi instalada no cluster.helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version
CILIUM_VERSION
\ --namespace kube-system \ --set upgradeCompatibility=1.X
\ -f existing-cilium-values.yaml -
(Opcional) Se você precisar reverter a atualização devido a problemas, execute os comandos a seguir.
helm history cilium --namespace kube-system helm rollback cilium [REVISION] --namespace kube-system
Excluir o Cilium dos nós híbridos
-
Execute o comando a seguir para desinstalar todos os componentes do Cilium do cluster. Observe que a desinstalação da CNI pode afetar a integridade dos nós e pods e não deve ser realizada em clusters de produção.
helm uninstall cilium --namespace kube-system
As interfaces e rotas configuradas pelo Cilium não são removidas por padrão quando a CNI é removida do cluster. Consulte o problema do GitHub
para obter mais informações. -
Para limpar os arquivos e recursos de configuração em disco, caso esteja usando os diretórios de configuração padrão, você poderá remover os arquivos conforme mostrado pelo script
cni-uninstall.sh
no repositório do Cilium no GitHub. -
Para remover as definições de recursos personalizados (CRDs) do Cilium do cluster, você pode executar os comandos a seguir.
kubectl get crds -oname | grep "cilium" | xargs kubectl delete