Clusterip, nodeport ou insrs? Quando usar cada um: Cloudsavvy It

O Kubernetes oferece suporte a várias maneiras de trazer tráfego externo para seu cluster. ClusterIP, NodePort e Ingress são três recursos amplamente usados ​​que desempenham um papel no roteamento de tráfego. Cada um permite que você exponha serviços com um conjunto exclusivo de recursos e compensações.

índice

  1. O básico
  2. cluster de IP
  3. NodePort
  4. Entrada
  5. balanceadores de carga
  6. Conclusão

O básico

As cargas de trabalho do Kubernetes não são visíveis na rede por padrão. Disponibilize contêineres para o mundo externo criando um Service . Os recursos de serviço roteiam o tráfego para contêineres nos pods.

Um serviço é um mecanismo abstrato para expor pods em uma rede. Cada serviço é atribuído a um tipo: ClusterIP, NodePort ou LoadBalancer. Eles definem como o tráfego externo chega ao serviço.

cluster de IP

ClusterIP é o serviço padrão do Kubernetes. Seu serviço será exposto em um ClusterIP, a menos que você defina manualmente outro tipo.

Um ClusterIP fornece conectividade de rede em seu cluster. Normalmente não é possível acessá-lo do lado de fora. Você usa esses serviços para sua rede interna entre suas cargas de trabalho.

 apiVersion : v1 kind : Service spec : selector : app : my-app type : ClusterIP ports : - name : http port : 80 targetPort : 80 protocol : TCP

Este manifesto de amostra define um serviço ClusterIP. O tráfego para a porta 80 no ClusterIP será encaminhado para a porta 80 em seus pods ( targetPort ). Pods com o app: my-app é adicionado ao serviço.

Você pode ver o endereço IP que foi atribuído executando kubectl get services . Outras cargas de trabalho em seu cluster podem usar esse endereço IP para interagir com seu serviço.

Você pode definir manualmente um ClusterIP para um endereço IP específico usando o campo spec.clusterIp :

 spec : type : ClusterIP clusterIp : 123.123.123.123

O valor clusterIp deve ser um endereço IP válido dentro do intervalo configurado para o cluster. Isso é definido por service-cluster-ip-range no servidor de API do Kubernetes.

NodePort

Um NodePort expõe publicamente um serviço em um número de porta fixo. Permite acessar o serviço de fora do cluster. Você deve usar o endereço IP do cluster e o número NodePort – por exemplo 123.123.123.123:30000 .

A criação de um NodePort abrirá essa porta em todos os nós do cluster. O Kubernetes roteará automaticamente o tráfego da porta para o serviço ao qual está conectado.

Aqui está um exemplo de um manifesto de serviço NodePort:

 apiVersion : v1 kind : Service spec : selector : app : my-app type : NodePort ports : - name : http port : 80 targetPort : 80 protocol : TCP

As definições de NodePort têm as mesmas propriedades obrigatórias que os serviços ClusterIP. A única diferença é a mudança no type: NodePort . O targetPort ainda é necessário, pois os NodePorts oferecem suporte a um serviço ClusterIP.

O aplicativo de manifesto acima atribuirá ao NodePort um número de porta aleatório do intervalo disponível para o Kubernetes. Esta é geralmente a configuração padrão nas portas 30000-32767. Você pode especificar manualmente uma porta definindo o campo ports.nodePort :

 spec: ports:-name: http port: 80 targetPort: 80 nodePort: 32000 protocol: TCP

Isso roteará o tráfego na porta 32000 para a porta 80 em seus pods.

Os NodePorts geralmente não são ideais para serviços públicos. Eles usam portas não padrão, que não são adequadas para a maioria do tráfego HTTP. Você pode usar um NodePort para configurar rapidamente um serviço para desenvolvimento ou para expor um serviço TCP ou UDP em sua própria porta. Ao oferecer um ambiente de produção para seus usuários, recomendamos que você use uma alternativa.

Entrada

Um Ingress é, na verdade, um recurso completamente diferente de um serviço. Normalmente, você usa o Ingress na frente de seus serviços para fornecer a configuração de roteamento HTTP. Eles permitem que você configure URLs externos, hosts virtuais baseados em domínio, SSL e balanceamento de carga.

A configuração de login requer a existência de um controlador de login no cluster. Há uma grande variedade de drivers disponíveis. A maioria dos principais provedores de nuvem tem seu próprio controlador de gateway que se integra à infraestrutura de balanceamento de carga. nginx-ingress é uma opção autônoma popular que usa o servidor web NGINX como um proxy reverso para obter tráfego para seus serviços.

Você cria o Ingress usando o tipo de recurso Ingress . A kubernetes.io/ingress.class permite indicar o tipo de entrada que você está criando. Isso é útil se você estiver executando vários controladores de cluster.

 apiVersion : networking.k8s.io/v1beta1 kind : Ingress metadata : name : my-ingress annotations : kubernetes.io/ingress.class : nginx spec : rules : - host : example.com http : paths : - path : / backend : serviceName : my-service servicePort : 80 - host : another-example.com http : paths : - path : / backend : serviceName : second-service servicePort : 80

Este manifesto define dois endpoints do Ingress. O primeiro host das regras example.com direciona o tráfego para a porta 80 no my-service . A segunda regra configura another-example.com para mapear para pods que fazem parte do second-service .

Você pode configurar o SSL definindo o campo tls na spec do seu Ingress:

 spec : tls : - hosts : - example.com - another-example.com

Você precisará de um Publicador como o Gerenciador de certificados em seu cluster para que funcione. O emissor adquire certificados SSL para seus domínios ao criar seu Ingress.

As entradas devem ser usadas quando você deseja manipular o tráfego de vários domínios e caminhos de URL. Configure seus endpoints usando instruções declarativas. O controlador do Ingress fornecerá suas rotas e as atribuirá aos serviços.

balanceadores de carga

Um tipo de serviço final é LoadBalancer. Esses serviços se integram automaticamente aos balanceadores de carga fornecidos por ambientes de nuvem pública. Você precisará configurar seu balanceamento de carga se estiver hospedando seu cluster por conta própria.

Os balanceadores de carga são usados ​​para atribuir endereços IP externos a serviços em seu cluster. Ao contrário do Ingress, não há filtros ou rotas automáticas. O tráfego para o IP externo e a porta será enviado diretamente para o seu serviço. Isso significa que eles são adequados para todos os tipos de tráfego.

A implementação de cada balanceador de carga depende do fornecedor. Algumas plataformas de nuvem oferecem mais recursos do que outras. Observe que a criação de um balanceador de carga geralmente aplicará custos adicionais à sua fatura.

 apiVersion : v1 kind : Service spec : selector : app : my-app type : LoadBalancer loadBalancerIP : 123.123.123.123 ports : - name : http port : 80 targetPort : 80 protocol : TCP

Os manifestos do balanceador de carga são semelhantes aos outros tipos de serviços. O tráfego para o balanceador de carga de port que você define será recebido pelo targetPort em seus pods.

Seu ambiente de nuvem criará um novo balanceador de carga para lidar com seu tráfego. Alguns provedores permitem que você solicite um endereço IP externo específico usando o campo spec.loadBalancerIP . Você receberá um IP aleatório quando não for suportado.

Conclusão

ClusterIP, NodePort, Ingress e Load Balancer roteiam o tráfego externo para os serviços de cluster. Cada um é projetado para um caso de uso diferente. Alguns de seus serviços farão mais sentido com um NodePort, enquanto outros precisarão de um Ingress, geralmente quando você deseja fornecer uma URL.

Todas as quatro opções funcionam em conjunto com o conceito mais amplo de "Serviço". Eles são os gatekeepers que permitem o acesso à rede aos seus serviços. Esses serviços lidam com o último salto em seus pods. Os dois níveis de abstração mantêm o roteamento completamente desacoplado de suas cargas de trabalho: seus pods simplesmente expõem as portas, que os serviços disponibilizam ao público.

  • Estes três novos portáteis finos e leves da Acer são perfeitos para trabalhadores híbridos
  • A assinatura do Lime Prime remove as taxas de desbloqueio e aumenta as reservas de scooters

descubra mais conteúdo

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão Geek

O que é uma carga fantasma?

Deixe uma resposta Cancelar resposta

O que é um NodePort?

Como o próprio nome sugere, NodePort é o acesso através de uma porta dos nós, que são as máquinas que compõem seu cluster.

O que é um serviço do Kubernetes?

No Kubernetes , um Service é uma abstração que define um conjunto lógico de Pods e uma política para acessá-los (às vezes esse padrão é chamado de microsserviço ). O conjunto de pods para os quais um serviço aponta geralmente é determinado por um seletor.

O que é uma implantação no Kubernetes?

Por exemplo, uma implantação do Kubernetes é um objeto que pode representar um aplicativo em seu cluster. Ao criar o Deployment , você pode especificar na especificação Deployment que deseja executar três réplicas do aplicativo.

Ir arriba