☸️ Шпаргалка по Kubernetes Service

by itisgood

Вступление

Сервисы(службы) Kubernetes используются для работы ваших модулей за пределами кластера.

Помнить, как написать структуру манифеста службы, может быть сложно, и помимо структуры, просто вспомнить, какой apiVersion нужно использовать в данном случае может быть еще сложнее.

В этом руководстве вы узнаете, как структурировать манифест службы, а также как динамически генерировать его на лету с помощью команды kubectl create.

Манифест сервиса

Типичный манифест конфигурации Kubernetes записывается и сохраняется в виде файла YAML.

Структура такого манифеста будет выглядеть аналогично следующему примеру:

apiVersion: v1
kind: Service
metadata:
  name: hello-world-service
spec:
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http

Настройка службы LoadBalancer

Чтобы создать службу типа балансировщика нагрузки с помощью kubectl, используйте следующую команду.

Флаг –dry-run останавливает отправку запроса kubectl на api-контроллер Kubernetes, а флаг -o yaml указывает kubectl выводить результаты в YAML.

kubectl create service loadbalancer my-service --tcp=80:3000 --dry-run -o yaml
В приведенном выше примере будет создана конфигурация для службы со следующими атрибутами:
  • Тип LoadBalancer
  • Имя hello-world-service
  • Порт 80
  • Внутренний порт 3000
Вывод команды будет выглядеть примерно так:
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: my-service
  name: my-service
spec:
  ports:
  - name: 80-3000
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: my-service
  type: LoadBalancer
status:
  loadBalancer: {}
Перед использованием файла конфигурации потребуется небольшая доработка.
Существует ряд полей, которые не следует хранить в качестве конфигураций для вашего кластера Kubernetes.
apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-service
  name: my-service
spec:
  ports:
  - name: 80-3000
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: my-service
  type: LoadBalancer

Создание службы NodePort

Создание службы NodePort аналогично серверу LoadBalancer, с той лишь разницей, что в команде вместо loadbalancer используется nodeport.

kubectl create service nodeport my-service --tcp=80:3000 --dry-run -o yaml

Создание конфигурации службы ClusterIP

Как и в случае с типом балансировки нагрузки и типом порта узла, тип ClusterIP создается с помощью следующей команды.

kubectl create service clusterip my-service --tcp=80:3000 --dry-run -o yaml

 

You may also like

Leave a Comment