为了进行测试,我希望将kubernetes主目录设置为只能从本地计算机访问,而不能从外部访问。最终,我将在向外打开的机器上运行代理服务器docker容器。这些都在minikube VM中。

我认为配置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,但是只将kubeadm config view中的广告地址更改为10.x.x.x。我觉得这可能是错误的事情。我不希望需要访问它的其他Docker容器无法访问API服务器。

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

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

kubernetes仪表板中没有任何东西可以让我编辑kube-proxy的配置文件(因为它是守护程序)。

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

谢谢

最佳答案

您可以通过本地网络配置来限制它。 (防火墙,路线)
据我所知,至少需要通过其他节点所在的本地网络来访问该API。除非您希望有一个节点“集群”。

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

对于您的第一个问题,您是否调查过此问题? https://github.com/kubernetes/kubernetes/issues/39586

关于proxy - 如何配置kube-proxy绑定(bind)IP地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54447879/

10-14 05:50