Я развертываю веб-приложение с помощью Google Kubernetes Engine и хочу сделать его доступным через балансировщик нагрузки на существующем статическом IP-адресе, которым я управляю как часть того же проекта в Google Cloud Platform, потому что доменное имя, которое я хочу использовать уже указывает на этот IP.
Файл yaml, который я использовал для модуля:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: gcr.io/my-project/my-app:latest
Я могу настроить балансировщик нагрузки, используя:
apiVersion: v1
kind: Service
metadata:
name: my-load-balancer
spec:
ports:
- port: 80
targetPort: 80
selector:
app: my-app
type: LoadBalancer
Это обеспечивает внешний IP-адрес, по которому приложение доступно, но я не могу найти способ настроить его на использование IP-адреса, который я хочу. В документации по сервисам упоминается настройка spec.clusterIP, но, похоже, это не относится к внешнему IP. Аналогично, после настройки балансировщика нагрузки в поле status.loadBalancer.ingress.ip службы устанавливается внешний IP-адрес, но это не настраиваемый параметр.
В качестве альтернативы я попытался вручную создать правило пересылки в консоли Google Compute Engine, чтобы перенаправлять трафик со своего статического IP-адреса в целевой пул, настроенный Kubernetes, но при попытке подключения соединение отклоняется.
Есть ли способ сделать то, что я хочу - выставить модуль Kubernetes (или контроллер репликации) в движке Google Kubernetes на выбранный статический IP-адрес?
Хорошие новости. Это будет исправлено в Kubernetes v1.1. Вы можете установить в
service.spec.loadBalancerIP
поле IP-адрес, который вам известен.Предыдущая:
Это особенность, которая провалилась в трещины. Предполагалось, что он сработает (и, возможно, даже работал в какой-то момент), но не был хорошо протестирован и был сломан по пути, а затем как-то случайно спроектирован (временно).
В моем шорт-листе все исправлено после 1.0.
https://github.com/GoogleCloudPlatform/kubernetes/issues/10323
источник