Kubernetes - Serviço

Um serviço pode ser definido como um conjunto lógico de pods. Ele pode ser definido como uma abstração na parte superior do pod que fornece um único endereço IP e nome DNS pelo qual os pods podem ser acessados. Com o Service, é muito fácil gerenciar a configuração de balanceamento de carga. Ajuda os pods a escalar facilmente.

Um serviço é um objeto REST no Kubernetes, cuja definição pode ser postada no Kubernetes apiServer no mestre do Kubernetes para criar uma nova instância.

Serviço sem seletor

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   ports:
   - port: 8080
   targetPort: 31999

A configuração acima criará um serviço com o nome Tutorial_point_service.

Arquivo de configuração de serviço com seletor

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   selector:
      application: "My Application" -------------------> (Selector)
   ports:
   - port: 8080
   targetPort: 31999

Neste exemplo, temos um seletor; então, para transferir o tráfego, precisamos criar um endpoint manualmente.

apiVersion: v1
kind: Endpoints
metadata:
   name: Tutorial_point_service
subnets:
   address:
      "ip": "192.168.168.40" -------------------> (Selector)
   ports:
      - port: 8080

No código acima, criamos um endpoint que roteará o tráfego para o endpoint definido como “192.168.168.40:8080”.

Criação de serviço multiporta

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   selector:
      application: “My Application” -------------------> (Selector)
   ClusterIP: 10.3.0.12
   ports:
      -name: http
      protocol: TCP
      port: 80
      targetPort: 31999
   -name:https
      Protocol: TCP
      Port: 443
      targetPort: 31998

Tipos de serviços

ClusterIP- Isso ajuda a restringir o serviço dentro do cluster. Ele expõe o serviço dentro do cluster Kubernetes definido.

spec:
   type: NodePort
   ports:
   - port: 8080
      nodePort: 31999
      name: NodeportService

NodePort- Exporá o serviço em uma porta estática no nó implantado. UMAClusterIP serviço, para o qual NodePortserviço irá rotear, é criado automaticamente. O serviço pode ser acessado de fora do cluster usando oNodeIP:nodePort.

spec:
   ports:
   - port: 8080
      nodePort: 31999
      name: NodeportService
      clusterIP: 10.20.30.40

Load Balancer - Ele usa o balanceador de carga dos provedores de nuvem. NodePort e ClusterIP serviços são criados automaticamente para os quais o balanceador de carga externo irá rotear.

Um serviço completo yamlarquivo com tipo de serviço como Node Port. Tente criar um você mesmo.

apiVersion: v1
kind: Service
metadata:
   name: appname
   labels:
      k8s-app: appname
spec:
   type: NodePort
   ports:
   - port: 8080
      nodePort: 31999
      name: omninginx
   selector:
      k8s-app: appname
      component: nginx
      env: env_name