Kubernetes MatchLabels

Kubernetes MatchLabels
Neste post, discutiremos principalmente rótulos, labelamentos de fósforos e seletores e como eles serão usados ​​em vagens, serviços e implantações. Você saberá como os itens Kubernetes, como Jó, Implantação, Replica Set e Daemon Set, empregam essas idéias quando você as entender. Então, vamos começar com a definição de rótulos e matchlabels.

O que são rótulos e lascas de matchs?

Dentro de Kubernetes, os rótulos são uma peça de metadados -chave/valor de metadados vinculada a um objeto. Informações adicionais sobre a coisa relevante para o consumidor ou objeto são fornecidas via etiquetas. Por exemplo, um rótulo pode identificar as especificações de hardware de um nó ou se uma carga de trabalho é para testes de produção.

Os rótulos servem como uma técnica de agrupamento implícito para objetos semelhantes, além de oferecer um mecanismo de pesquisa para usuários, controladores e outros sistemas.

Os rótulos permitem que os usuários mapeie seus próprios sistemas organizacionais para os itens do sistema de maneira vagamente conectada sem exigir que os clientes salvam os mapeamentos.

Entidades multidimensionais, como implantações de serviço, bem como oleodutos de processamento de lote são comuns. Ações transversais são frequentemente necessárias na gestão, o que prejudica o encapsulamento de representações rigorosamente hierárquicas, particularmente hierarquias inflexíveis ditadas por infraestrutura em vez de usuários.

MatchLabels são um tipo de mapa de pares de valor-chave. Um único par de valores de chave no mapa do MatchLabels corresponde a um elemento de MatchExpressions com o campo principal "Key", o operador "in" e apenas "valor" na matriz de valores. Uma coleção de requisitos de seletor de pod é chamada de MatchExpressions.

Existe, existe, não existe e notin são todos operadores válidos e necessários. No caso de 'in' e 'notin', verifique se os valores definidos não estão vazios. Todos os requisitos de MatchLabels e MatchExpressions são e todos devem ser atendidos para combinar.

Pré -requisito:

Precisamos instalar o Ubuntu 20.04 Para colocar em prática o conhecimento teórico e executar as instruções em Kubernetes. Os comandos Kubectl são executados no sistema operacional Linux neste exemplo. Para executar o Kubernetes no Linux, instale o cluster Minikube. O Minikube facilita a compreensão, fornecendo um mecanismo eficiente para testar comandos e aplicativos.

Executamos o comando "Minikube Start" no terminal para inicializar o minikube. Este comando lança o cluster Kubernetes e cria uma máquina virtual capaz de execução de cluster. Ele também se conectará com o cluster usando a instalação Kubectl. A saída do comando "Minikube Inict" é retratada abaixo.

Criando uma implantação

Neste exemplo, criamos duas implantações. Um para um serviço da Web que é executado em infraestrutura interna e outra na infraestrutura DMZ. A implantação inicial (denominada Dep11.yaml) é feito, como mostrado abaixo.

Aqui está todo o DEP11.Arquivo de configuração YAML, que inclui o campo MatchLabels.

O comando para criar o pod é o seguinte.

A implantação (chamada: Dep12.yaml) que opera na infraestrutura DMZ é mostrada abaixo.

Todo o arquivo de configuração pode ser encontrado abaixo.

Quando os pods são implantados, eles têm os rótulos Run = Nginx. Vários rótulos são possíveis para um objeto; No entanto, vários rótulos com a mesma chave não são. Se houver várias entradas de etiquetas com a mesma chave em um manifesto de objeto, o último valor será usado.

A tag seletor pode ser vista aqui, que a implantação utiliza para se comunicar com seus pods. O campo seletor da implantação especifica como ele determina quais pods gerenciar. Você precisa selecionar um rótulo primeiro no modelo de pod. Regras de seleção mais complicadas também foram possíveis se o modelo de pod se ajustasse aos critérios. Aqui está o comando para criar o pod.

Para ver os rótulos de um pod, use o subcomando Get:

Os pods lançados usando os manifestos de implantação acima são mostrados no bloco de código abaixo. A etiqueta de poder-template-hash é aplicada automaticamente pelo controlador de implantação.

As vagens fornecidas pelo Kubectl Get PODs podem ser filtradas usando um ou mais parâmetros -selecionadores. Na saída, os rótulos são apresentados como uma coluna adicional.

Para obter vagens nginx internas, use vários seletores.

O controlador de implantação usa um seletor para determinar quais vagens estão incluídas em uma implantação. Um objeto REPLICASET é criado quando uma implantação é criada, e o controlador de replicação o monitora para garantir que o número de pods operando corresponda ao número planejado.

Nossas implantações atualmente têm quatro pods em um estado pronto.

A configuração de um replicaSet é mostrada abaixo.

Aqui está o restante da saída do código aéreo.

Vamos mudar um dos rótulos em uma vagem, de modo que não corresponda mais ao nosso seletor. Confira as especificações do MatchLabels para ver o que acontece.

Depois de alterar a etiqueta de execução no pod e implantar outra vagem para resolver o problema, o controlador de réplica só conseguiu localizar três vagens operando usando a seleção de MatchLabel.

Para confirmar que a implantação foi criada, execute a instrução 'Kubectl Get Implements'. Os campos a seguir são apresentados quando você inspeciona as implantações em seu cluster: nome, pronto, atualizado, disponível e idade.

Como você pode ver abaixo, utilizamos vários critérios para adquirir pods internos nginx.

Conclusão:

Este artigo esclareceu as diferenças entre rótulos e matchlabels. Já vimos os benefícios de empregar rótulos. Os recursos de categorização e filtragem dos rótulos de Kubernetes são fantásticos, como você pode ver acima. O uso de etiquetas tornará seus logs mais relevantes, as ferramentas de monitoramento permitirão escolher certas cargas de trabalho de interesse, e o Bash Script fornecerá uma gama maior de dados para lidar com.