У меня есть внешний инструмент мониторинга, который периодически подключается по ssh и проверяет различные системные параметры Linux-сервера (cpu, mem и т. Д.). Однако этот подход не работает с CoreOS, поскольку он ничего не теряет (sysstat, tcpdump и так далее). Установка программного обеспечения в контейнеры докеров не является вариантом, поскольку я не могу изменить команды, запускаемые инструментом внешнего мониторинга (если не переопределить их - iostat для докеров, бла, бла).
Я пытался установить gcc, но для этого сам по себе требует компилятора c в качестве предварительного условия.
Вопрос: как мне запустить iostat / tcpdump / etc. на хосте CoreOS, а не на контейнере, когда требуется gcc?
Я успешно установил iostat
установив его в контейнер панели инструментов fedora / ubuntu и затем скопировав на хост-компьютер: cp /usr/bin/iostat /media/root/home/core/
.
Однако это не сработает для gcc, поскольку файловая система предназначена для ro, а не rw. У gcc есть cc1 как зависимость, а у cc1 отсутствуют две зависимости:
core@test ~/meh $ ldd gcc
linux-vdso.so.1 (0x00007ffd30383000)
libm.so.6 => /lib64/libm.so.6 (0x00007f752f769000)
libc.so.6 => /lib64/libc.so.6 (0x00007f752f3b9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f752fa6d000)
core@test ~/meh $ ldd cc1
linux-vdso.so.1 (0x00007ffc5d9e9000)
libmpfr.so.1 => not found
libgmp.so.3 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8238144000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8237d94000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8238348000)
[root@test ~]# cp /usr/lib64/libmpfr.so.4 /media/root/lib64/
cp: cannot create regular file '/media/root/lib64/libmpfr.so.4': Read-only file system
Я считаю, что единственный способ - статическая компиляция gcc внутри одной машины, а затем отправка исполняемого файла на машину CoreOS. После этого все должно быть проще, так как у нас был бы gcc, который помог бы нам компилировать другие ресурсы, если это необходимо :)