【问题标题】:Is there any Limit on number of ports that can be exposed in kubernetes service?kubernetes 服务中可以暴露的端口数量是否有任何限制?
【发布时间】:2020-09-25 05:07:56
【问题描述】:

我正在尝试在 200 个奇怪的端口上公开一项服务。这是示例服务 yaml:

apiVersion: v1
kind: Service
metadata:
  name: multiport-server-large-port
spec:
  type: NodePort
  selector:
    app: multiport-server-large-port
  ports:
  - port: 49152
    name: tcp-49152
  - port: 49153
    name: tcp-49153
  - port: 49154
    name: tcp-49154
  - port: 49155
    name: tcp-49155
  - port: 49156
    name: tcp-49156
  - port: 49157
    name: tcp-49157
  - port: 49158
.
.
.
.... 200 more such ports

应用此 yaml 后,会创建服务,但无法访问 ip:port 组合并出现连接被拒绝错误。经过进一步调查,我发现 iptables 过滤器链 KUBE-EXTERNAL-SERVICES 中有一些 REJECT 条目用于我暴露的端口。

IPTABLES 拒绝规则:

Chain KUBE-EXTERNAL-SERVICES (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere             /* default/multiport-server-large-port:tcp-49316 has no endpoints */ ADDRTYPE match dst-type LOCAL tcp dpt:31
184 reject-with icmp-port-unreachable
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere             /* default/multiport-server-large-port:tcp-49325 has no endpoints */ ADDRTYPE match dst-type LOCAL tcp dpt:31
225 reject-with icmp-port-unreachable
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere             /* default/multiport-server-large-port:tcp-49383 has no endpoints */ ADDRTYPE match dst-type LOCAL tcp dpt:32
620 reject-with icmp-port-unreachable
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere             /* default/multiport-server-large-port:tcp-49385 has no endpoints */ ADDRTYPE match dst-type LOCAL tcp dpt:30
107 reject-with icmp-port-unreachable
    0     0 REJECT     tcp  --  any    any     anywhere             anywhere             /* default/multiport-server-large-port:tcp-49359 has no endpoints */ ADDRTYPE match dst-type LOCAL tcp dpt:31

我想了解:

  1. 为什么会出现这些 REJECT 规则?
  2. 这不能通过服务暴露大量端口吗?
  3. 对可以通过服务公开的端口数量是否有任何限制?

【问题讨论】:

    标签: kubernetes kubectl iptables kubernetes-networking


    【解决方案1】:

    当特定服务有 0 个端点时插入 REJECT。您的 Service.spec 中的选择器一定是错误的,或者您没有任何 pod 正在运行

    【讨论】:

    • 谢谢维卡斯。我查找了端点,发现 kubernetes 1.17+ 版本启用了端点切片,它在一个切片中设置了 100 个端点的限制。奇怪的是,只创建了 1 个端点切片,因此存在错误。有没有办法告诉/配置 kubernetes 在创建超过 100 个端口的服务时创建超过 1 个切片?
    猜你喜欢
    • 1970-01-01
    • 2020-02-22
    • 2020-10-21
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多