Как я могу скопировать файлы между модулями или между узлами в кластере 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