Como você expõe as portas em Kubernetes?

Como você expõe as portas em Kubernetes?

Para serviços de Kubernetes, várias configurações de porta distintas estão disponíveis, incluindo Port, TargetPort e Nodeport. O serviço Kubernetes é acessível através da porta escolhida do cluster, e outros pods podem se comunicar com este servidor usando a porta configurada. No TargetPort, o serviço enviará solicitações e os pods os ouvirão. Esta porta também precisará ser aberta para o aplicativo do seu contêiner. Se o campo da porta não for fornecido, o Nodeport será usado por padrão. Vamos repassar como expor as portas em Kubernetes neste artigo. Você precisa entender o pod e a implantação para seguir os exercícios práticos sobre este tópico.

Certifique -se de ter o Kubectl instalado. Você também precisará de um cluster de Kubernetes, bem como a ferramenta de linha de comando kubectl configurada para se conectar com ele. Para começar, abra o cluster Minikube, instalado no seu Ubuntu 20.04 LTS OS. Para executar o Minikube, execute o comando de início do minikube na linha de comando.

Crie um arquivo com o comando Touch.

O pod.O arquivo YAML é criado, como mostrado na captura de tela que acompanha.

Agora faça um pod nginx com a seguinte especificação da porta de contêiner:

Como resultado, ele pode ser acessado de qualquer nó em seu cluster. Examine os nós em que o pod está operando e use os comandos abaixo para fazer isso.

Para ver o status completo das vagens Kubernetes, você pode executar o comando Get Pod, como mencionado abaixo.

Com o comando mostrado na captura de tela, você pode verificar os endereços IP de seus pods.

Você pode ssh em qualquer nó que esteja presente em seu cluster e enrolar ambos os endereços IP. Vale a pena notar que os contêineres não usam a porta 80 no nó, e não há regras NAT específicas para direcionar o tráfego para a vagem. Isso significa que você pode executar muitas vagens nginx no mesmo nó, cada uma com sua porta de contêiner, e acessá -las através de IP de qualquer outra vagem ou nó no cluster. As portas ainda podem ser expostas às interfaces do nó do host, assim como o Docker, embora esse requisito seja bastante reduzido devido ao modelo de rede.

Como criar um serviço?

Então, em um espaço de endereço plano e plano, temos vagens executando o nginx. Você poderia teoricamente se comunicar diretamente com essas vagens, mas o que acontece se um deles morrer? Os pods perecerão como resultado, e a implantação gerará novos com endereços IP alternativos. O problema que um serviço resolve é este.

Um serviço Kubernetes é um conjunto lógico de vagens que fazem a mesma tarefa e correm em algum lugar do seu cluster. Quando um serviço é criado, ele recebe um endereço IP específico e esse endereço é corrigido ao longo da existência do serviço e não vai mudar. As vagens podem ser definidas para se comunicar com o serviço, com a certeza de que a comunicação será balanceada para um membro do serviço de serviço. Com a exposição de Kubectl, você pode criar um serviço para suas duas réplicas NGINX:

Um conjunto de pods suporta um serviço. Os terminais fornecem acesso a essas vagens. A seleção do serviço será avaliada regularmente, com os resultados publicados em um objeto de terminais chamados my-nginx. Se uma vagem morrer, é separada dos pontos de extremidade. Depois disso, é substituído por novos pods com o mesmo seletor.

Como acessar o serviço?

Variáveis ​​de ambiente e DNs são os dois métodos básicos para encontrar um serviço em Kubernetes. O primeiro exige o addon do cluster do COREDNS, enquanto o último não.

variáveis ​​ambientais

O Kubelet cria uma coleção de variáveis ​​de ambiente para cada serviço atual quando uma vagem é iniciada em um nó. Como resultado, pode haver dificuldade no processo de ordem. Examine o ambiente de suas vagens nginx em execução (o nome da sua vagem será diferente) para entender o porquê:

$ KUBECTL EXEC MY-NGINX-3800858182-JR4A2-PIMERNV | Serviço Grep

Vale a pena notar que seu serviço não é mencionado. Porque você fez as réplicas antes do serviço, esse é o caso. Esta etapa pode reduzir todo o seu serviço se não funcionasse. Destruindo os dois pods e esperando a implantação para recriá -los, podemos concluir a tarefa corretamente. O serviço está presente antes das réplicas desta vez. Isso fornecerá a você o serviço de nível de agendamento que se espalha para suas vagens, bem como as variáveis ​​de ambiente apropriadas:

Dns

Kubernetes possui um serviço de addon de cluster DNS que atribui nomes de DNS a outros serviços automaticamente. Você pode ver se está sendo executado em seu cluster executando o seguinte comando:

$ kubectl Get Services Kube-DNS-Namespace = Kube-System

Conclusão

Neste artigo, você aprendeu que, para os Serviços Kubernetes, existem várias configurações de porta distintas disponíveis, incluindo Port, TargetPort e Nodeport. Além disso, incluímos uma descrição completa de como você pode expor com sucesso as portas em Kubernetes.