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

Итак, мои вопросы:

  1. Есть ли способ настроить Calico, чтобы он использовал мою пользовательскую подсеть по умолчанию?
  2. Если нет, то есть ли способ опроса Calico для полной инициализации перед выполнением pool remove в подсети по умолчанию?

1 ответ

Немного опоздал на вечеринку здесь, но...

С недавними выпусками Calico это легче автоматизировать. calico/node контейнер будет пытаться создать 192.168.0.0/16 пул по умолчанию. Если вы хотите использовать другой пул, вы можете сделать следующее:

  1. Перед запуском calico/node контейнер, создайте пул, который вы хотели бы использовать.

  2. Начать 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
Другие вопросы по тегам