io.k8s.api.core.v1.PodSecurityContext中的未知字段“功能”(在容器/ k8s容器中运行tshark)

问题描述 投票:1回答:1

我构建了一个包含tshark的docker映像(该映像将用于从kubernetes pod进行各种手动调试)。

我已经在运行该映像的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。但是我仍然很好奇为什么会出现上述错误。

docker kubernetes tshark
1个回答
0
投票

[专门针对该错误,您只发布了清单的一部分,并对此进行查看,我们可以看到您将securityContext:containers:放在同一级别:

  containers:
     ...
  securityContext:
    capabilities:
      add:
        - NET_ADMIN

它应在此示例中的容器内:

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

此示例摘自documentation,如果您需要更多详细信息,可以参考该示例。

© www.soinside.com 2019 - 2024. All rights reserved.