如何使Skaffold
转发编号低于1024
的特权/保护/特殊端口?在我的skaffold.yaml
中我添加了:
portForward:
- resourceType: service
resourceName: foo
port: 80
localPort: 80
对于所有未保护的端口都可以正常工作,但在端口80
的情况下,Skaffold
会自动选择另一个未保护的端口而不是80
。
根据文档Skaffold
在每个用户定义的端口上运行kubectl port-forward
,因此我授予kubectl
二进制文件使用sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/kubectl
命令打开特权端口的能力。
直接运行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)。这个错误现在已经修复,并将在下一个版本中修复。你也可以使用"流血边缘"从HEAD构建的build:安装说明详细说明了从哪里获取这些预构建的二进制文件。
我通过授予为skaffold
和kubectl
二进制文件打开特权端口的能力来解决这个问题:
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/kubectl;
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/skaffold;