Kubernetes Port Forwarding - 错误侦听tcp4 127.0.0.1:88:bind:权限被拒绝

问题描述 投票:1回答:3

我在我的本地机器上使用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}] 
kubernetes portforwarding minikube
3个回答
5
投票

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二进制文件打开特权端口的权限。 This answer深入解释了如何做到这一点。

如果你想选择第3个选项,可以采用以下方法:

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。


0
投票

可能是你的本地主机 - 本地机器在预期使用ipv4时正在使用ipv6。

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

请禁用IPv6。

你能告诉我的输出吗?:

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

0
投票

我尝试了sudo如下,它让我超过了许可被拒绝的问题。 sudo kubectl port-forward sa-frontend 88:80

我现在遇到了一个不同的问题,但会为此创建一个新的跟踪器以保持正确

© www.soinside.com 2019 - 2024. All rights reserved.