如何使用 Skaffold 转发特权端口
How to forward privileged ports with Skaffold
如何让 Skaffold
转发 privileged/protected/special 编号低于 1024
的端口?在我的 skaffold.yaml
中,我添加了:
portForward:
- resourceType: service
resourceName: foo
port: 80
localPort: 80
它适用于所有不受保护的端口,但在端口 80
的情况下,Skaffold
会自动选择另一个不受保护的端口而不是 80
。
根据每个用户定义端口上的文档 Skaffold
运行s kubectl port-forward
,所以我授予 kubectl
二进制文件打开特权端口的能力这个命令 sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/kubectl
.
直接 运行ning kubectl port-forward services/foo 80:80
时一切正常,但是当我 运行 skaffold dev --port-forward
时它仍然选择另一个未受保护的端口。
我一直在 Ubuntu 20.04
上使用 Skaffold v1.28.1
和 Minikube v1.22.0
。
这应该有效。我们更改了 Skaffold 的行为以防止它分配系统端口(≤ 1024),但用户定义的具有显式 localPort
s 的端口转发仍将受到尊重。
你没有说你看到分配了哪些端口,但我怀疑它们是端口 4503–4533,你在其中遇到了一个错误(#6312). This bug is now fixed and will be in the next release. You can also use the "bleeding-edge" build which is built from HEAD: the installation instructions 有从哪里获取这些预分配器的详细信息-内置二进制文件。
我通过授予为 skaffold
和 kubectl
二进制文件打开特权端口的能力解决了这个问题:
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/kubectl;
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/skaffold;
如何让 Skaffold
转发 privileged/protected/special 编号低于 1024
的端口?在我的 skaffold.yaml
中,我添加了:
portForward:
- resourceType: service
resourceName: foo
port: 80
localPort: 80
它适用于所有不受保护的端口,但在端口 80
的情况下,Skaffold
会自动选择另一个不受保护的端口而不是 80
。
根据每个用户定义端口上的文档 Skaffold
运行s kubectl port-forward
,所以我授予 kubectl
二进制文件打开特权端口的能力这个命令 sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/kubectl
.
直接 运行ning kubectl port-forward services/foo 80:80
时一切正常,但是当我 运行 skaffold dev --port-forward
时它仍然选择另一个未受保护的端口。
我一直在 Ubuntu 20.04
上使用 Skaffold v1.28.1
和 Minikube v1.22.0
。
这应该有效。我们更改了 Skaffold 的行为以防止它分配系统端口(≤ 1024),但用户定义的具有显式 localPort
s 的端口转发仍将受到尊重。
你没有说你看到分配了哪些端口,但我怀疑它们是端口 4503–4533,你在其中遇到了一个错误(#6312). This bug is now fixed and will be in the next release. You can also use the "bleeding-edge" build which is built from HEAD: the installation instructions 有从哪里获取这些预分配器的详细信息-内置二进制文件。
我通过授予为 skaffold
和 kubectl
二进制文件打开特权端口的能力解决了这个问题:
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/kubectl;
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/skaffold;