Thank you for reading this post, don't forget to subscribe!
Сервисы(службы) Kubernetes используются для работы ваших модулей за пределами кластера.
Помнить, как написать структуру манифеста службы, может быть сложно, и помимо структуры, просто вспомнить, какой apiVersion нужно использовать в данном случае может быть еще сложнее.
В этом руководстве вы узнаете, как структурировать манифест службы, а также как динамически генерировать его на лету с помощью команды kubectl create.
Манифест сервиса
Типичный манифест конфигурации Kubernetes записывается и сохраняется в виде файла YAML.
Структура такого манифеста будет выглядеть аналогично следующему примеру:
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 |
[/codesyntax]
Настройка службы LoadBalancer
Чтобы создать службу типа балансировщика нагрузки с помощью kubectl, используйте следующую команду.
Флаг —dry-run останавливает отправку запроса kubectl на api-контроллер Kubernetes, а флаг -o yaml указывает kubectl выводить результаты в YAML.
1 |
kubectl create <span class="token function">service</span> loadbalancer my-service --tcp<span class="token operator">=</span>80:3000 --dry-run -o yaml |
- Тип LoadBalancer
- Имя hello-world-service
- Порт 80
- Внутренний порт 3000
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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: {} |
[/codesyntax]
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 |
[/codesyntax]
Создание службы NodePort
Создание службы NodePort аналогично серверу LoadBalancer, с той лишь разницей, что в команде вместо loadbalancer используется nodeport.
1 |
kubectl create <span class="token function">service</span> nodeport my-service --tcp<span class="token operator">=</span>80:3000 --dry-run -o yaml |
Создание конфигурации службы ClusterIP
Как и в случае с типом балансировки нагрузки и типом порта узла, тип ClusterIP создается с помощью следующей команды.
1 |
kubectl create service clusterip my-service --tcp=80:3000 --dry-run -o yaml |