Opções avançadas e configuração
Esta seção contém informações avançadas descrevendo as diferentes maneiras de executar e gerenciar o RKE2.
Rotação de Certificado
Por padrão, os certificados no RKE2 expiram em 12 meses.
Se os certificados estiverem expirados ou tiverem menos de 90 dias restantes antes de expirarem, os certificados são rotacionados quando o RKE2 é reiniciado.
Os certificados também podem ser rotacionados manualmente. Para fazer isso, é melhor parar o processo rke2-server, rotacionar os certificados e, em seguida, iniciar o processo novamente:
systemctl stop rke2-server
rke2 certificate rotate
systemctl start rke2-server
Para renovar os certificados do agente, reinicie o rke2-agent nos nós do agente. Os certificados do agente são renovados toda vez que o agente é iniciado.
systemctl restart rke2-agent
Também é possível rotacionar um serviço individual passando a flag --service, por exemplo: rke2 certificate rotate --service api-server. Consulte Gerenciamento de Certificados para mais detalhes.
Manifestos de Implantação Automática
Qualquer arquivo encontrado em /var/lib/rancher/rke2/server/manifests será automaticamente implantado no Kubernetes de maneira semelhante a kubectl apply.
Para informações sobre a implantação de charts do Helm usando o diretório, consulte a seção sobre Helm.
Configurando o containerd
|
Versão Gate
O RKE2 inclui o containerd 2.0 a partir das versões de fevereiro de 2025: v1.31.6+rke2r1 e v1.32.2+rke2r1. |
O RKE2 gerará um arquivo de configuração para o containerd em /var/lib/rancher/rke2/agent/etc/containerd/config.toml, usando valores específicos para a configuração atual do cluster e do nó.
Para personalização avançada, você pode criar um modelo de configuração do containerd no mesmo diretório:
-
Para o containerd 2.0, coloque um modelo de configuração da versão 3 em
config-v3.toml.tmpl. Consulte a documentação do containerd 2.0 para mais informações. -
Para o containerd 1.7 e versões anteriores, coloque um modelo de configuração da versão 2 em
config.toml.tmpl. Consulte a documentação do containerd 1.7 para mais informações.
O containerd 2.0 é compatível com versões anteriores de configuração, e o RKE2 continuará a renderizar a configuração da versão 2 legada a partir de config.toml.tmpl se config-v3.toml.tmpl não for encontrado.
O arquivo de modelo é renderizado na configuração do containerd usando a biblioteca text/template. Consulte ContainerdConfigTemplateV3 e ContainerdConfigTemplate em templates.go para o conteúdo do modelo padrão. O modelo é executado com uma estrutura ContainerdConfig como seu valor dot (argumento de dados).
Modelo base
Você pode estender o modelo base do RKE2 em vez de copiar e colar o modelo completo do código-fonte. Isso é útil se você precisar construir sobre a configuração existente e adicionar algumas linhas extras no final.
#/var/lib/rancher/rke2/agent/etc/containerd/config-v3.toml.tmpl
{{ template "base" . }}
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'custom']
runtime_type = "io.containerd.runc.v2"
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'custom'.options]
BinaryName = "/usr/bin/custom-container-runtime"
SystemdCgroup = true
|
Para melhores resultados, NÃO simplesmente copie um |
Configurando um proxy HTTP
Se você estiver executando o RKE2 em um ambiente que só possui conectividade externa através de um proxy HTTP, pode configurar suas configurações de proxy no serviço systemd do RKE2. Essas configurações de proxy serão então usadas no RKE2 e passadas para o containerd e kubelet incorporados, bem como para os pods estáticos do plano de controle, etcd e kube-proxy.
Adicione as variáveis necessárias HTTP_PROXY, HTTPS_PROXY e NO_PROXY ao arquivo de ambiente do seu serviço systemd, geralmente:
-
/etc/default/rke2-server -
/etc/default/rke2-agent
O RKE2 adicionará automaticamente os intervalos de IP internos de Pod e Serviço do cluster e o domínio DNS do cluster à lista de entradas NO_PROXY. Você deve garantir que os intervalos de endereços IP utilizados pelos próprios nós do Kubernetes (ou seja, os IPs públicos e privados dos nós) estejam incluídos na lista NO_PROXY, ou que os nós possam ser alcançados através do proxy.
HTTP_PROXY=http://your-proxy.example.com:8888
HTTPS_PROXY=http://your-proxy.example.com:8888
NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
Se você deseja configurar as configurações de proxy para o containerd sem afetar o RKE2 e o Kubelet, pode prefixar as variáveis com CONTAINERD_:
CONTAINERD_HTTP_PROXY=http://your-proxy.example.com:8888
CONTAINERD_HTTPS_PROXY=http://your-proxy.example.com:8888
CONTAINERD_NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
Rótulos e taints de nó
Os agentes RKE2 podem ser configurados com as opções node-label e node-taint que adicionam um rótulo e um taint ao kubelet. As duas opções apenas adicionam rótulos e/ou taints no momento do registro e podem ser adicionadas apenas uma vez, não podendo ser removidas depois disso através de comandos rke2.
Se você quiser alterar rótulos e taints de nó após o registro do nó, deve usar kubectl. Consulte a documentação oficial do Kubernetes para detalhes sobre como adicionar taints e rótulos de nó.
Como Funciona o Registro do Nó Agente
Os nós agentes são registrados por meio de uma conexão websocket iniciada pelo processo rke2 agent, e a conexão é mantida por um balanceador de carga do lado do cliente que opera como parte do processo do agente.
Os agentes se registram no servidor usando a parte secreta do cluster do token de junção, juntamente com uma senha específica do nó gerada aleatoriamente, que é armazenada no agente em /etc/rancher/node/password. O servidor armazenará as senhas para nós individuais como segredos do Kubernetes, e quaisquer tentativas subsequentes devem usar a mesma senha. Os segredos de senha do nó são armazenados no namespace kube-system com nomes usando o modelo <host>.node-password.rke2. Esses segredos são excluídos quando o nó correspondente do Kubernetes é deletado.
Se o diretório /etc/rancher/node de um agente for removido, o arquivo de senha deve ser recriado para o agente antes da inicialização, ou a entrada removida do servidor ou do cluster Kubernetes (dependendo da versão do RKE2).
Iniciando o servidor com o script de instalação
O script de instalação fornece unidades para systemd, mas não habilita ou inicia o serviço por padrão.
Ao executar com systemd, os logs serão criados em /var/log/syslog e visualizados usando journalctl -u rke2-server ou journalctl -u rke2-agent.
Um exemplo de instalação com o script de instalação:
curl -sfL https://get.rke2.io | sh -
systemctl enable rke2-server
systemctl start rke2-server
Desabilitando charts do servidor
Os charts do servidor incluídos com rke2 implantados durante a inicialização do cluster podem ser desabilitados e substituídos por alternativas. Um caso de uso comum é substituir o chart rke2-ingress-nginx incluído por uma alternativa.
Para desabilitar qualquer um dos gráficos do sistema incluídos, defina o parâmetro disable no arquivo de configuração antes da inicialização. Um exemplo de desabilitar todos os gráficos do sistema disponíveis é:
# /etc/rancher/rke2/config.yaml
disable:
- rke2-coredns
- rke2-ingress-nginx
- rke2-metrics-server
- rke2-snapshot-controller
- rke2-snapshot-controller-crd
- rke2-snapshot-validation-webhook
|
É responsabilidade do operador do cluster garantir que os componentes sejam desabilitados ou substituídos com cuidado, pois os gráficos do servidor desempenham papéis importantes na operabilidade do cluster. Consulte a visão geral da arquitetura para mais informações sobre o papel dos gráficos do sistema individuais dentro do cluster. |
Instalação em regiões da AWS classificadas ou redes com endpoints da API da AWS personalizados
Em regiões públicas da AWS, para garantir que o RKE2 esteja habilitado para a nuvem e capaz de auto-provisionar certos recursos da nuvem, configure o RKE2 com:
# /etc/rancher/rke2/config.yaml
cloud-provider-name: aws
Ao instalar o RKE2 em regiões classificadas (como SC2S ou C2S), há alguns pré-requisitos adicionais a serem observados para garantir que o RKE2 saiba como e onde se comunicar de forma segura com os endpoints apropriados da AWS:
-
Certifique-se de que todos os pré-requisitos comuns do provedor de nuvem AWS sejam atendidos. Estes são independentes das regiões e são sempre necessários.
-
Certifique-se de que o RKE2 saiba onde enviar solicitações de API para os serviços
ec2eelasticloadbalancingcriando um arquivocloud.conf, abaixo está um exemplo para a regiãous-iso-east-1(C2S):# /etc/rancher/rke2/cloud.conf [Global] [ServiceOverride "ec2"] Service=ec2 Region=us-iso-east-1 URL=https://ec2.us-iso-east-1.c2s.ic.gov SigningRegion=us-iso-east-1 [ServiceOverride "elasticloadbalancing"] Service=elasticloadbalancing Region=us-iso-east-1 URL=https://elasticloadbalancing.us-iso-east-1.c2s.ic.gov SigningRegion=us-iso-east-1Alternativamente, se você estiver usando endpoints privados da AWS, certifique-se de que o
URLapropriado seja usado para cada um dos endpoints privados. -
Certifique-se de que o pacote de CA da AWS apropriado esteja carregado no armazenamento de confiança de CA raiz do sistema. Isso pode já ter sido feito para você, dependendo da AMI que você está usando.
# on CentOS/RHEL 7/8 cp <ca.pem> /etc/pki/ca-trust/source/anchors/ update-ca-trust -
Configure o RKE2 para usar o provedor de nuvem
awscom ocloud.confpersonalizado criado na etapa 1:# /etc/rancher/rke2/config.yaml ... cloud-provider-name: aws cloud-provider-config: "/etc/rancher/rke2/cloud.conf" ... -
Instale o RKE2 normalmente (provavelmente em uma capacidade isolada).
-
Valide a instalação bem-sucedida confirmando a existência de metadados da AWS nos rótulos dos nós do cluster com
kubectl get nodes --show-labels.
Requisições/Limites de Recursos do Componente do Plano de Controle
As seguintes opções estão disponíveis sob o subcomando server para o RKE2. As opções permitem especificar requisições e limites de CPU para os componentes do plano de controle dentro do RKE2.
--control-plane-resource-requests value (components) Control Plane resource requests [$RKE2_CONTROL_PLANE_RESOURCE_REQUESTS]
--control-plane-resource-limits value (components) Control Plane resource limits [$RKE2_CONTROL_PLANE_RESOURCE_LIMITS]
Os valores são uma lista delimitada por vírgulas de [controlplane-component]-(cpu|memory)=[desired-value]. Os valores possíveis para controlplane-component são:
kube-apiserver kube-scheduler kube-controller-manager kube-proxy etcd cloud-controller-manager
Assim, um exemplo de configuração pode ser assim:
# /etc/rancher/rke2/config.yaml
control-plane-resource-requests:
- kube-apiserver-cpu=500m
- kube-apiserver-memory=512M
- kube-scheduler-cpu=250m
- kube-scheduler-memory=512M
- etcd-cpu=1000m
Os valores de unidade para CPU/memória são idênticos às unidades de recursos do Kubernetes (Veja: Limites de Recursos no Kubernetes).
Montagens de Volume de Componente do Plano de Controle Extras
As seguintes opções estão disponíveis sob o subcomando server para o RKE2. Essas opções especificam a montagem de diretórios do sistema de arquivos do nó no componente de pod estático que corresponde ao nome prefixado.
| Flag | VAR DE ENV | |
|---|---|---|
kube-apiserver-montagem-extra |
RKE2_KUBE_APISERVER_EXTRA_MOUNT |
montagens de volume extra do kube-apiserver |
kube-scheduler-montagem-extra |
RKE2_KUBE_SCHEDULER_EXTRA_MOUNT |
montagens de volume extra do kube-scheduler |
kube-controller-manager-extra-mount |
RKE2_KUBE_CONTROLLER_MANAGER_EXTRA_MOUNT |
|
kube-proxy-extra-mount |
RKE2_KUBE_PROXY_EXTRA_MOUNT |
|
etcd-montagem-extra |
RKE2_ETCD_EXTRA_MOUNT |
|
cloud-controller-manager-extra-mount |
RKE2_CLOUD_CONTROLLER_MANAGER_EXTRA_MOUNT |
Montagem de Volume de Caminho de Host RW
/source/volume/path/on/host:/destination/volume/path/in/staticpod
Montagem de Volume de Caminho de Host RO
Para montar um volume como somente leitura, acrescente :ro ao final da montagem do volume: /source/volume/path/on/host:/destination/volume/path/in/staticpod:ro
Várias montagens de volume podem ser especificadas para o mesmo componente passando os valores das flags como um array no arquivo de configuração.
|
Versão Gate
Antes das versões de abril de 2024 (v1.27.13+rke2r1, v1.28.9+rke2r1, v1.29.4+rke2r1), apenas diretórios podem ser montados. |
# /etc/rancher/rke2/config.yaml
kube-apiserver-extra-mount:
- "/tmp/foo:/root/foo"
- "/tmp/bar.txt:/etc/bar.txt:ro"
Variáveis de Ambiente de Componentes do Plano de Controle Extra
As seguintes opções de configuração estão disponíveis para o subcomando server do RKE2. Essas opções especificam variáveis de ambiente adicionais em formato padrão, ou seja, KEY=VALUE para o componente de pod estático que corresponde ao nome prefixado.
| Flag | VAR DE ENV |
|---|---|
kube-apiserver-extra-env |
RKE2_KUBE_APISERVER_EXTRA_ENV |
kube-scheduler-extra-env |
RKE2_KUBE_SCHEDULER_EXTRA_ENV |
kube-controller-manager-extra-env |
RKE2_KUBE_CONTROLLER_MANAGER_EXTRA_ENV |
kube-proxy-extra-env |
RKE2_KUBE_PROXY_EXTRA_ENV |
etcd-extra-env |
RKE2_ETCD_EXTRA_ENV |
cloud-controller-manager-extra-env |
RKE2_CLOUD_CONTROLLER_MANAGER_EXTRA_ENV |
Várias variáveis de ambiente podem ser especificadas para o mesmo componente passando os valores das flags como um array no arquivo de configuração.
# /etc/rancher/rke2/config.yaml
kube-apiserver-extra-env:
- "MY_FOO=FOO"
- "MY_BAR=BAR"
kube-scheduler-extra-env: "TZ=America/Los_Angeles"