我在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://<server_ip>:30010
。
即使我执行firewall-cmd --zone=public --add-port=30010/tcp
,它仍然是&#34; Bad GateWay&#34;
经过两天的调试,我终于发现我应该打开41018端口而不是30010端口,然后一切正常。
但问题是30010端口可由用户配置,但每次部署时kubernetes随机选择端口41018。
我认为打开41018端口不是一个好选择。有什么建议吗?或者我使用kubernetes有问题吗?
答案 0 :(得分:0)
您可以在服务定义中设置一个静态nodePort,在每次部署时都不会更改。
例如:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"spec": {
"selector": {
"app": "MyApp"
},
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 9376,
"nodePort": 30061
}
],
"type": "nodePort"
}
}
应始终为您的服务创建300P的nodePort。