Я просто развернул мою первую CoreOS. Процес описанный в документах немного запутанный и немного не понятный в некоторых местах. CoreOS все еще разрабатывается, потому документацию они улучшат, я уверен в этом. В то же время, я надеюсь, этот пост немного поможет другим разобраться.
Я взял стандартный VPS от моего хостинг-провайдера, виртуализация работает на KVM. Мой хостинг-провайдер предоставляет консоль через NoVNC и предоставляет возможность подключать загрузочный ISO образ.Загрузка из ISO
С помощью прилагаемого ISO от CoreOS, загрузите виртуальную машину. Вы попадете в конечном итоге в командную строку под пользовалелем core . В этот момент, вы просто запустили LiveCD и еще ничего не установили на диск (в документации это нигде не упоминается!).
В моем случае сеть еще не настроена, так что нужно это сделать вручную следующим образом:
В моем случае сеть еще не настроена, так что нужно это сделать вручную следующим образом:
sudo ifconfig <network port> <ip address> netmask <netmask>
sudo route add default gw <default gateway IP>
Добавляем
/etc/resolv.conf
IP ваших серверов имен. Я использую гугловые. nameserver 8.8.8.8Конфигурационный файл
После того, как сеть настроена, следующее что нужно сделать, это составить конфигурационный файл, который будет использоваться каждый раз, когда уставливается CoreOS с диска. На другом хосте, куда можно попасть через сеть, я создал следующий файл с именем cloud-config.yml:
#cloud-config
hostname: myhostname
coreos:
etcd:
addr: $private_ipv4:4001
peer-addr: $private_ipv4:7001
units:
- name: etcd.service
command: start
- name: fleet.service
command: start
- name: static.network
content: |
[Match]
Name=ens3
[Network]
Address=x.x.x.109/24
Gateway=x.x.x.1
DNS=x.x.x.10
DNS=x.x.x.11
DNS=8.8.8.8
users:
- name: core
ssh-authorized-keys:
- ssh-rsa AAAA<rest of ssh key goes here>
- groups:
- sudo
- docker
Укажите свои
hostname
, discovery:
, [Network]
и ssh-rsa
параметры.
ВАЖНО: не забудьте запустить конфигурационный файл через YAML парсер, чтобы проверить наличие глупых ошибок. Например, я случайно забыл поставить символ - перед одним из ключей, по этому конфиг не мог запустить установку.
Установка
- Скопируйте конфигурационный файл к себе на VPS.
wget http://externalhost/cloud-config.yml
- Установить CoreOS с помощью команды:
coreos-install -d /dev/vda -c cloud-config.yml
Замените
/dev/vda
на имя вашего диска и cloud-config.yml
на имя вашего конфигурационного файла. Установка займет порядка 30 секунд. По окончанию отмонтируйте ISO образ и перезагрузите виртуальную машину
После загрузки вы увидите приглашение ввода логина. Если ваш конфигурационный был успешно загружен, вы должны увидеть IP-адрес и имя хоста (вы его указали в конфигурации), перечисленных чуть выше. Вы также можете зайти на сервер по SSH, ssh core@x.x.x.x
Фаервол
Фаервол
По умолчанию CoreOS загружается с полностью открытыми политиками брандмауэра. В большинстве случаев это хорошо, поскольку интерфейс управления вашего хоста будет изолирован от сети. В моем случае нужно настроить некоторые основные правила Iptables.
Это можно сделать добавив в конфигурационный файл
cloud-config.yml
:- name: iptables.service
command: start
content: |
[Unit]
Description=Packet Filtering Framework
DefaultDependencies=no
After=systemd-sysctl.service
Before=sysinit.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables-restore /etc/iptables.rules ; /usr/sbin/ip6tables-restore /etc/ip6tables.rules
ExecReload=/usr/sbin/iptables-restore /etc/iptables.rules ; /usr/sbin/ip6tables-restore /etc/ip6tables.rules
ExecStop=/usr/sbin/iptables --flush;/usr/sbin/ip6tables --flush
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Затем я создал файлы /etc/iptables.rules и /etc/ip6tables.rules, содержащие соответствующие наборы правил. Они применяются каждый раз, когда загрузается система.
Поиск проблем
Если по какой-то причине, ваш конфигурационный не сработал:
- Перезапуститесь с образа ISO.
- Смонтируйте раздел , например, так.
sudo mount /dev/vda9 /mnt
. (посмотреть все диски можно такsudo parted /dev/vda print
) - Используйте
journalctl
чтобы увидеть логи загрузки, поискать ошибки связанные с устновкойjournalctl -D /mnt/var/log/journal | grep cloud
- Отредактируйте файл
/mnt/var/lib/coreos-install/user_data
и сделайте какие-то изменения в системе - Отмонтируйте ISO образ и перезапуститесь
Источник http://blog.mapstrata.com/post/CoreOS_install_to_a_VPS/