Вступление
Сервисы(службы) 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: {}
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