K3s 中,CoreDNS 无法启动并报错 Listen: listen tcp :53: bind: permission denied
原因:通常是因为 53 端口(DNS 服务默认端口)需要 root 权限,但容器可能没有足够的权限绑定该端口。以下是解决方案:
1)以特权模式运行 CoreDNS
如果必须使用 53 端口,可以修改 CoreDNS 的 Deployment,使其以 root
权限运行:
# 1. 编辑 CoreDNS Deployment
sudo kubectl -n kube-system edit deployment coredns# 2. 添加 securityContext
# 在 `spec.template.spec` 下添加:
# securityContext:
# runAsUser: 0 # root
# capabilities:
# add: ["NET_BIND_SERVICE"] # 允许绑定低端口# 3. 重启 CoreDNS
sudo kubectl -n kube-system rollout restart deployment coredns