K8S nodeport 限定內網訪問


需求

開發需要在 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM