系统中没有 k8s nodeport 监听端口

原文参考 https://zhuanlan.zhihu.com/p/681717520

问题

最近安装 1.28 版本的 k8s,使用 ingress(nginx)暴露某个后端服务,然后使用 netstat -ntlp 看不到 80 端口在监听;使用浏览器又可以访问,觉得不可理解。

原因

github 上有说明:在新版本中已经删除了 kube-proxy 打开端口套接字部分,但是会在 iptables 中进行转发,故不影响访问。
https://github.com/kubernetes/kubernetes/issues/115568
https://github.com/kubernetes/kubernetes/pull/108496

验证

netstat -ntlp | grep 80 看不到 80 端口有监听

iptables -S -t nat | grep 80 观察到端口流量由 iptables 转发

能访问到 nginx

拔高

ingress(nginx)默认监听的 80、443 端口是可以修改的由 nginx-ingress-controller 的配置文件定义以避免潜在的端口冲突

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx-ingress-controller
...
          ports:
            - containerPort: 80
              hostPort: 80 # 可以修改为180
              name: http
              protocol: TCP
            - containerPort: 443
              hostPort: 443 # 可以修改为1443
              name: https
              protocol: TCP

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Index
滚动至顶部