Поддержка SCTP в kubernetes v1.14.3, сервер / клиент не может отправлять / получать пакеты данных через sctp - PullRequest
1 голос
/ 01 июля 2019

У нас есть sctp java-приложение (сервер), работающее в контейнере (pod).Мы хотим выставить это приложение sctp для внешних сетей (Клиент), используя Nodeport.Мы используем последнюю версию Kubernetes 1.14.3 с версией докера 18.06.

Java-код для SERVER (работает в модуле):

SocketAddress serverSocketAddress = new InetSocketAddress(30030); 
SctpServerChannel sctpServerChannel =  SctpServerChannel.open().bind(serverSocketAddress); 
SctpChannel sctpChannel; 
    while ((sctpChannel = sctpServerChannel.accept()) != null) 
{ 
            MessageInfo messageInfo = sctpChannel.receive(ByteBuffer.allocate(64000) , null, null); 
        }

config.yaml:

kind: ClusterConfiguration
kubernetesVersion: v1.14.3
networking:
  podSubnet: 192.168.0.0/16
apiServer:
  extraArgs:
     feature-gates: SCTPSupport=true

развертывание yaml:

apiVersion: v1
kind: Service
metadata:
  name: sctpserver
  labels:
    app: testsctp
spec:
  ports:
    - name: sctpserver
      protocol: SCTP
      port: 30030
      targetPort: 'sctpserver'
      nodePort: 30030
  selector:
    app: testsctp
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sctpserver
  labels:
    app: testsctp
spec:
  selector:
    matchLabels:
      app: testsctp
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: testsctp
    spec:
      containers:
      - image: sctpserver:latest
        imagePullPolicy: IfNotPresent
        name: sctpserver
        ports:
        - containerPort: 30030
          hostPort: 30030
          name: sctpserver
          protocol: SCTP

Мы видим INIT (из внешней сети) и INIT ACK (с сервера kubernetes) в wireshark, но не более того.Пакеты данных не передаются от хоста к контейнеру и наоборот.

В настоящее время используется Iptables, но используется режим kube-proxy с ipvs в файле конфигурации, и результат остается тем же.

...