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.
Referência do nodeadm
para nós híbridos
A CLI do Amazon EKS Hybrid Nodes (nodeadm
) usada para o gerenciamento do ciclo de vida dos nós híbridos difere da versão do nodeadm
usada para inicializar instâncias do Amazon EC2 como nós nos clusters do Amazon EKS. Siga a documentação e as referências para a versão apropriada do nodeadm
. Esta página de documentação é para a versão do nodeadm
para nós híbridos, e a versão do nodeadm
para nós híbridos está disponível no repositório eks-hybrid no GitHubnodeadm
usada para instâncias do Amazon EC2.
Faça download do nodeadm
A versão de nós híbridos do nodeadm
está hospedada no Amazon S3 com o Amazon CloudFront na frente. Para instalar nodeadm
em cada host on-premises, você pode executar o comando a seguir nos hosts on-premises.
Para hosts x86_64:
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
Para hosts ARM
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
Adicione uma permissão de arquivo executável ao binário baixado em cada host.
chmod +x nodeadm
Comandos
Importante
Você deve executar nodeadm
com um usuário que tenha privilégios root/sudo.
Instalar
O comando install
é usado para instalar os artefatos e dependências necessários para executar e unir nós híbridos a um cluster do Amazon EKS. O comando install
pode ser executado individualmente em cada nó híbrido ou durante os pipelines de criação de imagens para pré-instalar as dependências dos nós híbridos nas imagens do sistema operacional.
Uso
nodeadm install [KUBERNETES_VERSION] [flags]
Argumentos posicionais
(Obrigatório) KUBERNETES_VERSION
A versão major.minor do Kubernetes do EKS a ser instalada, por exemplo, 1.31
Sinalizadores
Name | Obrigatório | Descrição |
---|---|---|
|
VERDADEIRO |
Provedor de credenciais a ser instalado. Os valores compatíveis são |
|
FALSE |
Fonte para Valores |
|
FALSE |
Especifica a região da AWS para baixar artefatos, como o Agente SSM. O padrão é |
|
FALSE |
Duração máxima do comando de instalação. A entrada segue o formato de duração. Por exemplo, |
|
FALSE |
Exibe a mensagem de ajuda com os parâmetros de sinalização, subcomando e valor posicional disponíveis. |
Exemplos
Instale a versão 1.31
do Kubernetes com o AWS Systems Manager (SSM) como o provedor de credenciais
nodeadm install 1.31 --credential-provider ssm
Instale a versão 1.31
do Kubernetes com o AWS Systems Manager (SSM) como o provedor de credenciais, e o Docker como a fonte do containerd, com um tempo limite de download de 20 minutos.
nodeadm install 1.31 --credential-provider ssm --containerd-source docker --timeout 20m
Instale a versão 1.31
do Kubernetes com o AWS IAM Roles Anywhere como o provedor de credenciais
nodeadm install 1.31 --credential-provider iam-ra
Arquivos instalados
Artifact | Path |
---|---|
CLI do IAM Roles Anywhere |
/usr/local/bin/aws_signing_helper |
Binário do Kubelet |
/usr/bin/kubelet |
Binário do Kubectl |
usr/local/bin/kubectl |
Provedor de credenciais do ECR |
/etc/eks/image-credential-provider/ecr-credential-provider |
AWS IAM Authenticator |
/usr/local/bin/aws-iam-authenticator |
CLI de configuração do SSM |
/opt/ssm/ssm-setup-cli |
SSM Agent |
No Ubuntu: /snap/amazon-ssm-agent/current/amazon-ssm-agent No RHEL e AL2023: /usr/bin/amazon-ssm-agent |
Containerd |
No Ubuntu e AL2023: /usr/bin/containerd No RHEL: /bin/containerd |
Iptables |
No Ubuntu e AL2023: /usr/sbin/iptables No RHEL: /sbin/iptables |
Plug-ins da CNI |
/opt/cni/bin |
rastreador de artefatos instalado |
/opt/nodeadm/tracker |
Verificação de configuração
O comando config check
verifica se há erros na configuração do nó fornecido. Esse comando pode ser usado para verificar e validar a exatidão de um arquivo de configuração de nó híbrido.
Uso
nodeadm config check [flags]
Sinalizadores
Name | Obrigatório | Descrição |
---|---|---|
|
VERDADEIRO |
Fonte da configuração do nodeadm. Para nós híbridos, a entrada deve seguir um URI com esquema de arquivo. |
|
FALSE |
Exibe a mensagem de ajuda com os parâmetros de sinalização, subcomando e valor posicional disponíveis. |
Exemplos
nodeadm config check --config-source file:///root/nodeConfig.yaml
Init
O comando init
inicia e conecta o nó híbrido com o cluster configurado do Amazon EKS.
Uso
nodeadm init [flags]
Sinalizadores
Name | Obrigatório | Descrição |
---|---|---|
|
VERDADEIRO |
Fonte de configuração do |
|
FALSE |
Fases de Valores |
|
FALSE |
Exibe a mensagem de ajuda com os parâmetros de sinalização, subcomando e valor posicional disponíveis. |
Exemplos
nodeadm init --config-source file://root/nodeConfig.yaml
Arquivos instalados
Name | Path |
---|---|
kubeconfig do Kubelet |
/var/lib/kubelet/kubeconfig |
Configuração do Kubelet |
/etc/kubernetes/kubelet/config.json |
Unidade systemd do Kubelet |
/etc/systemd/system/kubelet.service |
Configuração do provedor de credenciais de imagem |
/etc/eks/image-credential-provider/config.json |
Arquivo env do Kubelet |
/etc/eks/kubelet/environment |
Certificados do Kubelet |
/etc/kubernetes/pki/ca.crt |
Configuração do containerd |
/etc/containerd/config.toml |
Configuração dos módulos do containerd do kernel |
/etc/modules-load.d/contianerd.conf |
Arquivo de configuração da AWS |
/etc/aws/hybrid/config |
Arquivo de credenciais da AWS (se habilitar arquivo de credenciais) |
/eks-hybrid/.aws/credentials |
Unidade do sistema auxiliar de assinatura da AWS |
/etc/systemd/system/aws_signing_helper_update.service |
Arquivo de configuração Sysctl |
/etc/sysctl.d/99-nodeadm.conf |
Arquivos do gerenciador Apt para repositório Docker (se a fonte do containerd for o Docker) |
|
Ca-certificates |
/etc/ssl/certs/ca-certificates.crt |
Arquivo de chaves GPG |
/etc/apt/keyrings/docker.asc |
Arquivo de origem do repositório do Docker |
/etc/apt/sources.list.d/docker.list |
Upgrade
O comando nodeadm upgrade
atualiza todos os artefatos instalados para a versão mais recente e inicializa o nó para configurar os artefatos atualizados e unir o cluster do EKS na AWS. O upgrade é um comando de interrupção para as workloads em execução no nó. Mova as workloads para outro nó antes de executar o comando upgrade.
Uso
nodeadm upgrade [KUBERNETES_VERSION] [flags]
Argumentos posicionais
(Obrigatório) KUBERNETES_VERSION
A versão major.minor do Kubernetes do EKS a ser instalada, por exemplo, 1.31
Sinalizadores
Name | Obrigatório | Descrição |
---|---|---|
|
VERDADEIRO |
Fonte de configuração do |
|
FALSE |
Tempo limite para download de artefatos. A entrada segue o formato de duração. Por exemplo, 1h23m. O tempo limite de download padrão para o comando de atualização é definido para dez minutos. |
|
FALSE |
Fases da atualização a serem ignoradas. Não é recomendável pular nenhuma fase, a menos que isso ajude a corrigir um problema. Valores |
|
FALSE |
Exibe a mensagem de ajuda com os parâmetros de sinalização, subcomando e valor posicional disponíveis. |
Exemplos
nodeadm upgrade 1.31 --config-source file:///root/nodeConfig.yaml
nodeadm upgrade 1.31 --config-source file:///root/nodeConfig.yaml --timeout 20m
Desinstalar
O comando nodeadm uninstall
interrompe e remove os artefatos do nodeadm
instalados durante a nodeadm install
, incluindo o kubelet e o containerd. Observe que o comando uninstall não drena nem exclui os nós híbridos do cluster. Você deve executar as operações de drenagem e exclusão separadamente. Consulte Remoção de nós híbridos para obter mais informações. Por padrão, nodeadm uninstall
não prosseguirá se houver pods restantes no nó. Da mesma forma, nodeadm uninstall
não remove dependências da CNI ou dependências de outros complementos do Kubernetes que você executa no cluster. Para remover totalmente a instalação da CNI do host, consulte as instruções em Configurar uma CNI para nós híbridos. Se você estiver usando ativações híbridas do AWS SSM como o provedor de credenciais on-premises, o comando nodeadm uninstall
vai cancelar o registro dos hosts como instâncias gerenciadas pelo AWS SSM.
Uso
nodeadm uninstall [flags]
Sinalizadores
Name | Obrigatório | Descrição |
---|---|---|
|
FALSE |
Fases da atualização a serem ignoradas. Não é recomendável pular nenhuma fase, a menos que isso ajude a corrigir um problema. Valores |
|
FALSE |
Exibe a mensagem de ajuda com os parâmetros de sinalização, subcomando e valor posicional disponíveis. |
Exemplos
nodeadm uninstall
nodeadm uninstall --skip node-validation,pod-validation
Depure
O comando nodeadm debug
pode ser usado para solucionar problemas de nós híbridos não íntegros ou mal configurados. Ele valida se os requisitos a seguir estão em vigor.
-
O nó tem acesso de rede às APIs da AWS necessárias para obter credenciais.
-
O nó é capaz de obter credenciais da AWS para o perfil do IAM configurado de nós híbridos.
-
O nó tem acesso de rede ao endpoint da API do Kubernetes do EKS e à validade do certificado do endpoint da API do Kubernetes do EKS.
-
O nó é capaz de se autenticar com o cluster do EKS, sua identidade no cluster é válida e o nó tem acesso ao cluster do EKS por meio da VPC configurada para o cluster do EKS.
Se forem encontrados erros, a saída do comando vai sugerir etapas de solução de problemas. Certas etapas de validação mostram processos secundários. Se estes falharem, a saída será mostrada em uma seção stderr abaixo do erro de validação.
Uso
nodeadm debug [flags]
Sinalizadores
Name | Obrigatório | Descrição |
---|---|---|
|
VERDADEIRO |
Fonte de configuração do |
|
FALSE |
Desativa a saída de cores. Útil para automação. |
|
FALSE |
Exibe a mensagem de ajuda com os parâmetros de sinalização, subcomando e valor posicional disponíveis. |
Exemplos
nodeadm debug --config-source file://nodeConfig.yaml
Referência da API de configuração de Node
Ativações híbridas do AWS SSM
Veja a seguir um exemplo de nodeConfig.yaml
ao usar ativações híbridas do AWS SSM para credenciais de nós híbridos.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id
AWS IAM Roles Anywhere
Veja a seguir um exemplo de nodeConfig.yaml
do AWS IAM Roles Anywhere para credenciais de nós híbridos.
Ao usar o AWS IAM Roles Anywhere como seu provedor de credenciais on-premises, o nodeName
que você usa na configuração do nodeadm
deve estar alinhado com as permissões que você definiu como escopo para o perfil do IAM de nós híbridos. Por exemplo, se as permissões para o perfil do IAM de nós híbridos só permitirem que o AWS IAM Roles Anywhere assuma o perfil quando o nome da sessão do perfil for igual ao CN do certificado do host, o nodeName
na configuração do nodeadm
deverá ser o mesmo que o CN dos certificados. O nodeName
que você usa não pode exceder 64 caracteres. Para obter mais informações, consulte Preparar as credenciais para nós híbridos.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: iamRolesAnywhere: nodeName: # Name of the node trustAnchorArn: # ARN of the IAM Roles Anywhere trust anchor profileArn: # ARN of the IAM Roles Anywhere profile roleArn: # ARN of the Hybrid Nodes IAM role certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor privateKeyPath: # Path to the private key file for the certificate
(Opcional) Configuração do Kubelet
Você pode passar a configuração e os sinalizadores do kubelet na configuração do nodeadm
. Veja o exemplo abaixo para saber como adicionar um rótulo de nó abc.amazonaws.com/test-label
e como configurar para definir shutdownGracePeriod
como 30 segundos.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides kubelet: config: # Map of kubelet config and values shutdownGracePeriod: 30s flags: # List of kubelet flags - --node-labels=abc.company.com/test-label=true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id
(Opcional) Configuração do containerd
Você pode passar uma configuração personalizada do containerd na configuração do nodeadm
. A configuração do containerd para nodeadm
aceita TOML em linha. Veja o exemplo abaixo para saber como configurar o containerd para desabilitar a exclusão de camadas de imagens descompactadas no armazenamento de conteúdo do containerd.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri".containerd] discard_unpacked_layers = false hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id
Você também pode usar a configuração do containerd para habilitar a compatibilidade com o SELinux. Com o SELinux habilitado no containerd, certifique-se de que os pods programados no nó tenham o securityContext e o seLinuxOptions adequados habilitados. Você pode encontrar mais informações sobre como configurar um contexto de segurança na documentação do Kubernetes
nota
O Red Hat Enterprise Linux (RHEL) 8 e o RHEL 9 têm o SELinux habilitado por padrão e configurado como estrito no host. Por padrão, o Amazon Linux 2023 tem o SELinux habilitado e configurado para o modo permissivo. Quando o SELinux está configurado para o modo permissivo no host, ativá-lo no containerd não bloqueará as solicitações, mas as registrará em log de acordo com a configuração do SELinux no host.
apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri"] enable_selinux = true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id