当前位置: 首页 > 知识库问答 >
问题:

SCTP端口未打开以接收来自kubernetes群集外部的流量

谭裕
2023-03-14

我有一个包含两台机器(一台主机器和一台工作机器)的集群,在工作节点上有一个pod,它提供SCTP服务。与pod相关的集群服务声明了externalIPs。externalIPs的值是工人机器的公共IP(####.###.208)。当使用helm部署pod和服务时,我可以看到pod和服务都可用,并且外部IP被分配给服务,但netstat命令的结果表明,为sctp服务定义的端口未打开以从外部世界访问,但是,如果我对tcp端口做同样的事情,它将被外部世界打开。netstat的结果如下所示-

对于SCTP-

user1@master:/build/helm$kubectl get svc——所有名称空间

名称空间名称类型集群-IP EXTERNAL-IP端口(S)年龄

默认amf服务群集IP 10.99.154.48########.##。208 38412/SCTP 2m55s

user1@worker01:/netstat-nl | grep 38412

对于TCP-

user1@master:/build/helm$kubectl get svc——所有名称空间

名称空间名称类型集群-IP EXTERNAL-IP端口(S)年龄

默认amf服务群集IP 10.99.154.48########.##。208 38412/TCP 2m16s

user1@worker01:/netstat-nl | grep 38412

Proto Recv-Q Send-Q本地地址外部地址状态

TCP 0 0 ###. ###. ##.208:384120.0.0.0:*听

服务定义-

apiVersion: v1
kind: Service
metadata:
  name: amf-service
  labels:
    {{- include "amf-chart.labels" . | nindent 4 }}
spec:
  type: {{ .Values.service.type }}
  ports:
#######    - port: {{ .Values.service.http_port }}
#######      targetPort: {{ .Values.service.http_port }}
#######     protocol: TCP
#######     name: http
    - port: {{ .Values.service.sctp_port }}
      targetPort: {{ .Values.service.sctp_port }}
      protocol: SCTP
      name: sctp
  selector:
    {{- include "amf-chart.selectorLabels" . | nindent 4 }}
  externalIPs:
    - { .Values.service.workerIP}

它的行为应该与TCP相同,并且SCTP协议的端口38412应该提供服务。

为了复制,部署一个提供sctp服务的pod,并使用我在上述服务模板中提到的服务配置。

如果我在pod中的集群内运行SCTP客户端,我就能够使用SCTP服务。

环境:

库伯内特斯版本(使用kubectl版本):1.21

云提供商或硬件配置:操作系统(例如:cat/etc/OS版本):Ubuntu 18.04.5 LTS(仿生海狸)内核(例如uname-a):Linux worker01 5.4.0-72-generic#80 ~ 18.04.1-Ubuntu SMP Mon Apr 12 23:26:25 UTC 2021 x86\u 64 x86\u 64 GNU/Linux

网络插件和版本(如果这是一个与网络相关的bug):{“name”:“cbr0”,“cniVersion”:“0.3.1”,“plugins”:[{“type”:“flannel”,“delegate”:{“hairpinMode”:true,“isDefaultGateway”:true}},{“type”:“portmap”,“capabilities”:{“portMappings”:true}}]}

其他:Docker容器使用centos8作为基本映像(来自centos:centos8)

共有1个答案

米树
2023-03-14

我不得不用印花布代替法兰绒,用NodeIP代替ClusterIP。

 类似资料:
  • 我在kubernetes集群中所有节点的外部端口上公开了一个服务,该服务来自: 您已经在集群中所有节点的外部端口上公开了服务。如果要将此服务公开到外部internet,则可能需要为服务端口(TCP:30002)设置防火墙规则以服务通信量。 有关详细信息,请参阅http://releases.k8s.io/release-1.2/docs/user-guide/services-firewalls.

  • 我已经使用mongo k8s sidecar在kubernetes上提供了一个3成员副本集mongo集群。我需要在外部公开mongodb服务,因此创建了一个LoadBalancer。 这就是服务的样子 尝试使用mongodb shell 3.6进行连接,效果很好 但是在java客户端代码中,我看到了下面的异常。< code > Java . net . unknown hostexception:

  • < li >我在Kubernetes集群中部署并运行了Kafka。我使用的图片来自docker hub-https://hub . docker . com/r/cloudtrackinc/kubernetes-Kafka/ < li >我的kubernetes群集中有3个kube节点。我有3个Kafka和3个zookeeper应用程序在运行,我有服务zoo1、zoo2、zoo3和kafka-1、

  • 本系列文档介绍使用二进制部署最新 kubernetes v1.6.2 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群。 在部署的过程中,将详细列出各组件的启动参数,它们的含义和可能遇到的问题。 部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题。 所以本文档主要适合于那些有一定 kubernetes 基础,想通过一步步部署的方式来学习和了解系统配置、运行原理的人。

  • 本系列文档介绍使用二进制部署最新 kubernetes v1.6.2 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群。

  • 我的公司有一个以JSON格式发送实时消息的消息传递系统,它不是建立在AWS上的,也不会与AWS有任何VPN连接。 我们的团队正在尝试使用AWS SQS接收这些消息,然后DynamoDB将JSON消息处理到TSV,然后加载到RDS中。 但是,根据FAQ,SQS只能从AWS内部接收消息。https://aws.amazon.com/sqs/faqs/ 我在这里的问题是: 我的想法正确吗? 如果正确,您