GCP Kubernetes临时容器无法执行ip route add命令问题排查
问题解答
可以从临时调试容器执行该命令,你遗漏了给临时容器配置特权模式和所需Linux能力的步骤,具体说明如下:
- 默认情况下,
kubectl debug创建的临时容器不会继承原Pod的securityContext配置——哪怕原Pod开启了shareProcessNamespace: true,临时容器的权限依然是默认的受限状态,没有添加路由所需的权限。 - 要让临时容器能执行路由添加操作,需要在
kubectl debug命令中显式指定以下参数:--privileged:开启特权模式,和原容器的privileged: true对应--cap-add=NET_ADMIN:添加修改网络配置所需的NET_ADMIN能力(原容器已配置该能力)
- 正确的调试命令应该是:
kubectl debug -it test-pod --image=yyy:1.0 -n test --privileged --cap-add=NET_ADMIN - 补充说明:原容器能正常执行
ip route add命令,是因为它本身配置了privileged: true和NET_ADMIN能力;而临时容器默认没有这些配置,即便共享了进程命名空间,网络操作的权限依然由自身容器的securityContext决定。
内容的提问来源于stack exchange,提问作者Manomugdha
相关产品推荐
相关产品推荐

