Запуск / остановка служб на хосте как часть развертывания модуля K8S - PullRequest
0 голосов
/ 01 сентября 2018

Мы запускаем кластеры K8S на основе пользовательских образов виртуальных машин, которые имеют корпоративные стандартные сервисы и утилиты. Как контейнер / контейнер могут иметь к ним доступ? Например, как запустить службу на хосте как часть deploy / undeploy

1 Ответ

0 голосов
/ 01 сентября 2018

Вы можете смонтировать системные сокеты в контейнер модуля. Оттуда вам либо нужны разрешения polkit для запуска команд от имени непривилегированного пользователя, либо вам нужно запустить привилегированный контейнер. Спецификация Pod для этого выглядит следующим образом:

kind: Pod
metadata:
  name: dbus-pod
  labels:
    app: dbus
spec:
  containers:
  - name: dbus-container
    image: centos:7
    command: ['systemctl','status','sshd']
    securityContext:
      privileged: true
    volumeMounts:
    - name: run-dbus
      mountPath: /var/run/dbus
    - name: run-systemd
      mountPath: /run/systemd
    - name: bin-systemctl
      mountPath: /usr/bin/systemctl
      readOnly: true
    - name: etc-systemd
      mountPath: /etc/systemd/system
      readOnly: true
  restartPolicy: Never
  volumes:
  - name: run-dbus
    hostPath:
    path: /var/run/dbus
  - name: run-systemd
    hostPath:
    path: /run/systemd
  - name: bin-systemctl
    hostPath:
    path: /usr/bin/systemctl
  - name: etc-systemd
    hostPath:
    path: /etc/systemd/system

Затем вы должны выяснить, как вы хотите запланировать Pod в вашем кластере. Если вы хотите запустить что-то на каждом узле один раз, вы можете создать DaemonSet и удалить его. A Job может быть более подходящим, если у вас есть селекторы, чтобы определить, где вы хотите запустить Pod.

Существуют также проекты, такие как go-systemd , которые управляют dbus через сокет /var/run/dbus и заменяют все настройки systemd / systemctl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...