Running two independent balancers on the same virtual machine | Размещение двух независимых балансировщиков на одной виртуальной машине |
Suppose that there are two applications running on a Linux virtual machine — an HTTP server (TCP 8080) and an SMTP server (TCP 2525). You need to set up two separate balancers for these services, a web balancer and an SMTP balancer. | На виртуальной машине с операционной системой Linux работают два приложения — HTTP-сервер (TCP 8080) и SMTP-сервер (TCP 2525). Необходимо настроить два отдельных балансировщика для этих сервисов — веб-балансировщик и SMTP-балансировщик. |
Creating a virtual machine | Создание виртуальной машины |
Create a | Создайте виртуальную машину |
In the manifest example below, the | В примере манифеста ниже добавлен лейбл |
yaml apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine metadata: name: my-vm namespace: my-ns labels: vm: my-vm spec: virtualMachineClassName: host cpu: cores: 1 memory: size: 1Gi provisioning: type: UserData userData: | #cloud-config ssh_pwauth: True users:
| yaml apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine metadata: name: my-vm namespace: my-ns labels: vm: my-vm spec: virtualMachineClassName: host cpu: cores: 1 memory: size: 1Gi provisioning: type: UserData userData: | #cloud-config ssh_pwauth: True users:
|
Web service and SMTP load balancer manifests | Манифесты балансировщиков для веб-сервиса и SMTP |
Below is an example of a manifest of a web service load balancer: | Пример манифеста веб-балансировщика: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: web namespace: my-ns spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: web namespace: my-ns spec: ports:
|
Below is an example of a manifest of a SMTP load balancer: | Пример манифеста SMTP-балансировщика: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: smtp namespace: my-ns spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: smtp namespace: my-ns spec: ports:
|
Load balancers for working with a PostgreSQL cluster | Балансировщики для работы с PostgreSQL-кластером |
Creating a StatefulSet for PostgreSQL | Создание StatefulSet для PostgreSQL |
In order for | Для корректной работы |
yaml apiVersion: v1 kind: Service metadata: name: postgres spec: selector: app: postgres ports:
| yaml apiVersion: v1 kind: Service metadata: name: postgres spec: selector: app: postgres ports:
|
Below is an example of a | Пример манифеста |
yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres name: my-ns spec: serviceName: postgres replicas: 3 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers:
| yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres name: my-ns spec: serviceName: postgres replicas: 3 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers:
|
Configuring ServiceWithHealthchecks load balancers | Конфигурация балансировщиков ServiceWithHealthchecks |
Create a Secret to store credentials so that probes can access the database: | Создайте Secret для хранения учетных данных для доступа проб к базе данных: |
shell kubectl -n my-ns create secret generic cred-secret –from-literal=user=postgres –from-literal=password=example cred-secret | shell kubectl -n my-ns create secret generic cred-secret –from-literal=user=postgres –from-literal=password=example cred-secret |
Below is an example of a load balancer manifest for reading: | Пример манифеста балансировщика для чтения: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-read spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-read spec: ports:
|
And here is an example of a load balancer manifest for writing: | Пример манифеста балансировщика для записи: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-write spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-write spec: ports:
|