Я создал docker образ, содержащий tshark
(его образ, который я собираюсь использовать для выполнения различных ручных отладок из модуля 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
для моего контейнера / контейнера. В моем deploy.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 ) или настроить контейнер с коляской . Но мне все еще интересно, почему я получаю вышеуказанную ошибку.