首页 > 解决方案 > 如何配置 kube-proxy 绑定 IP 地址?

问题描述

出于测试目的,我想将 kubernetes master 设置为只能从本地机器访问,而不能从外部访问。最终,我将在对外开放的机器上运行代理服务器 docker 容器。这一切都在 minikube 虚拟机中。

我认为配置 kube-proxy 是可行的方法。我做了以下

kubeadm config view > ~/cluster.yaml
# edit proxy bind address
vi ~/cluster.yaml
kubeadm reset
rm -rf /data/minikube
kubeadm init --config cluster.yaml

这样做后,netstat -ln | grep 8443我看到tcp 0 0 :::8443 :::* LISTEN这意味着它没有占用 IP。

我也尝试过kubeadm init --apiserver-advertise-address 127.0.0.1,但这只会将广告中的地址更改为 10.xxx kubeadm config view。无论如何,我觉得这可能是错误的。我不希望 API 服务器无法访问其他需要访问它的 docker 容器或其他东西。

我也尝试过这样做kubeadm config upload from-file --config ~/cluster.yaml,然后尝试手动重新启动运行 kube-proxy 的 docker。在 kubeadm 配置更改后还尝试重新启动机器/集群,但无法解决。当您手动重启 minikube VM 时,kubeadm 命令消失,甚至 docker 都没有运行。各种重新启动事物的在线方法似乎也不起作用(可能只是做错了)。

还尝试编辑 kube-proxy docker 的配置文件(绑定到本地目录),但是当我重新启动 docker 时它会被覆盖。我不明白。

kubernetes 仪表板中没有任何内容允许我编辑 kube-proxy 的配置文件(因为它是一个守护程序集)。

最终,我希望使用一个经过身份验证的代理服务器,它位于 k8s 主服务器(特别是 apiserver)前面。从 VM 外部直接访问 k8s master 将不起作用。

谢谢

标签: proxykubernetes

解决方案


您可以通过本地网络配置对其进行限制。(防火墙,路由)据我所知,API 需要可访问,至少可以通过其他节点所在的本地网络访问。除非您想要一个节点“集群”。

因此,当您没有其他网卡时,您可以在其中发布或绑定地址,您需要通过上述防火墙或路由规则对其进行限制。

对于您最初的问题主题,您是否研究过这个问题?https://github.com/kubernetes/kubernetes/issues/39586


推荐阅读