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