![通过代理使用 kubernetes 端口转发需要什么?](https://linux22.com/image/742143/%E9%80%9A%E8%BF%87%E4%BB%A3%E7%90%86%E4%BD%BF%E7%94%A8%20kubernetes%20%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E9%9C%80%E8%A6%81%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我有一个 kubernetes 集群,可以通过 nginx 代理访问。
我可以kubectl get deployments -n kube-system
毫无问题地做事。
但是,我尝试使用 helm。Helm 抛出了一个错误:
Error: forwarding ports: error upgrading connection: unable to upgrade connection: query parameter "port" is required
通过研究,这看起来像是 kubernetes 端口转发的一个错误。为了使 helm 正常工作,kubernetes 端口转发必须首先正常工作,即:
确实,尝试:
kubectl -n kube-system port-forward <tiller-deploy-Pod> <some_port>:44134
无法通过代理工作。
那么...到底需要什么才能使 kubernetes 端口转发通过代理工作?
我是否需要在代理服务器上为端口 44134 设置 tcp 代理(例如 socat)?如果是这样,我是否只需将流量代理到 kubernetes 主服务器上的 44134?
答案1
不要通过 NGINX 来实现这一点。尝试直接与您的某个节点通信。即使您尝试通信的服务位于(假设)节点 No3 上,Kubernetes 内部代理服务也应该将其底层私有网络(flanneld 或您使用的任何网络堆栈)上的流量转发到正确的节点,而您却不会注意到。