GKE - как подключить stati c ip к внутреннему балансировщику нагрузки - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу подключить сервис из одного кластера GKE к другому. Я создал службу как внутренний балансировщик нагрузки, и я хотел бы прикрепить к ней IP-адрес stati c. Я создал свой service.yml

apiVersion: v1
kind: Service
metadata:
  name: ilb-service
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    kubernetes.io/ingress.global-static-ip-name: es-test
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP

Однако после применения -f при проверке службы вход балансировщика нагрузки выглядит следующим образом:

status:
  loadBalancer:
    ingress:
    - ip: 10.156.0.60

И я не могу подключиться с помощью stati c ip. Как это решить?

РЕДАКТИРОВАТЬ:

After suggestion I changed the yml file to:
apiVersion: v1
kind: Service
metadata:
  name: ilb-service
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  loadBalancerIP: "xx.xxx.xxx.xxx" -- here my static ip

Сервис теперь выглядит так:

spec:
  clusterIP: 11.11.1.111
  externalTrafficPolicy: Cluster
  loadBalancerIP: xx.xxx.xxx.xxx
  ports:
  - nodePort: 31894
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: hello
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

И я все еще не могу подключиться

1 Ответ

3 голосов
/ 05 февраля 2020

Вы не будете использовать аннотацию для внутреннего IP. Вместо этого просто укажите IP-адрес, который вы хотите использовать (не по имени), в поле spec.loadBalancerIP позволяет указать цифру c IP-адрес для назначения loadBalancer. Убедитесь, что IP не используется где-либо еще и находится в пределах того же su bnet, что и ваш кластер.

EDIT

Для пояснения последнего утверждения: Если у вас есть внутренний IP, зарезервированный как stati c IP, этот IP больше не доступен, он считается "используемым" резервированием stati c. Чтобы назначить IP-адрес внутреннему LoadBalancer, IP-адрес не должен быть зарезервирован и не может использоваться.

Это неясно, но из-за того, как контроллер GCP создал внутренние балансировщики нагрузки, он не может использовать уже зарезервированный IP-адрес.

...