出于测试目的,我希望将kubernetes master设置为只能从本地机器访问,而不能从外部访问。最终,我将在对外开放的机器上运行一个代理服务器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。我觉得这可能是个错误的事情。我不希望API服务器不能被其他需要访问它或其他东西的docker容器访问。
我也尝试过这样做,然后尝试手动重新启动运行kube- kubeadm config upload from-file --config ~/cluster.yaml的docker。我还尝试在kubeadm配置更改后重新启动机器/集群,但无法解决这一问题。当您手动重新启动minikube虚拟机时,kubeadm命令消失,甚至docker都没有运行。各种重新启动东西的在线方法似乎也不起作用(可能只是做错了)。
我还尝试编辑kube-proxy docker的配置文件(绑定到本地目录),但当我重新启动docker时,该配置文件会被覆盖。我不明白。
kubernetes仪表板中也没有任何东西允许我编辑kube-proxy的配置文件(因为它是一个守护进程)。
最终,我希望使用一个位于k8s主服务器(特别是apiserver)前面的经过身份验证的代理服务器。从虚拟机外部直接访问k8s主服务器将不起作用。
谢谢
发布于 2019-01-31 03:54:05
您可以通过本地网络配置来限制它。(防火墙,路由)据我所知,API需要是可访问的,至少通过其他节点所在的本地网络。除了你想要有一个单一的节点“集群”。
因此,如果您没有不同的网卡,您可以在其中通告或绑定地址,则需要通过上述防火墙或路由规则对其进行限制。
对于你最初的问题主题,你调查过这个问题吗?https://github.com/kubernetes/kubernetes/issues/39586
https://stackoverflow.com/questions/54447879
复制相似问题