gpt4 book ai didi

docker - io.k8s.api.core.v1.PodSecurityContext中的未知字段 "capabilities"(在容器/k8s容器中运行tshark)

转载 作者:行者123 更新时间:2023-12-02 11:30:00 25 4
gpt4 key购买 nike

我已经构建了一个包含tshark的docker镜像(它将用于从kubernetes容器中进行各种手动调试的镜像)。

我已经在运行该镜像的kubernetes中部署了一个容器。但是,当我访问该容器并尝试运行tshark时,我得到了:

$ kubectl exec myapp-cbd49f587-w2swx -it bash
root@myapp-cbd49f587-w2swx:/# tshark -ni any -f "test.host" -w sample.pcap -F libpcap
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
tshark: cap_set_proc() fail return: Operation not permitted

谷歌搜索该错误:

https://www.weave.works/blog/container-capabilities-kubernetes/
https://unofficial-kubernetes.readthedocs.io/en/latest/concepts/policy/container-capabilities/

看来我需要为我的容器/荚配置一个 securityContext。在我的deployment.yaml中,我添加了:
  containers:
...
securityContext:
capabilities:
add:
- NET_ADMIN

但是,当我应用该部署时,我得到:
error: error validating "deployment.yaml": error validating data: ValidationError(Deployment.spec.template.spec.securityContext): unknown field "capabilities" in io.k8s.api.core.v1.PodSecurityContext; if you choose to ignore these errors, turn validation off with --validate=false

添加 --validate=false可以消除错误,但是也意味着securityContext被忽略了。

是什么让我无法设置:
  securityContext:
capabilities:
add:
- NET_ADMIN

根据指南,我发现这应该没问题。

我也看过了(看起来是非自由的):

https://sysdig.com/blog/tracing-in-kubernetes-kubectl-capture-plugin/

所以可能正确的方法是使用类似的工具( ksniff)或设置 sidecar container。但是我仍然很好奇为什么会出现上述错误。

最佳答案

专门针对错误,您只发布了 list 的一部分,对此我们可以看到,您将securityContext:放在了与containers:相同的级别上:

  containers:
...
securityContext:
capabilities:
add:
- NET_ADMIN
documentation所示,它应位于 containers:下:

To add or remove Linux capabilities for a Container, include thecapabilities field in the securityContext section of the Containermanifest.


例子:
apiVersion: apps/v1
kind: Deployment
metadata:
name: security-context-demo
spec:
replicas: 2
selector:
matchLabels:
app: security-context-demo
template:
metadata:
labels:
app: security-context-demo
spec:
containers:
- name: sec-ctx-4
image: gcr.io/google-samples/node-hello:1.0
securityContext:
capabilities:
add:
- NET_ADMIN

关于docker - io.k8s.api.core.v1.PodSecurityContext中的未知字段 "capabilities"(在容器/k8s容器中运行tshark),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61374443/

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