kubectl 端口转发和代理的区别

Dag*_*ang 12 kubernetes

kubectl proxykubectl port-forwarding外观相似,有时混乱给我,我想了解一下他们的区别和自己的使用情况。

Von*_*onC 12

如“如何kubectl port-forward运作? ”中所述

kubectl port-forward 将与本地端口的连接转发到 pod 上的端口。

相比kubectl proxy,kubectl port-forward更通用,因为它可以转发 TCP 流量,而kubectl proxy只能转发 HTTP 流量。

例如,请参阅Alex Barashkov 的Kubernetes 端口转发前所未有的简单” :

端口转发主要用于访问内部集群资源和调试

它是如何工作的?

一般来说,使用端口转发,您可以在您的“本地主机”上获取集群中启动的任何服务。
例如,如果您在 6379 上的集群中安装了 Redis,请使用如下命令:

kubectl port-forward redis-master-765d459796-258hz 7000:6379
Run Code Online (Sandbox Code Playgroud)

您可以将 Redis 从集群转发到 localhost:7000,在本地访问它并执行您想做的任何操作。

对于有限的 HTTP 访问,请参阅 kubectl 代理,以及作为示例,来自Joe Beda 的On Securing the Kubernetes Dashboard ” :

访问集群的最简单和最常见的方式是通过 kubectl 代理。这将创建一个本地 Web 服务器,该服务器通过 Kubernetes API 服务器安全地将数据代理到仪表板。

Awanish 的安装和使用 Kubernetes 仪表板的分步指南所示

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Run Code Online (Sandbox Code Playgroud)

使用 kubectl 访问仪表板

kubectl proxy
Run Code Online (Sandbox Code Playgroud)

它将在您的机器和 Kubernetes API 服务器之间代理服务器。

现在,要在浏览器中查看仪表板,请在主 VM 的浏览器中导航到以下地址:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
Run Code Online (Sandbox Code Playgroud)