Vadim
Я немного не понял, откуда взялось "can be considered equivalent to giving root access to the underlying nodes"
не все неймспейснуто, так что в некоторых моментах для кернела что рут в контейнере, что рут на хосте - отсюда немного магии, и tada - у тебя есть полноценный рут на хосте
Andrey
такое "немного магии", конечно возможно. Но последний раз такие эксплойты были много лет назад вроде.
Andrey
нужен fakeroot, вобщем, а в баге они собрались ждать поддержки userns
Vadim
такое "немного магии", конечно возможно. Но последний раз такие эксплойты были много лет назад вроде.
Достаточно эксплоита в кернеле - https://www.twistlock.com/2017/12/27/escaping-docker-container-using-waitid-cve-2017-5123/
Vadim
нужен fakeroot, вобщем, а в баге они собрались ждать поддержки userns
тогда к чему этот цирк если а) остальные тулзы уже есть и battle-tested, b) оно половину инструкций пропускает
Andrey
а dind тоже рута просит?
quaternion
привилегированного режима просит
Vlad
dind просит priveleged
Andrey
это ещё хуже тогда
Andrey
Я раньше не задумывался над такими вещами, привык, что в openvz/virtuozzo для контейнеров всё очень секурно (я знаю там только один такой баг, остальное больше DOS атаки).
Andrey
Да и большинство образов, которые я на hub.docker.com видел, от рута работают
Dmytro
если root внутри контейнера == root на хосте, то это security bug докера
в каком-то смысле это так и есть только это не докера баг а ядра линукса которое шарится
Andrey
По дизайну - нет
Dmytro
зависит от точки зрения
Andrey
если бы изоляция контейнера не подразумевалась в дизайне докера, то нахер он нужен и чем он лучше простого chroot?
Pavel
Andrey
в каком-то смысле это так и есть только это не докера баг а ядра линукса которое шарится
перечитал ещё раз и понял, что не понял. Конечно, вы правы, во многих случаях это будет баг ядра.
Denis
Подскажите, как можно отдебажить контейнер, если он вести в статусе CrashLoopBackOff ?
Vitaly
kubectl logs и kubectl describe используйте, с ними ситуация яснее станет.
Mikhail [azalio]
Подскажите, как можно отдебажить контейнер, если он вести в статусе CrashLoopBackOff ?
если он пишет логи в stdout можно еще kubectl logs pod_name --previous ну и локально
Denis
Народ а у вас к8с кластер живет в отдельном VPC ?если да, то почему?
Anonymous
ху из VPC?
Denis
AWS VPC =)
Vladimir
Народ а у вас к8с кластер живет в отдельном VPC ?если да, то почему?
Странный вопрос :) Зависит от того что кластер делает и его security boundaries
Alexander
Коллеги, добрый день! Никто не ставил Gitlab средствами HELM? у меня вот такого рожа проблема: gitlab-gitlab-5dcd88959d-tn57w 0/1 Running 0 7m gitlab-gitlab-postgresql-5fff4f67bb-nkz69 1/1 Running 0 7m gitlab-gitlab-redis-6c88945d56-s9wbh 1/1 Running 0 7m gitlab-gitlab-runner-f7c85548-nm6v2 0/1 CrashLoopBackOff 5 7m bash-3.2# kubectl log gitlab-gitlab-runner-f7c85548-nm6v2 W0417 14:56:19.527870 6219 cmd.go:353] log is DEPRECATED and will be removed in a future version. Use logs instead. + cp /scripts/config.toml /etc/gitlab-runner/ + /entrypoint register --non-interactive --executor kubernetes Running in system-mode. --- bash-3.2# kubectl log gitlab-gitlab-runner-f7c85548-nm6v2 ERROR: Registering runner... failed runner=tQtCbx5U status=couldn't execute POST against http://gitlab-gitlab.default:8005/api/v4/runners: Post http://gitlab-gitlab.default:8005/api/v4/runners: dial tcp 10.233.38.241:8005: i/o timeout PANIC: Failed to register this runner. Perhaps you are having network problems --- kubectl describe pod gitlab-gitlab-5dcd88959d-tn57w Warning Unhealthy 14m (x21 over 18m) kubelet, k8s-node1.gettransfer.cz Readiness probe failed: Get http://10.233.95.63:8005/health_check?token=SXBAQichEJasbtDSygrD: dial tcp 10.233.95.63:8005: getsockopt: connection refused Warning Unhealthy 4m (x37 over 16m) kubelet, k8s-node1.gettransfer.cz Readiness probe failed: HTTP probe failed with statuscode: 502 --- Не знаю даже в какую чторону и откуда смотреть на эту проблему Спасибо
Andrey
Нужно ли использовать разные кластеры для дев и прод? Или можно на одном в разных пространствах имён?
Stas
Нужно ли использовать разные кластеры для дев и прод? Или можно на одном в разных пространствах имён?
https://cloud.google.com/solutions/prep-kubernetes-engine-for-prod почитайте пока есть возможность
Anonymous
Коллеги, добрый день! Никто не ставил Gitlab средствами HELM? у меня вот такого рожа проблема: gitlab-gitlab-5dcd88959d-tn57w 0/1 Running 0 7m gitlab-gitlab-postgresql-5fff4f67bb-nkz69 1/1 Running 0 7m gitlab-gitlab-redis-6c88945d56-s9wbh 1/1 Running 0 7m gitlab-gitlab-runner-f7c85548-nm6v2 0/1 CrashLoopBackOff 5 7m bash-3.2# kubectl log gitlab-gitlab-runner-f7c85548-nm6v2 W0417 14:56:19.527870 6219 cmd.go:353] log is DEPRECATED and will be removed in a future version. Use logs instead. + cp /scripts/config.toml /etc/gitlab-runner/ + /entrypoint register --non-interactive --executor kubernetes Running in system-mode. --- bash-3.2# kubectl log gitlab-gitlab-runner-f7c85548-nm6v2 ERROR: Registering runner... failed runner=tQtCbx5U status=couldn't execute POST against http://gitlab-gitlab.default:8005/api/v4/runners: Post http://gitlab-gitlab.default:8005/api/v4/runners: dial tcp 10.233.38.241:8005: i/o timeout PANIC: Failed to register this runner. Perhaps you are having network problems --- kubectl describe pod gitlab-gitlab-5dcd88959d-tn57w Warning Unhealthy 14m (x21 over 18m) kubelet, k8s-node1.gettransfer.cz Readiness probe failed: Get http://10.233.95.63:8005/health_check?token=SXBAQichEJasbtDSygrD: dial tcp 10.233.95.63:8005: getsockopt: connection refused Warning Unhealthy 4m (x37 over 16m) kubelet, k8s-node1.gettransfer.cz Readiness probe failed: HTTP probe failed with statuscode: 502 --- Не знаю даже в какую чторону и откуда смотреть на эту проблему Спасибо
гитлаб на 8005 порту слушает? Подозрительно
Alexander
да, ставил из helm fetch gitlab/gitlab-omnibus --version 0.1.37 --untar
Andrey
https://cloud.google.com/solutions/prep-kubernetes-engine-for-prod почитайте пока есть возможность
Спс. Это похоже на специфичный для gcp подход. У меня будет aks.
Stas
Спс. Это похоже на специфичный для gcp подход. У меня будет aks.
общие представления о здравом смысле не транзитивны в рамках двух провайдеров с поддержкой регионов и VDC?
Andrey
Впрочем в интернете похоже много есть на эту тему, буду читать
Andrey
общие представления о здравом смысле не транзитивны в рамках двух провайдеров с поддержкой регионов и VDC?
У ажура может не быть такой хорошей поддержки. У них это ещё в статусе preview
Alexander
гитлаб на 8005 порту слушает? Подозрительно
ставил из helm fetch gitlab/gitlab-omnibus --version 0.1.37 --untar и затем менял в gitlab-omnibus/templates/gitlab/gitlab-svc.yaml - name: web port: 80 targetPort: workhorse
Anonymous
тогда и раннере нужно поменять порт гитлаба. Он у него в configMaps указывается
Alexander
тогда и раннере нужно поменять порт гитлаба. Он у него в configMaps указывается
спасибо, вот только не пойму куда тут порт прописать bash-3.2# cat gitlab-omnibus/charts/gitlab-runner/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: {{ template "fullname" . }} labels: app: {{ template "fullname" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" data: entrypoint: | #!/bin/bash set -xe cp /scripts/config.toml /etc/gitlab-runner/ # Register the runner /entrypoint register --non-interactive \ --executor kubernetes \ {{- range .Values.runners.imagePullSecrets }} --kubernetes-image-pull-secrets {{ . | quote }} \ {{- end }} # Start the runner /entrypoint run --user=gitlab-runner \ --working-directory=/home/gitlab-runner config.toml: | concurrent = {{ .Values.concurrent }} check_interval = {{ .Values.checkInterval }}
Anonymous
config.toml: | concurrent = {{ .Values.concurrent }} check_interval = {{ .Values.checkInterval }}
Anonymous
вот здесь похоже
Anonymous
там чёто типа coordinatorUrl
Andrey
Нужно ли использовать разные кластеры для дев и прод? Или можно на одном в разных пространствах имён?
Пришел к выводу, что для облака проще и лучше разные кластеры, потому что control plane бесплатная.
Anonymous
Пришел к выводу, что для облака проще и лучше разные кластеры, потому что control plane бесплатная.
у меня на vps тоже раздельные прод и дев. Так надёжнее. Понятнее.
Alexander
там чёто типа coordinatorUrl
извинте, но не очень понятно каким образом изменить
Anton
yaml покажи
https://pastebin.com/bDDjwBYM
Andrey
а deployment? там порт объявлен? Напрямую к поду по ip пробовал подключаться, может, не в сервисе дело?
Anonymous
извинте, но не очень понятно каким образом изменить
попробуй заэкзекьются в под с раннером и выполни “gitlab-runner register”
Anonymous
извинте, но не очень понятно каким образом изменить
потом иди сюда “/etc/gitlab-runner/config.toml” и копируй что получилось в configMap
Anton
Andrey
то есть как?
Andrey
сравните с тем же dns'ом
Anton
у меня проблема не в том, что сервис недоступен, а в том что я не могу его сделать одновременно доступным и по TCP и по UDP. Одна из подсекций секции ports (которая ниже) всегда пропадает после kubectl apply
Anton
то есть вот применяю я тот манифест, что скинул, а на выходе только: - name: s-tcp port: 5201 protocol: TCP targetPort: 5201
Anton
если поменяю блоки местами (перенесу UDP выше), то останется только UDP блок
Andrey
а что пишет kubectl apply?
Andrey
как запускаешь? всё подряд или только сервис?
Anonymous
да вот же https://github.com/kubernetes/kubernetes/issues/2995
Anton
он пишет, что все хорошо. В общем, я разобрался. Я делал не совсем так, как я описывал. Я редактировал через kubectl edit svc <service name>, и добавлял вручную второй блок. Он не сохранялся. А сейчас я действительно попробовал применить через apply, и все заработало.
Anonymous
И чё прям работает по обоим протоколам?
Anton
теперь я вижу: s ClusterIP 10.8.241.181 <none> 5201/TCP,5201/UDP
Anton
работает по обоим, да
Anonymous
странно, потомучто в интернетах везде пишут, что это невозможно)
Anton
я тестирую через iperf, в одном поде у меня iperf3 -s, во втором iperf3 -uc s
Anton
то есть второй говорит, шли хосту "s" udp пакеты. но фишка в том, что они сначала договариваются по TCP о чем-то
Anonymous
может поэтому и работает?
Anton
если создать только TCP или только UDP сервис, то "iperf3 -uc" ("u" means UDP) не работает
Anton
"iperf -c" (TCP default) работает если сервис TCP, но не работает если UDP
Anonymous
т.е. работает только iperf по TCP?
Anton
еще раз: 1. iperf3 -c <host> слать хосту TCP пакеты 2. iperf3 -uc <host> слать хосту UDP пакеты 1 — работает если сервис TCP 2 — работает если сервис и TCP и UDP
Anton
причина того, что -uc работает только при условии, что TCP тоже доступен в том, что изначально клиент с сервером о чем-то договариваются по TCP и только потом клиент начинает слать UDP пакеты. Если договоренность по TCP не состоялась, клиент даже не пытается слать UDP
Anton
т.е. работает только iperf по TCP?
то есть я бы ответил: "совсем без TCP он не работает"
Anton
ну, кстати, может есть какие-то флаги, чтобы заставить
Anton
а вот с LoadBalancer на GKE не прокатило: cannot create an external load balancer with mix protocols
Anonymous
sudo nmap -p <port> -sU <host>
Anonymous
может он не будет договариваться по tcp и тоже пошлёт)
Alexander
попробуй заэкзекьются в под с раннером и выполни “gitlab-runner register”
не выходит bash-3.2# kubectl get pods ... gitlab-gitlab-764bd7665-4hcxr 0/1 Running 10 51m gitlab-gitlab-runner-f7c85548-sdsqz 0/1 CrashLoopBackOff 13 51m ... kubectl exec -it gitlab-gitlab-runner-f7c85548-sdsqz /bin/bash error: unable to upgrade connection: container not found ("gitlab-gitlab-runner") если смотреть в дашборде, то такой лог у раннера + cp /scripts/config.toml /etc/gitlab-runner/ + /entrypoint register --non-interactive --executor kubernetes Running in system-mode. ERROR: Registering runner... failed runner=tQtCbx5U status=couldn't execute POST against http://gitlab-gitlab.default:8005/api/v4/runners: Post http://gitlab-gitlab.default:8005/api/v4/runners: dial tcp 10.233.20.115:8005: i/o timeout PANIC: Failed to register this runner. Perhaps you are having network problems сам же gitlab пишет Unable to mount volumes for pod "gitlab-gitlab-764bd7665-4hcxr_default(05537fb9-423c-11e8-898a-3ebe3629b41e)": timeout expired waiting for volumes to attach/mount for pod "default"/"gitlab-gitlab-764bd7665-4hcxr". list of unattached/unmounted volumes=[registry config] Readiness probe failed: Get http://10.233.95.11:8005/health_check?token=SXBAQichEJasbtDSygrD: dial tcp 10.233.95.11:8005: getsockopt: connection refused Back-off restarting failed container как быть?(
Andrey
Где кубернетс развернут, какая сетка используется?