【问题标题】:Should I add an iptables rule on the random kubernetes node port if I want to access from outside world如果我想从外部世界访问,是否应该在随机 kubernetes 节点端口上添加 iptables 规则
【发布时间】:2016-05-17 19:28:45
【问题描述】:

我在 kubernetes 集群上部署了一个应用程序。 kubernetes 节点端口是 30010,它将被重定向到 41018。 [root@kubernetes-slave ~]# iptables -L -n -t nat Chain KUBE-NODEPORT-HOST (1 references) target prot opt source destination DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 /* default/myservice:http */ tcp dpt:30010 to:<server_ip>:41018

如果我禁用防火墙,一切都会正常工作。但如果我用service firewalld start 启用它。我无法访问http://&lt;server_ip&gt;:30010。 即使我执行firewall-cmd --zone=public --add-port=30010/tcp,它仍然是“Bad GateWay”

经过两天的调试,我终于想通了,我应该打开41018端口而不是30010,然后一切正常。

但是这里的问题是30010端口可以由用户配置,但是41018端口是kubernetes在每次部署时随机选择的。

我觉得开放41018端口不是一个好选择。有什么建议吗?还是我使用kubernetes有问题?

【问题讨论】:

    标签: kubernetes iptables


    【解决方案1】:

    您可以在服务定义中设置一个静态节点端口,每次部署都不会更改。

    例如:

    {
        "kind": "Service",
        "apiVersion": "v1",
        "metadata": {
            "name": "my-service"
        },
        "spec": {
            "selector": {
                "app": "MyApp"
            },
            "ports": [
                {
                    "protocol": "TCP",
                    "port": 80,
                    "targetPort": 9376,
                    "nodePort": 30061
                }
            ],
            "type": "nodePort"
        }
    }
    

    应始终为您的服务创建一个 30061 的 nodePort。

    【讨论】:

    • 其实我确实添加了一个nodePort,也就是30010。
    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多