Kubernetes端口转发 - 错误:监听tcp4 127.0.0.1:88:绑定失败:权限被拒绝。

20

我在本地机器上使用minikube。在使用Kubernetes端口转发时遇到了这个错误。有人可以帮忙吗?

mjafary$ kubectl port-forward  sa-frontend 88:80

Unable to listen on port 88: All listeners failed to create with the following errors: 
Unable to create listener: Error listen tcp4 127.0.0.1:88: bind: permission denied, Unable to create listener: Error listen tcp6 [::1]:88: bind: permission denied
error: Unable to listen on any of the requested ports: [{88 80}] 

2
这可能是由于端口本地运行并与此端口转发冲突所致。 - Nikeel Sathoo
使用netstat查找进程并使用kill -9命令终止进程后,程序可以正常工作! - Gaurav
6个回答

54

kubectl无法打开端口88,因为它是一个特权端口。所有<1024的端口都需要特殊权限。

有很多方法可以解决你的问题。

  • 您可以坚持使用>= 1024的端口,例如使用端口8888而不是88:kubectl port-forward sa-frontend 8888:80
  • 您可以使用kubectl作为root:sudo kubectl port-forward sa-frontend 88:80(不建议这样做,kubectl将会以root身份查找其配置文件)
  • 您可以授予kubectl二进制文件特权来打开特权端口。此答案详细解释了如何执行此操作。

如果您想选择第三个选项,以下是一种简短的方法:

sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/kubectl

这将使kubectl在以常规用户的权限运行的同时打开任何端口。您可以通过使用以下命令检查是否有效:

sudo getcap /usr/bin/kubectl 
/usr/bin/kubectl = cap_net_bind_service+eip

请注意,这授予任何使用该二进制文件的人权限。如果您需要更细粒度的权限,请使用authbind。

注意:正如ng-sek-long评论中提到的kubectl不一定安装在/usr/bin/kubectl上。您应将其替换为您机器上kubectl二进制文件的路径。


只是想添加一条注释,即 /usr/bin/kubectl 可能并不总是正确的路径(例如我的安装在 /usr/local/bin/kubectl 上),使用快速的 whereis kubectl 将能够识别您的 kubectl 二进制文件位置,干杯。 - Ng Sek Long

8

正如用户48678所提到的,您可以使用sudo绕过限制。

添加-E标志以传递环境变量。

mjafary$ sudo -E kubectl port-forward  sa-frontend 88:80

如果您不传递-E参数,则不会设置KUBECONFIG环境变量,例如。

2

我尝试使用以下命令sudo,成功解决了权限被拒绝的问题。

sudo kubectl port-forward sa-frontend 88:80

现在出现了另一个问题,但为了保持清晰明了,我会为此创建一个新的跟踪器。


1

在使用 kubectl 进行端口转发时,如果本地主机上的目标端口已经被占用,则可能会收到权限被拒绝的错误。

请确保您没有在端口88上运行 Docker 容器或其他应用程序。


0

只需使用其他端口进行重定向

sudo -E kubectl port-forward --address 0.0.0.0 nginx-yaml 9000:80

并访问:http://localhost:9000


-3

可能是你本地主机在预期使用IPv4时正在使用IPv6。

错误监听 tcp4 127.0.0.1:88: 绑定:权限被拒绝,无法创建侦听器:错误监听 tcp6 [:: 1]: 88:绑定:权限被拒绝

请禁用IPv6。

你能展示一下输出吗?

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

2
这与IPv6无关。 - user48678

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接