Openshift OKD с другими портами (Teamspeak)

Мне нужна помощь в создании Teamspeak-Pod на Openshift (OKD 3.11). Моя проблема в том, что после развертывания модуля я не знаю, как я могу предоставить порты 9887, 10011 и 30033 для внешнего доступа.

Только 8080, 8443 и 443 доступны для веб-приложений извне.

Кто-нибудь знает, что мне делать, чтобы получить внешний доступ? Я думаю, что мне нужно что-то сделать с firewalld и переадресацией портов. Но я ничего не могу найти для этого.

Спасибо, за вашу помощь ...


person Alex    schedule 07.12.2018    source источник


Ответы (1)


По умолчанию модули могут обмениваться данными только внутри кластера, поэтому вы не сможете направлять к ним внешний трафик.

Один из способов сделать это - настроить службу как NodePort. Это сопоставит эти порты с портами в диапазоне 30000-32767 на всех узлах. Например:

apiVersion: v1
kind: Service
metadata:
  name: teamspeak
  labels:
    name: teamspeak
spec:
  type: NodePort
  ports:
  - name: 9887-tcp
    port: 9887
    nodePort: 31694
    protocol: TCP
  - name: 10011-tcp
    port: 10011
    nodePort: 30906
    protocol: TCP
  - name: 30033-tcp
    port: 30033
    nodePort: 32316
    protocol: TCP
  selector:
    name: teamspeak

Если вы запустите, oc edit service teamspeak или что-то еще, что называется службой вашего приложения, и измените тип на NodePort, Openshift автоматически назначит порт в указанном выше диапазоне.

После того, как ваша служба настроена как NodePort, вам нужно будет перенаправить запросы для этих портов на новые, которые были назначены Openshift (порты диапазона 30000-32767), поэтому вместо запросов, идущих на 9887, они отправляются на 30036, в случае нашего примера.

Ссылка: https://docs.openshift.com/container-platform/3.6/dev_guide/expose_service/expose_internal_ip_nodeport.html

В качестве альтернативы вы можете определить службу как тип LoadBalancer, который не только будет предоставлять ваши модули внешнему трафику, но и распределять запросы между модулями в соответствии с вашей конфигурацией. Например,

apiVersion: v1
kind: Service
metadata:
  name: egress-2 
spec:
  ports:
  - name: db
    port: 3306
  - name: additional-port
    port: 9887
  - name: another-one
    port: 10011
  loadBalancerIP:
  type: LoadBalancer 
  selector:
    name: mysql

Ссылка: https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_load_balancer.html

person Ciaodown    schedule 07.12.2018