出于测试目的,我想将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的配置文件(绑定到本地目录),但是当我重新启动docker时,该文件被覆盖。我不明白。
在kubernetes仪表板中没有任何东西可以让我编辑kube-proxy的配置文件(因为它是守护程序)。
最终,我希望使用位于k8s主服务器(特别是apiserver)前面的经过身份验证的代理服务器。无法从VM外部直接访问k8s主服务器。
谢谢
答案 0 :(得分:1)
您可以通过本地网络配置来限制它。 (防火墙,路线) 据我所知,至少需要通过其他节点所在的本地网络访问该API。除非您希望有一个节点“集群”。
因此,当您没有其他网络卡可以在其中发布或绑定地址时,则需要通过上述防火墙或路由规则对其进行限制。
对于您的第一个问题,您是否调查过此问题? https://github.com/kubernetes/kubernetes/issues/39586