Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

SUSE® Rancher Prime: K3s Referência de Configuração do Cluster

Esta seção abrange as opções de configuração disponíveis no Rancher para um cluster K3s Kubernetes novo ou existente.

Visão Geral

Você pode configurar as opções do Kubernetes de duas maneiras:

  • Interface do Rancher: Use a interface do Rancher para selecionar opções que são comumente personalizadas ao configurar um cluster Kubernetes.

  • Arquivo de Configuração do Cluster: Em vez de usar a interface do Rancher para escolher opções do Kubernetes para o cluster, usuários avançados podem criar um arquivo de configuração K3s. Usar um arquivo de configuração permite que você defina qualquer uma das opções disponíveis durante uma instalação do K3s.

Editando clusters na Interface do Rancher

A interface do Rancher fornece duas maneiras de editar um cluster:

  1. Com um formulário.

  2. Com YAML.

Editando clusters com um Formulário

O formulário abrange as opções mais frequentemente necessárias para clusters.

Para editar seu cluster,

  1. Clique em ☰ > Gerenciamento de Cluster.

  2. Vá para o cluster que você deseja configurar e clique em ⋮ > Editar Configuração.

Editando Clusters em YAML

Para uma referência completa das opções configuráveis para clusters K3s em YAML, consulte a documentação do K3s.

Para editar seu cluster com YAML:

  1. Clique em ☰ > Gerenciamento de Cluster.

  2. Vá para o cluster que você deseja configurar e clique em ⋮ > Editar como YAML.

  3. Edite as opções do RKE sob a diretiva rkeConfig.

Opções de Configuração na Interface do Rancher

Configuração do Pool de Máquinas

Esta subseção abrange configurações genéricas de pool de máquinas. Para configurações específicas de provedores de infraestrutura, consulte o seguinte:

Nome do pool

O nome do pool de máquinas.

Contagem de Máquinas

O número de máquinas no pool.

Funções

Opção para atribuir funções de etcd, plano de controle e trabalhador aos nós.

Avançado

Substituição Automática

A quantidade de tempo que os nós podem ficar inacessíveis antes de serem automaticamente excluídos e substituídos.

Drenar Antes de Excluir

Habilita a drenagem dos nós, expulsando todos os pods antes que o nó seja excluído.

Rótulos de Nó do Kubernetes

Adicione rótulos aos nós para ajudar na organização e seleção de objetos.

Para detalhes sobre os requisitos de sintaxe de rótulos, consulte a documentação do Kubernetes.

Taints

Adicione taints aos nós, para evitar que pods sejam agendados ou executados nos nós, a menos que os pods tenham tolerâncias correspondentes.

Configuração do Cluster

Noções básicas

Kubernetes Version

A versão do Kubernetes instalada em seus nós de cluster.

Para detalhes sobre como atualizar ou reverter o Kubernetes, consulte Atualizando o Kubernetes.

Modelo de Configuração de Admissão de Segurança de Pod
Criptografar Segredos

Opção para habilitar ou desabilitar a criptografia de segredos. Quando habilitado, os segredos são criptografados usando uma chave AES-CBC. Se desabilitado, segredos criptografados anteriormente não são legíveis até que a criptografia seja habilitada novamente. Consulte a documentação do K3s para detalhes.

Isolamento de Rede do Projeto

Se seu provedor de rede permitir isolamento de rede do projeto, você pode escolher habilitar ou desabilitar a comunicação entre projetos.

SELinux

Opção para habilitar ou desabilitar o suporte a SELinux.

CoreDNS

Por padrão, CoreDNS é instalado como o provedor de DNS padrão. Se o CoreDNS não estiver instalado, um provedor de DNS alternativo deve ser instalado por você mesmo. Consulte a documentação do K3s para detalhes.

Klipper Service LB

Opção para habilitar ou desabilitar o balanceador de carga do serviço Klipper. Consulte a documentação do K3s para detalhes.

Traefik Ingress

Opção para habilitar ou desabilitar o proxy reverso HTTP e balanceador de carga Traefik. Para mais detalhes e opções de configuração, consulte a documentação do K3s.

Armazenamento local

Opção para habilitar ou desabilitar o armazenamento local no(s) nó(s).

Servidor de Métricas

Opção para habilitar ou desabilitar o servidor de métricas. Se habilitado, certifique-se de que a porta 10250 esteja aberta para tráfego TCP de entrada.

Configuração de Complemento

Manifests adicionais do Kubernetes, gerenciados como um complemento, a serem aplicados ao cluster na inicialização. Consulte a documentação do K3s para detalhes.

Variáveis de Ambiente do Agente

Opção para definir variáveis de ambiente para agentes do K3s. As variáveis de ambiente podem ser definidas usando pares de chave e valor. Consulte a documentação do K3 para mais detalhes.

etcd

Instantâneos Automáticos

Opção para habilitar ou desabilitar instantâneos recorrentes do etcd. Se habilitado, os usuários têm a opção de configurar a frequência dos instantâneos. Para detalhes, consulte a documentação do K3s.

Métricas

Opção para escolher se deve expor métricas do etcd ao público ou apenas dentro do cluster.

Projeto de Rede

CIDR do Cluster

CIDRs de rede IPv4/IPv6 a serem usados para IPs de pod (padrão: 10.42.0.0/16).

Valores de exemplo:

  • Somente IPv4: 10.42.0.0/16

  • Apenas IPv6: 2001:cafe:42::/56

  • Pilha dupla: 10.42.0.0/16,2001:cafe:42::/56

Para requisitos e limitações adicionais relacionados à rede dual-stack ou apenas IPv6, consulte os seguintes recursos:

Você deve configurar o Service CIDR quando criar o cluster pela primeira vez. Você não pode habilitar o Service CIDR em um cluster existente após ele ser iniciado.

Service CIDR

CIDRs de rede IPv4/IPv6 a serem usados para IPs de serviço (padrão: 10.43.0.0/16).

Valores de exemplo:

  • Somente IPv4: 10.43.0.0/16

  • Apenas IPv6: 2001:cafe:43::/112

  • Pilha dupla: 10.43.0.0/16,2001:cafe:43::/112

Para requisitos e limitações adicionais relacionados à rede dual-stack ou apenas IPv6, consulte os seguintes recursos:

Você deve configurar o Service CIDR quando criar o cluster pela primeira vez. Você não pode habilitar o Service CIDR em um cluster existente após ele ser iniciado.

Cluster DNS

IP de cluster IPv4 para o serviço coredns. Deve estar na sua faixa de service-cidr (padrão: 10.43.0.10).

Domínio do Cluster

Selecione o domínio para o cluster. O padrão é cluster.local.

Faixa de Portas do Serviço NodePort

Opção para alterar a faixa de portas que podem ser usadas para serviços NodePort. O padrão é 30000-32767.

Truncar Nomes de Host

Opção para truncar nomes de host para 15 caracteres ou menos. Você só pode definir este campo durante a criação inicial do cluster. Você não pode habilitar ou desabilitar o limite de 15 caracteres após a criação do cluster.

Esta configuração afeta apenas clusters provisionados por máquinas. Como clusters personalizados definem nomes de host durante seu próprio processo de criação de nós, que ocorre fora do Rancher, este campo não restringe o comprimento do nome de host do cluster personalizado.

Truncar nomes de host em um cluster melhora a compatibilidade com sistemas baseados em Windows. Embora o Kubernetes permita nomes de host com até 63 caracteres, sistemas que usam NetBIOS restringem os nomes de host a 15 caracteres ou menos.

Nomes Alternativos TLS

Adicione nomes de host ou endereços IPv4/IPv6 como Nomes Alternativos do Sujeito no certificado TLS do servidor.

Preferência de Pilha

Escolha a pilha de rede para o cluster. Esta opção afeta:

  • O endereço usado para sondagens de saúde e prontidão de componentes como Calico, etcd, kube-apiserver, kube-scheduler, kube-controller-manager e kubelet.

  • A URL do servidor no authentication-token-webhook-config-file para o Ponto de Extremidade do Cluster Autorizado.

  • A configuração advertise-client-urls para etcd durante a restauração do instantâneo.

As opções são ipv4, ipv6, dual:

  • Quando definido como ipv4, o cluster usa 127.0.0.1

  • Quando definido como ipv6, o cluster usa [::1]

  • Quando definido como dual, o cluster usa localhost

A preferência de pilha deve corresponder à configuração de rede do cluster:

  • Defina como ipv4 para clusters apenas IPv4

  • Defina como ipv6 para clusters apenas IPv6

  • Defina como dual para clusters de pilha dupla

Garantir que a configuração do endereço de loopback esteja correta é fundamental para o provisionamento bem-sucedido do cluster. Para mais informações, consulte a página Requisitos do Nó.

Ponto de Extremidade do Cluster Autorizado

O Ponto de Extremidade do Cluster Autorizado pode ser usado para acessar diretamente o servidor API do Kubernetes, sem exigir comunicação através do Rancher.

Para mais detalhes sobre como um endpoint de cluster autorizado funciona e por que é utilizado, consulte a seção de arquitetura.

Recomendamos o uso de um balanceador de carga com o endpoint de cluster autorizado. Para detalhes, consulte a seção de arquitetura recomendada.

Registros

Selecione o repositório de imagens para puxar imagens do Rancher. Para mais detalhes e opções de configuração, consulte a documentação do K3s.

Estratégia de fazer upgrade

Concorrência do Plano de Controle

Selecione quantos nós podem fazer upgrade ao mesmo tempo. Pode ser um número fixo ou uma porcentagem.

Concorrência de Trabalhadores

Selecione quantos nós podem fazer upgrade ao mesmo tempo. Pode ser um número fixo ou uma porcentagem.

Drenar Nós (Plano de Controle)

Opção para remover todos os pods do nó antes de fazer upgrade.

Drenar Nós (Nós de Trabalho)

Opção para remover todos os pods do nó antes de fazer upgrade.

Avançado

Opção para definir opções do kubelet para diferentes nós. Para opções disponíveis, consulte a documentação do Kubernetes.

Referência do Arquivo de Configuração do Cluster

Editar clusters em YAML permite que você defina configurações que já estão listadas em Opções de Configuração na UI do Rancher, além de definir parâmetros específicos do Rancher.

Clique para Expandir Exemplo de Trecho de Arquivo de Configuração do Cluster

apiVersion: provisioning.cattle.io/v1 kind: Cluster
spec:
cloudCredentialSecretName: cattle-global-data:cc-fllv6
clusterAgentDeploymentCustomization: {}
fleetAgentDeploymentCustomization: {}
kubernetesVersion: v1.26.7+k3s1
localClusterAuthEndpoint: {}
rkeConfig:
additionalManifest: ""
chartValues: {}
etcd:
snapshotRetention: 5
snapshotScheduleCron: 0 */5 * * *
machineGlobalConfig:
disable-apiserver: false
disable-cloud-controller: false
disable-controller-manager: false
disable-etcd: false
disable-kube-proxy: false
disable-network-policy: false
disable-scheduler: false
etcd-expose-metrics: false
kube-apiserver-arg:
- audit-policy-file=/etc/rancher/k3s/user-audit-policy.yaml
- audit-log-path=/etc/rancher/k3s/user-audit.logs
profile: null
secrets-encryption: false
machinePools:
- controlPlaneRole: true
etcdRole: true
machineConfigRef:
kind: Amazonec2Config
name: nc-test-pool1-pwl5h
name: pool1
quantity: 1
unhealthyNodeTimeout: 0s
workerRole: true
machineSelectorConfig:
- config:
docker: false
protect-kernel-defaults: false
selinux: false
machineSelectorFiles:
- fileSources:
- configMap:
name: ''
secret:
name: audit-policy
items:
- key: audit-policy
path: /etc/rancher/k3s/user-audit-policy.yaml
machineLabelSelector:
matchLabels:
rke.cattle.io/control-plane-role: 'true'
registries: {}
upgradeStrategy:
controlPlaneConcurrency: '1'
controlPlaneDrainOptions:
deleteEmptyDirData: true
disableEviction: false
enabled: false
force: false
gracePeriod: -1
ignoreDaemonSets: true
ignoreErrors: false
postDrainHooks: null
preDrainHooks: null
skipWaitForDeleteTimeoutSeconds: 0
timeout: 120 workerConcurrency: '1'
workerDrainOptions:
deleteEmptyDirData: true
disableEviction: false
enabled: false
force: false
gracePeriod: -1
ignoreDaemonSets: true
ignoreErrors: false
postDrainHooks: null
preDrainHooks: null
skipWaitForDeleteTimeoutSeconds: 0
timeout: 120

additionalManifest

Especifique manifestos adicionais a serem entregues aos nós do plano de controle.

O valor é uma String e será colocado no caminho /var/lib/rancher/k3s/server/manifests/rancher/addons.yaml nos nós de destino.

Exemplo:

additionalManifest: |-
  apiVersion: v1
  kind: Namespace
  metadata:
    name: name-xxxx

Se você quiser personalizar gráficos do sistema, deve usar o campo chartValues conforme descrito abaixo.

Alternativas, como usar um HelmChartConfig para personalizar os gráficos do sistema via additionalManifest, podem causar comportamentos inesperados, devido a ter múltiplos HelmChartConfigs para o mesmo gráfico.

chartValues

Especifique os valores para os gráficos do sistema instalados pelo K3s.

Para mais informações sobre como o K3s gerencia componentes empacotados, consulte K3s documentação.

Exemplo:

chartValues:
    chart-name:
        key: value

machineGlobalConfig

Especifique as configurações do K3s. Qualquer alteração de configuração feita aqui se aplicará a todos os nós. As opções de configuração disponíveis na versão autônoma do k3s podem ser aplicadas aqui.

Exemplo:

machineGlobalConfig:
    etcd-arg:
        - key1=value1
        - key2=value2

Para facilitar a colocação de arquivos nos nós com antecedência, o Rancher espera que os seguintes valores sejam incluídos na configuração, enquanto o K3s espera que os valores sejam inseridos como caminhos de arquivo:

  • registro-privado

  • flannel-conf

O Rancher entrega os arquivos para o caminho /var/lib/rancher/k3s/etc/config-files/<option> nos nós de destino e define as opções adequadas no servidor K3s.

Exemplo:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      private-registry: |
        mirrors:
          docker.io:
            endpoint:
              - "http://mycustomreg.com:5000"
        configs:
          "mycustomreg:5000":
            auth:
              username: xxxxxx # this is the registry username
              password: xxxxxx # this is the registry password

machineSelectorConfig

machineSelectorConfig é o mesmo que machineGlobalConfig, exceto que um seletor de rótulo pode ser especificado com a configuração. A configuração será aplicada apenas aos nós que correspondem ao seletor de rótulo fornecido.

Várias entradas de config são permitidas, cada uma especificando seu próprio machineLabelSelector. Um usuário pode especificar matchExpressions, matchLabels, ambos ou nenhum. Omitir a seção machineLabelSelector deste campo tem o mesmo efeito que colocar a configuração na seção machineGlobalConfig.

Exemplo:

machineSelectorConfig
  - config:
      config-key: config-value
    machineLabelSelector:
      matchExpressions:
        - key: example-key
          operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
          values:
            - example-value1
            - example-value2
      matchLabels:
        key1: value1
        key2: value2

machineSelectorFiles

Este recurso está disponível no Rancher v2.7.2 e versões posteriores.

Entregar arquivos aos nós, para que os arquivos possam estar no lugar antes de iniciar os processos do servidor ou agente K3s. O conteúdo do arquivo é recuperado de um segredo ou de um configmap. Os nós de destino são filtrados pelo machineLabelSelector.

Exemplo:

machineSelectorFiles:
  - fileSources:
      - secret:
          items:
            - key: example-key
              path: path-to-put-the-file-on-nodes
              permissions: 644 (optional)
              hash: base64-encoded-hash-of-the-content (optional)
          name: example-secret-name
    machineLabelSelector:
      matchExpressions:
        - key: example-key
          operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
          values:
            - example-value1
            - example-value2
      matchLabels:
        key1: value1
        key2: value2
  - fileSources:
      - configMap:
          items:
            - key: example-key
              path: path-to-put-the-file-on-nodes
              permissions: 644 (optional)
              hash: base64-encoded-hash-of-the-content (optional)
          name: example-configmap-name
    machineLabelSelector:
      matchExpressions:
        - key: example-key
          operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
          values:
            - example-value1
            - example-value2
      matchLabels:
        key1: value1
        key2: value2

O segredo ou configmap deve atender aos seguintes requisitos:

  1. Deve estar no namespace fleet-default onde o objeto Cluster existe.

  2. Deve ter a anotação rke.cattle.io/object-authorized-for-clusters: cluster-name1,cluster-name2, que permite que os clusters de destino o utilizem.

O Rancher Dashboard fornece um formulário fácil de usar para criar o segredo ou configmap.

Exemplo:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: name1
  namespace: fleet-default