Как я могу настроить Calico для использования собственной подсети по умолчанию?
Я смог создать кластер Kubernetes на CoreOS, используя Calico, следуя этому руководству.
Как указано в руководстве, Calico создает подсеть по умолчанию 192.168.0.0/16. После запуска служб я могу переопределить подсеть, выполнив следующие команды:
$ export ETCD_AUTHORITY=127.0.0.1:6666
$ calicoctl pool remove 192.168.0.0/16
$ calicoctl pool add 10.244.0.0/16 --nat-outgoing
Все работают хорошо. Тем не менее, я хотел бы автоматизировать вышеизложенное с помощью cloud-config. Я пытался использовать сервис OneShot для выполнения команд, но он работал только частично. Новая подсеть 10.244.0.0/16 была добавлена, но 192.168.0.0/16 не была удалена. Ошибка была:
calicoctl[1330]: 192.168.0.0/16 is not a configured pool.
Я думаю, это потому, что подсеть по умолчанию еще не была создана, когда pool remove
Команда выполнена.
Итак, мои вопросы:
- Есть ли способ настроить Calico, чтобы он использовал мою пользовательскую подсеть по умолчанию?
- Если нет, то есть ли способ опроса Calico для полной инициализации перед выполнением
pool remove
в подсети по умолчанию?
1 ответ
Немного опоздал на вечеринку здесь, но...
С недавними выпусками Calico это легче автоматизировать. calico/node
контейнер будет пытаться создать 192.168.0.0/16
пул по умолчанию. Если вы хотите использовать другой пул, вы можете сделать следующее:
Перед запуском
calico/node
контейнер, создайте пул, который вы хотели бы использовать.Начать
calico/node
контейнер с NO_DEFAULT_POOLS= истинной переменной среды. Это останавливает контейнер от создания пула по умолчанию. ( https://github.com/projectcalico/calico-containers/blob/master/calico_node/filesystem/startup.py)
Используя cloud-init / systemd, я бы сделал что-то вроде этого:
[Service]
Environment=ETCD_AUTHORITY=$private_ipv4:2379
Environment=NO_DEFAULT_POOLS=true
ExecStartPre=/opt/bin/calicoctl pool add <your ipv4 pool> --nat-outgoing
ExecStartPre=/opt/bin/calicoctl pool add <your ipv6 pool>
ExecStart=/opt/bin/calicoctl node --ip=$private_ipv4 --detach=false
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target