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.