我希望pod中的所有进程看到相同的网络和进程表,以及与主机进程共享任何IPC。 我知道当我们使用docker时可以利用以下命令。
docker run -it --privileged --ipc=host --net=host --pid=host \
-v /:/host -v /run:/run -v /etc/localtime:/etc/localtime \
--name privcontainer centos7 /bin/bash
另一方面,有没有办法使用Kubernetes运行超级特权容器? 如果可能的话,我想知道编写pod yaml文件的方法。
答案 0 :(得分:1)
容器规范的privileged
上有SecurityContext
个标记。
查看documentation了解详情。
我只能从v1.4文档中找到一个示例:
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
- name: hello-world-container
# The container definition
# ...
securityContext:
privileged: true ###Here is what you are looking for
seLinuxOptions:
level: "s0:c123,c456"
我确信你知道,但作为一般警告,特权将删除所有容器安全设置并打开群集以防止潜在的安全漏洞。
答案 1 :(得分:0)
要禁用容器PID的命名空间,从而允许该容器查看主机上的所有进程,您需要在pod规范中指定hostPID: true
。
如果要从Pod中检查Kubernetes主机,可能会发现此清单很有用:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: debug
spec:
selector:
matchLabels:
app: debug
template:
metadata:
labels:
app: debug
name: debug
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
hostNetwork: true
hostPID: true
containers:
- name: linux
image: alpine
args:
- sleep
- "3600"
securityContext:
privileged: true
runAsGroup: 0
runAsUser: 0
volumeMounts:
- mountPath: /mnt/host
name: host
volumes:
- hostPath:
path: /
type: ""
name: host
这将实例化群集上每个节点(包括对您可见的控制平面节点)上的“调试”窗格。该pod可以访问主机上的所有PID,可以看到其所有网络,并且可以在/mnt/host
上浏览节点文件系统。