最近发现一个问题,就是在k8s起了一个容器,打算用来检测网络的,但是发现无法使用ping命令。然后其他网络命令也有一部分无法使用

/ # traceroute 114.114.114.114
traceroute: socket: Operation not permitted
/ # ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114): 56 data bytes
ping: permission denied (are you root?)
/ # 

以前用docker的时候没发现有这种情况,现在底层换crio了就遇到这个问题
查了下资料,发现是crio运行容器时为了安全,会把NET_RAW删除,而docker默认是启用的,可以在yaml自行手动添加

securityContext:
  capabilities:
    add:
    - NET_RAW

pod重启后ping命令可以用了
在这里插入图片描述

官网相关知识点:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/security-context/

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐