Как я могу скопировать файлы между модулями или между узлами в кластере kubernetes?

Возможно ли это внутри кластера kubernetes?

Все примеры, которые я нашел, копируют с локального диска на модуль или наоборот.

Или единственный вариант копирования с узла на узел, например, через ssh, scp или с другими утилитами?

Спасибо за ответы.

4 ответа

Невозможно скопировать кластер в кластер. Вам нужно использовать kubectl cp чтобы скопировать его локально, затем скопируйте файл обратно:

kubectl cp <pod>:/tmp/test /tmp/test
kubctl cp /tmp/test <pod>:/tmp/test

Если вы пытаетесь обмениваться файлами между модулями, и только для одного модуля требуется доступ для записи, вам, вероятно, нужно смонтировать том ro на нескольких модулях или использовать хранилище объектов, такое как S3. Копирование файлов в модули и из них действительно не должно быть чем-то, что вы делаете часто, это анти-паттерн

Прочтите эту статью.

Вкратце это команда:

      kubectl exec pod-01 -- tar cf - /dir1 /dir2 | kubectl exec -i pod-02 -- tar xvf - -C /

Вы можете создать образ с сервером openssh, а затем запустить в него scp.

Докерфайл:

      ...
RUN mkdir /root/.ssh
RUN apt install -y openssh-server
ADD id_rsa* authorized_keys /root/.ssh/
RUN chown root.root /root/.ssh/ -R
...

Вам нужно будет получить IP-адрес этого модуля, чтобы вы могли подключиться к нему по ssh. Убедитесь, что внутри этого модуля запущен sshd.

Вот способ скопировать из вашего контейнера на локальный компьютер:

      kubectl cp <file-spec-src> <file-spec-dest>

пример

      kubectl cp your-pod:/path/to/file /local/path
kubectl cp /local/path your-pod:/path/to/file
Другие вопросы по тегам