в движке контейнера Google, как мне использовать expose с --public-ip?

Я развернул контейнер Docker на GCE через кластер Kubernetes с помощью инструментов Google Container Engine.

Установка «типа»: «LoadBalancer» в службе не поддерживает веб-сокеты. Я хочу выставить свой собственный сервис nginx для поддержки веб-сокетов, но запустить его внутри kubernetes для дискотеки dns/service.

Я вижу, что команда kubectl expose имеет параметр --public-ip=. Любая подсказка о том, как настроить этот IP-адрес, приветствуется.

update, попробовал разоблачить с помощью --dry-run -o yaml, чтобы передать параметр сходства:

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    name: tfe
  name: mytfe
spec:
  sessionAffinity: ClientIP
  ports:
  - name: default
    nodePort: 0
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    name: tfe
  type: LoadBalancer
status:
  loadBalancer: {}

он отлично открывает http, но я получаю 400 на ws GET (после того, как POST получил 200)

"GET /socket.io/?EIO=3&transport=polling&t=1437780794642-2313&sid=JuLWBlEy4Wjk3zHSAAH0 HTTP/1.1" 400


person navicore    schedule 22.07.2015    source источник


Ответы (1)


Почему он не поддерживает веб-сокеты? Должно. Вам необходимо включить привязку сеанса.

К сожалению, kubectl expose в настоящее время не имеет флага сходства сеансов (а должен), но если вы запустите kubectl expose --dry-run=true ..., он выдаст дамп объекта API, который будет отправлен, а затем вы можете добавить service.spec.sessionAffinity к «ClientIP».

а затем запустите kubectl create -f <file>, и он должен работать. Если это не так, зайдите в IRC или отправьте сообщение о проблеме на github с репродукцией.

Я подал: https://github.com/GoogleCloudPlatform/kubernetes/issues/11718 для добавление флага в kubectl для этого.

Спасибо!

person Brendan Burns    schedule 22.07.2015
comment
хммм... настройка sessionAffinity, похоже, не приводит меня к этому. - person navicore; 25.07.2015