zl程序教程

您现在的位置是:首页 >  后端

当前栏目

K8S nodeport 限定内网访问

k8s 访问 限定
2023-09-27 14:26:01 时间

需求

开发需要在 K8S 集群上部署 mongodb 集群且需要使用 NodePort 把地址和端口公布出来访问。经检查 K8S 集群有一个节点上配有公网IP。这样一来外网也可以直接通过公网IP和端口连接上 mongodb 集群,十分不安全。

方案

方案一: 开启 firewalld,原来服务器没有开启且跑了很多服务,开启后不知道是否会冲突,备用方案
方案二: 关闭服务器上的公网网卡,服务器上跑了很多服务器,作用不详。。。
方案三: 使该服务器上 kube-proxy 绑定内网IP,公网无法访问。影响最小,优先选择

修改 kube-proxy 配置

# 找到 kube-proxy 服务配置
cd /usr/lib/systemd/system

cat kube-proxy.service 
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target

[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart=/usr/local/sbin/kube-proxy \
  --config=/etc/kubernetes/kube-proxy.config.yaml \
  --alsologtostderr=true \
  --logtostderr=false \
  --log-dir=/var/log/kubernetes \
  --ipvs-scheduler=rr \
  --ipvs-min-sync-period=5s \
  --ipvs-sync-period=5s \
  --masquerade-all=true \
  --conntrack-tcp-timeout-close-wait=5m \
  --v=3
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

# 确认配置文件是 /etc/kubernetes/kube-proxy.config.yaml

# 备份修改
cp /etc/kubernetes/kube-proxy.config.yaml /etc/kubernetes/kube-proxy.config.yaml.20211108

vi /etc/kubernetes/kube-proxy.config.yaml
# 在最后添加
nodePortAddresses: ["192.168.1.0/24"]


# 重启 kube-proxy
systemctl restart kube-proxy

检查

在该节点上使用 netstat -tulnp 命令查看是否监听在内网地址
使用 telnet 命令进行测试

参考:https://kubernetes.io/docs/concepts/services-networking/service/#nodeport