无法使用 NodePort 在 kubernetes pod 中公开 SCTP 服务器 运行
Unable to expose SCTP server running in a kubernetes pod using NodePort
我在 Azure 的虚拟机中有一个单节点 kubernetes 集群 运行。我在端口 38412 中有一个服务 运行 SCTP 服务器。我需要在外部公开该端口。我尝试将端口类型更改为 NodePort。但没有成功。我正在使用法兰绒作为覆盖网络。使用 Kubernetes 版本 1.23.3.
这是我的 service.yaml 文件
apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: fivegcore
meta.helm.sh/release-namespace: open5gs
creationTimestamp: "2022-02-11T09:24:09Z"
labels:
app.kubernetes.io/managed-by: Helm
epc-mode: amf
name: fivegcore-amf
namespace: open5gs
resourceVersion: "33072"
uid: 4392dd8d-2561-49ab-9d57-47426b5d951b
spec:
clusterIP: 10.111.94.85
clusterIPs:
- 10.111.94.85
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: tcp
nodePort: 30314
port: 80
protocol: TCP
targetPort: 80
- name: ngap
nodePort: 30090
port: 38412
protocol: SCTP
targetPort: 38412
selector:
epc-mode: amf
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
如您所见,我将端口类型更改为 NodePort。
open5gs fivegcore-amf NodePort 10.111.94.85 <none> 80:30314/TCP,38412:30090/SCTP
这是我的Configmap.yaml。在此配置图中,ngap dev 是我要连接的服务器,它使用容器中的默认 eth0 接口。
apiVersion: v1
data:
amf.yaml: |
logger:
file: /var/log/open5gs/amf.log
#level: debug
#domain: sbi
amf:
sbi:
- addr: 0.0.0.0
advertise: fivegcore-amf
ngap:
dev: eth0
guami:
- plmn_id:
mcc: 208
mnc: 93
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 208
mnc: 93
tac: 7
plmn_support:
- plmn_id:
mcc: 208
mnc: 93
s_nssai:
- sst: 1
sd: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
nrf:
sbi:
name: fivegcore-nrf
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: fivegcore
meta.helm.sh/release-namespace: open5gs
creationTimestamp: "2022-02-11T09:24:09Z"
labels:
app.kubernetes.io/managed-by: Helm
epc-mode: amf
我执行到容器并检查服务器是否 运行。
这是容器的netstat。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.244.0.31:37742 10.105.167.186:80 ESTABLISHED 1/open5gs-amfd
sctp 10.244.0.31:38412 LISTEN 1/open5gs-amfd
主机中也加载了sctp模块。
$lsmod | grep sctp
sctp 356352 8
xt_sctp 20480 0
libcrc32c 16384 5 nf_conntrack,nf_nat,nf_tables,ip_vs,sctp
x_tables 49152 18 ip6table_filter,xt_conntrack,xt_statistic,iptable_filter,iptable_security,xt_tcpudp,xt_addrtype,xt_nat,xt_comment,xt_owner,ip6_tables,xt_sctp,ipt_REJECT,ip_tables,ip6table_mangle,xt_MASQUERADE,iptable_mangle,xt_mark
是否可以对外公开此服务器?
在撰写本文时,AKS 和 Flannel 都不支持 SCTP。这是一些关于它的 details。
我在 Azure 的虚拟机中有一个单节点 kubernetes 集群 运行。我在端口 38412 中有一个服务 运行 SCTP 服务器。我需要在外部公开该端口。我尝试将端口类型更改为 NodePort。但没有成功。我正在使用法兰绒作为覆盖网络。使用 Kubernetes 版本 1.23.3.
这是我的 service.yaml 文件
apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: fivegcore
meta.helm.sh/release-namespace: open5gs
creationTimestamp: "2022-02-11T09:24:09Z"
labels:
app.kubernetes.io/managed-by: Helm
epc-mode: amf
name: fivegcore-amf
namespace: open5gs
resourceVersion: "33072"
uid: 4392dd8d-2561-49ab-9d57-47426b5d951b
spec:
clusterIP: 10.111.94.85
clusterIPs:
- 10.111.94.85
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: tcp
nodePort: 30314
port: 80
protocol: TCP
targetPort: 80
- name: ngap
nodePort: 30090
port: 38412
protocol: SCTP
targetPort: 38412
selector:
epc-mode: amf
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
如您所见,我将端口类型更改为 NodePort。
open5gs fivegcore-amf NodePort 10.111.94.85 <none> 80:30314/TCP,38412:30090/SCTP
这是我的Configmap.yaml。在此配置图中,ngap dev 是我要连接的服务器,它使用容器中的默认 eth0 接口。
apiVersion: v1
data:
amf.yaml: |
logger:
file: /var/log/open5gs/amf.log
#level: debug
#domain: sbi
amf:
sbi:
- addr: 0.0.0.0
advertise: fivegcore-amf
ngap:
dev: eth0
guami:
- plmn_id:
mcc: 208
mnc: 93
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 208
mnc: 93
tac: 7
plmn_support:
- plmn_id:
mcc: 208
mnc: 93
s_nssai:
- sst: 1
sd: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
nrf:
sbi:
name: fivegcore-nrf
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: fivegcore
meta.helm.sh/release-namespace: open5gs
creationTimestamp: "2022-02-11T09:24:09Z"
labels:
app.kubernetes.io/managed-by: Helm
epc-mode: amf
我执行到容器并检查服务器是否 运行。 这是容器的netstat。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.244.0.31:37742 10.105.167.186:80 ESTABLISHED 1/open5gs-amfd
sctp 10.244.0.31:38412 LISTEN 1/open5gs-amfd
主机中也加载了sctp模块。
$lsmod | grep sctp
sctp 356352 8
xt_sctp 20480 0
libcrc32c 16384 5 nf_conntrack,nf_nat,nf_tables,ip_vs,sctp
x_tables 49152 18 ip6table_filter,xt_conntrack,xt_statistic,iptable_filter,iptable_security,xt_tcpudp,xt_addrtype,xt_nat,xt_comment,xt_owner,ip6_tables,xt_sctp,ipt_REJECT,ip_tables,ip6table_mangle,xt_MASQUERADE,iptable_mangle,xt_mark
是否可以对外公开此服务器?
在撰写本文时,AKS 和 Flannel 都不支持 SCTP。这是一些关于它的 details。