Labels Suportados para Casos de Uso Distintos

Saiba mais sobre os labels que o Kubernetes Engine (OKE) usa ao criar e gerenciar clusters.

O Kubernetes Engine usa vários labels diferentes ao criar e gerenciar clusters, incluindo:

Para obter mais informações sobre labels do Kubernetes, consulte a documentação do Kubernetes.

topology.kubernetes.io/zone

O Kubernetes Engine adiciona automaticamente o label topology.kubernetes.io/zone a cada nó de trabalho (nós gerenciados e nós virtuais) em um cluster, de acordo com o domínio de disponibilidade no qual ele é colocado. (O label topology.kubernetes.io/zone era anteriormente o label failure-domain.beta.kubernetes.io/zone nas versões anteriores do Kubernetes.)

Um domínio de disponibilidade é um ou mais data centers localizados em uma região. Uma região é composta de um ou mais domínios de disponibilidade. Os domínios de disponibilidade são isolados entre si, tolerantes a falhas e raramente apresentam falhas simultaneamente. Consulte Regiões e Domínios de Disponibilidade.

Você pode usar o label topology.kubernetes.io/zone de diferentes maneiras:

  • Você pode usar o label topology.kubernetes.io/zone (em conjunto com o label oci.oraclecloud.com/fault-domain) para restringir os nós de trabalho nos quais executar um pod, no caso de um cluster com nós de trabalho em vários domínios de disponibilidade. Inclua o label topology.kubernetes.io/zone na especificação do pod para especificar o domínio de disponibilidade no qual os nós de trabalho devem ter sido colocados.
  • Você pode usar o label topology.kubernetes.io/zone para especificar o domínio de disponibilidade e a região para provisionar reivindicações de volumes persistentes no serviço Block Volume ao usar o plug-in de volume FlexVolume. Consulte Configurando o Armazenamento para Clusters do Kubernetes.

Quando você especificar um valor para o label topology.kubernetes.io/zone, use a versão reduzida correta do nome do domínio de disponibilidade em uma região do Oracle Cloud Infrastructure.

Na maioria dos casos, as versões curtas dos nomes de domínio de disponibilidade estão no formato <region-identifier>-1-AD-<availability-domain-number>. Por exemplo, UK-LONDON-1-AD-1, UK-LONDON-1-AD-2, UK-LONDON-1-AD-3, AP-MELBOURNE-1-AD-1, ME-JEDDAH-1-AD-1. Para descobrir os identificadores de região e os domínios de disponibilidade a serem usados, consulte Disponibilidade por Região.

Observe que as versões reduzidas dos nomes de domínio de disponibilidade nas regiões Ashburn e Phoenix são exceções, conforme mostrado a seguir:

  • Na região Phoenix, as versões abreviadas dos nomes de domínio de disponibilidade estão no formato PHX-AD-<availability-domain-number>. Por exemplo, PHX-AD-1, PHX-AD-2, PHX-AD-3.
  • Na região Ashburn, as versões abreviadas dos nomes de domínio de disponibilidade estão no formato US-ASHBURN-AD-<availability-domain-number>. Por exemplo, US-ASHBURN-AD-1, US-ASHBURN-AD-2, US-ASHBURN-AD-3.

oci.oraclecloud.com/fault-domain

O Kubernetes Engine adiciona automaticamente o label oci.oraclecloud.com/fault-domain a cada nó de trabalho (nós gerenciados e nós virtuais) em um cluster, de acordo com o domínio de falha no qual ele é colocado.

Domínio de falha é um agrupamento de hardware e infraestrutura que se distingue de outros domínios de falha no mesmo domínios de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha (denominados FAULT-DOMAIN-1, FAULT-DOMAIN-2, FAULT-DOMAIN-3). Cada instância de computação é colocada em um domínio de falha. Consulte Domínios de Falha.

Você pode restringir os nós de trabalho nos quais executar um pod, incluindo o label oci.oraclecloud.com/fault-domain na especificação do pod. Use o label oci.oraclecloud.com/fault-domain para especificar o domínio de falha no qual os nós de trabalho devem ter sido colocados.

Geralmente, você usará o label oci.oraclecloud.com/fault-domain para obter alta disponibilidade quando um cluster estiver localizado em uma região com um único domínio de disponibilidade.

Por exemplo:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
  nodeSelector:
    oci.oraclecloud.com/fault-domain: FAULT-DOMAIN-3

Se você aplicar a especificação de pod de exemplo acima a um cluster, um pod nginx só será criado se o cluster tiver nós de trabalho no FAULT-DOMAIN-3 do domínio de disponibilidade. Se o cluster só tiver nós de trabalho no FAULT-DOMAIN-1 ou FAULT-DOMAIN-2, o pod não será criado e permanecerá com status pendente.

Se um cluster tiver nós de trabalho em vários domínios de disponibilidade, inclua o label failure-domain.beta.kubernetes.io/zone e o label oci.oraclecloud.com/fault-domain em uma especificação de pod para especificar o domínio de disponibilidade e o domínio de falha dos nós de trabalho nos quais executar o pod.

node.kubernetes.io/exclude-from-external-load-balancers

O Kubernetes Engine ativa automaticamente o feature gate ServiceNodeExclusion nos clusters que ele cria. Com o feature gate ServiceNodeExclusion ativado em um cluster, você pode adicionar um label a nós gerenciados específicos para excluí-los da lista de servidores de backend em um conjunto de backend de balanceadores de carga do Oracle Cloud Infrastructure. Quanto menos nós de trabalho incluídos em um conjunto de backend, mais rápido o balanceador de carga poderá ser atualizado.

Para excluir um nó de trabalho da lista de servidores de backend em um conjunto de backend, adicione o label node.kubernetes.io/exclude-from-external-load-balancers ao nó digitando:
kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers=true

Por exemplo:

kubectl label nodes 10.0.1.2 node.kubernetes.io/exclude-from-external-load-balancers=true

Observe que, depois de adicionar o label a um nó, o nó é excluído da lista de servidores de backend, independentemente do valor do label. Por exemplo, mesmo que você especifique node.kubernetes.io/exclude-from-external-load-balancers label=false, o nó de trabalho ainda será excluído da lista de servidores de backend.

Para remover o label do nó, digite:

kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers-

Para excluir todos os nós de um pool de nós da lista de servidores de backend, adicione node.kubernetes.io/exclude-from-external-load-balancers=true à propriedade Rótulos do Kubernetes do pool de nós ao criar ou modificar o pool de nós.

Observe que o label node.kubernetes.io/exclude-from-external-load-balancers não é suportado com nós virtuais.