Este documento pode estar desatualizado
Este documento possui uma data de atualização mais antiga que o documento original. Portanto, este conteúdo pode estar desatualizado. Se você lê inglês, veja a versão em inglês para acessar a versão mais atualizada:
Rode este comando em qualquer máquina que você deseje adicionar a um cluster existente
Sinopse
Ao associar um novo nó a um cluster inicializado com kubeadm, temos que estabelecer a confiança bidirecional. Este processo é dividido entre a descoberta (em que o nó estabelece a confiança na camada de gerenciamento do Kubernetes) e a inicialização TLS (em que a camada de gerenciamento do Kubernetes estabelece a confiança no nó).
Existem duas principais formas de descoberta. A primeira delas é o uso de um
token compartilhado, juntamente com o endereço IP do servidor da API. A segunda
é o fornecimento de um arquivo - um subconjunto do arquivo kubeconfig padrão. O
arquivo de descoberta/kubeconfig suporta autenticação por token, plugins de
autenticação do client-go ("exec"), "tokenFile" e "authProvider". Este arquivo
pode ser um arquivo local ou um arquivo baixado através de uma URL HTTPS. Os
formatos são kubeadm join --discovery-token abcdef.1234567890abcdef 1.2.3.4:6443
,
kubeadm join --discovery-file caminho/para/arquivo.conf
, ou
kubeadm join --discovery-file https://endereco/arquivo.conf
. Somente um formato
pode ser utilizado. Se os dados para a descoberta são carregados de uma URL,
o protocolo HTTPS deve ser utilizado. Neste caso, o conjunto de CAs instalado no
host é utilizado para verificar a conexão.
Se você utilizou um token compartilhado para descoberta, você deve também passar
a opção --discovery-token-ca-cert-hash
para validar a chave pública da
autoridade de certificação raiz (CA) apresentada pela camada de gerenciamento do
Kubernetes. O valor desta opção é especificado no formato
"<tipo-de-hash>:<valor-codificado-em-hexadecimal>", onde o tipo de
hash suportado é "sha256". O hash é calculado a partir dos bytes do objeto
Subject Public Key Info (SPKI), como especificado pela RFC7469. Este valor fica
disponível na saída do comando kubeadm init
ou pode ser calculado utilizando
ferramentas padronizadas. A opção --discovery-token-ca-cert-hash
pode ser
especificada múltiplas vezes para permitir informar mais que uma chave pública.
Se você não puder obter o hash da chave pública da autoridade de certificação
de antemão, você pode passar a opção --discovery-token-unsafe-skip-ca-verification
para desabilitar esta verificação. Esta opção enfraquece o modelo de segurança
do kubeadm, já que outros nós podem potencialmente personificar a camada de
gerenciamento do Kubernetes.
O mecanismo de inicialização TLS também é conduzido por um token compartilhado.
Este token é utilizado para temporariamente autenticar-se com a camada de
gerenciamento do Kubernetes para enviar uma requisição de assinatura de
certificado (CSR) para um par de chaves criado localmente. Por padrão, o kubeadm
irá configurar a camada de gerenciamento do Kubernetes para automaticamente
aprovar estas requisições de assinatura. O token é enviado através da opção
--tls-bootstrap-token abcdef.1234567890abcdef
.
Frequentemente, o mesmo token é utilizado para ambas as partes. Neste caso, a
opção --token
pode ser utilizada ao invés de especificar cada token
individualmente.
O comando join [api-server-endpoint]
executa as seguintes fases:
preflight Executa as verificações pré-execução
control-plane-prepare Prepara a máquina para servir um nó da camada de gerenciamento
/download-certs [EXPERIMENTAL] Baixa certificados compartilhados entre nós da camada de gerenciamento do Secret kubeadm-certs
/certs Gera os certificados para os novos componentes da camada de gerenciamento
/kubeconfig Gera o arquivo kubeconfig para os novos componentes da camada de gerenciamento
/control-plane Gera os manifestos para os novos componentes da camada de gerenciamento
kubelet-start Escreve as configurações do kubelet, os certificados, e (re)inicia o kubelet
control-plane-join Associa uma máquina como uma instância da camada de gerenciamento
/etcd Adiciona como um novo membro do etcd local
/update-status Registra o novo nó da camada de gerenciamento no objeto ClusterStatus mantido no ConfigMap kubeadm-config (DESCONTINUADO)
/mark-control-plane Marca um nó como nó da camada de gerenciamento
kubeadm join [api-server-endpoint] [flags]
Opções
--apiserver-advertise-address string | |
Se o nó hospedar uma nova instância da camada de gerenciamento, este é o endereço IP que servidor da API irá anunciar que está aguardando conexões. Quando não especificado, a interface de rede padrão é utilizada. | |
--apiserver-bind-port int32 Default: 6443 | |
Se o nó hospedar uma nova instância da camada de gerenciamento, a porta que o servidor da API deve conectar-se. | |
--certificate-key string | |
Chave utilizada para decriptar as credenciais do certificado enviadas pelo comando init. | |
--config string | |
Caminho para um arquivo de configuração do kubeadm. | |
--control-plane | |
Cria uma nova instância da camada de gerenciamento neste nó. | |
--cri-socket string | |
Caminho para o soquete CRI conectar-se. Se vazio, o kubeadm tentará autodetectar este valor; utilize esta opção somente se você possui mais que um CRI instalado ou se você possui um soquete CRI fora do padrão. | |
--discovery-file string | |
Para descoberta baseada em arquivo, um caminho de arquivo ou uma URL de onde a informação do cluster deve ser carregada. | |
--discovery-token string | |
Para descoberta baseada em token, o token utilizado para validar a informação do cluster obtida do servidor da API. | |
--discovery-token-ca-cert-hash strings | |
Para descoberta baseada em token, verifica que a chave pública do CA raiz corresponde a este hash (formato: "<tipo>:<valor>"). | |
--discovery-token-unsafe-skip-ca-verification | |
Para descoberta baseada em token, permite associar-se ao cluster sem fixação da autoridade de certificação (opção --discovery-token-ca-cert-hash). | |
--dry-run | |
Não aplica as modificações; apenas imprime as alterações que seriam efetuadas. | |
-h, --help | |
ajuda para join | |
--ignore-preflight-errors strings | |
Uma lista de verificações para as quais erros serão exibidos como avisos. Exemplos: 'IsPrivilegedUser,Swap'. O valor 'all' ignora erros de todas as verificações. | |
--node-name string | |
Especifica o nome do nó. | |
--patches string | |
Caminho para um diretório contendo arquivos nomeados no padrão "target[suffix][+patchtype].extension". Por exemplo, "kube-apiserver0+merge.yaml" ou somente "etcd.json". "target" pode ser um dos seguintes valores: "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd". "patchtype" pode ser "strategic", "merge" ou "json" e corresponde aos formatos de patch suportados pelo kubectl. O valor padrão para "patchtype" é "strategic". "extension" deve ser "json" ou "yaml". "suffix" é uma string opcional utilizada para determinar quais patches são aplicados primeiro em ordem alfanumérica. | |
--skip-phases strings | |
Lista de fases a serem ignoradas. | |
--tls-bootstrap-token string | |
Especifica o token a ser utilizado para autenticar temporariamente com a camada de gerenciamento do Kubernetes durante o processo de associação do nó ao cluster. | |
--token string | |
Utiliza este token em ambas as opções discovery-token e tls-bootstrap-token quando tais valores não são informados. |
Opções herdadas dos comandos superiores
--rootfs string | |
[EXPERIMENTAL] O caminho para o sistema de arquivos raiz 'real' do host. |