Kubernetes - Сервис

Сервис можно определить как логический набор модулей. Его можно определить как абстракцию в верхней части модуля, которая предоставляет один IP-адрес и DNS-имя, по которому можно получить доступ к модулям. С помощью службы очень легко управлять конфигурацией балансировки нагрузки. Это помогает легко масштабировать стручки.

Служба - это объект REST в Kubernetes, определение которого можно опубликовать в Kubernetes apiServer на главном сервере Kubernetes для создания нового экземпляра.

Сервис без селектора

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

Приведенная выше конфигурация создаст службу с именем Tutorial_point_service.

Файл конфигурации службы с селектором

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

В этом примере у нас есть селектор; поэтому для передачи трафика нам нужно создать конечную точку вручную.

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

В приведенном выше коде мы создали конечную точку, которая будет направлять трафик к конечной точке, определенной как «192.168.168.40:8080».

Создание многопортовой службы

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

Виды услуг

ClusterIP- Это помогает ограничить службу в кластере. Он предоставляет сервис в рамках определенного кластера Kubernetes.

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

NodePort- Служба будет доступна на статическом порту развернутого узла. АClusterIP сервис, которому NodePortсервис будет маршрутизировать, создается автоматически. Доступ к сервису можно получить извне кластера с помощьюNodeIP:nodePort.

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

Load Balancer - Использует балансировщик нагрузки облачных провайдеров. NodePort и ClusterIP службы создаются автоматически, к которым будет маршрутизироваться внешний балансировщик нагрузки.

Полный сервис yamlфайл с типом службы как Node Port. Попробуйте создать его сами.

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