gpt4 book ai didi

kubernetes - 如何使用设置 "didn' 和 `hostNetwork: true` 调试 `NET_BIND_SERVICE` t have free ports"错误

转载 作者:行者123 更新时间:2023-12-03 13:13:05 51 4
gpt4 key购买 nike

我需要一些帮助来调试错误:0/1 nodes are available: 1 node(s) didn't have free ports for the requested pod ports. 有人可以帮忙吗?

我正在尝试使用 Kubernetes 的 Docker Desktop 风格在 Mac 上运行一个 pod,版本是 2.1.0.1 (37199)。我想尝试使用 hostNetwork 模式,因为它的效率和需要打开的端口数量(以千计)。仅设置 hostNetwork: true 没有错误,但我也看不到主机上打开的端口,也看不到容器内的主机网络接口(interface)。因为我还需要打开端口 443,所以我添加了 NET_BIND_SERVICE 的功能,这就是它开始抛出错误的时候。

我在容器中运行了 lsof -i (ubuntu:18.04),然后在我的 Mac 上运行了 sudo lsof -i,我没有看到任何冲突。然后,我还查看了 /var/lib/log/containers/kube-apiserver-docker-desktop_kube-system_kube-apiserver-*.log,但我没有看到任何线索。谢谢!

附加信息:
我在容器内运行了以下内容:

# ss -nltp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 0.0.0.0:10024 0.0.0.0:* users:(("pnnsvr",pid=1,fd=28))
LISTEN 0 5 0.0.0.0:2443 0.0.0.0:* users:(("pnnsvr",pid=1,fd=24))
LISTEN 0 5 0.0.0.0:10000 0.0.0.0:* users:(("pnnsvr",pid=1,fd=27))
LISTEN 0 50 0.0.0.0:6800 0.0.0.0:* users:(("pnnsvr",pid=1,fd=14))
LISTEN 0 1 0.0.0.0:6802 0.0.0.0:* users:(("pnnsvr",pid=1,fd=13))
LISTEN 0 50 0.0.0.0:443 0.0.0.0:* users:(("pnnsvr",pid=1,fd=15))

然后,我在我的 Mac(主机)上运行 netstat 并搜索了这些端口,但我找不到冲突。如果需要,我很乐意提供 netstat 的输出(767 行)。

这是yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: pnnsvr
labels:
app: pnnsvr
env: dev
spec:
replicas: 1
selector:
matchLabels:
app: pnnsvr
env: dev
template:
metadata:
labels:
app: pnnsvr
env: dev
spec:
hostNetwork: true
containers:
- name: pnnsvr
image: dev-pnnsvr:0.92
args: ["--root_ip=192.168.15.194"]
# for using local images
imagePullPolicy: Never
ports:
- name: https
containerPort: 443
hostPort: 443
- name: cport6800tcp
containerPort: 6800
hostPort: 6800
protocol: TCP
- name: cport10000tcp
containerPort: 10000
hostPort: 10000
protocol: TCP
- name: cport10000udp
containerPort: 10000
hostPort: 10000
protocol: UDP
- name: cport10001udp
containerPort: 10001
hostPort: 10001
protocol: UDP
#test
- name: cport23456udp
containerPort: 23456
hostPort: 23456
protocol: UDP
securityContext:
capabilities:
add:
- SYS_NICE
- NET_BIND_SERVICE
- CAP_SYS_ADMIN

最佳答案

我不小心解决了这个问题,我通过弹跳 pod 而不是使用 kubectl apply -f ... 来解决这个问题。 .弹跳 pod 后不久,新的 pod 就会变成 go。我的理论是 Kubernetes 会启动一个新的 pod,并在杀死旧的 pod 之前先做好一切准备。由于旧 pod 仍然打开端口,新 pod 将看到这些端口被占用,因此错误:0/1 nodes are available: 1 node(s) didn't have free ports for the requested pod ports被触发。

关于kubernetes - 如何使用设置 "didn' 和 `hostNetwork: true` 调试 `NET_BIND_SERVICE` t have free ports"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614818/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com