我在本地计算机上使用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}]
答案 0 :(得分:3)
kubectl
无法打开端口88,因为它是特权端口。所有<1024端口都需要特殊权限。
有很多方法可以解决您的问题。
kubectl port-forward sa-frontend 8888:80
kubectl
用作root:sudo kubectl port-forward sa-frontend 88:80
(不建议,然后kubectl会以root身份查找其配置)kubectl
二进制文件打开特权端口的功能。 This answer深入说明了操作方法。如果您想使用第三个选项,这是一种简单的方法:
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。
答案 1 :(得分:0)
可能是您的本地主机-当需要ipv4时,本地计算机正在使用ipv6。
错误监听 tcp4 127.0.0.1:88:绑定:权限被拒绝,无法执行 创建监听器:错误监听 tcp6 [:: 1]:88:绑定:权限 拒绝
请禁用IPv6。
您可以显示输出吗?:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
答案 2 :(得分:0)
我按如下方式尝试了sudo,这使我摆脱了权限拒绝问题。 sudo kubectl port-forward sa-frontend 88:80
我现在遇到了一个不同的问题,但是将为此创建一个新的跟踪器,以保持一切正常
答案 3 :(得分:0)
如果本地主机上的目标端口已在使用kubectl进行端口转发,则会收到权限拒绝错误。
确保您没有在端口88上运行的Docker容器或其他应用程序。
答案 4 :(得分:0)
As mentioned由user48678提供,您可以使用sudo
绕过限制。
添加-E
标志以通过环境。
mjafary$ sudo -E kubectl port-forward sa-frontend 88:80
如果您不传递-E
,则不会设置KUBECONFIG
环境变量。