我已经能够使用Calico在此guide之后在CoreOS上创建Kubernetes集群。
如指南中所述,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
命令时尚未创建默认子网。
所以我的问题是:
pool remove
之前完全初始化
子网?答案 0 :(得分:0)
这里的派对有点晚了,但是......
随着最近发布的Calico,这更容易实现自动化。 calico/node
容器将默认尝试创建192.168.0.0/16
池。如果您想使用其他游泳池,可以执行以下操作:
在运行calico/node
容器之前,请创建您要使用的池。
使用NO_DEFAULT_POOLS = true环境变量启动calico/node
容器。这会阻止容器创建默认池。 (https://github.com/projectcalico/calico-containers/blob/master/calico_node/filesystem/startup.py#L259)
使用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