はじめに
kubernetesを利用していて、flannelのipレンジを自由に割り振りたくなったので割り振ってみました。
ipレンジを変更する
始めに割り振られているipは下記のように172.17.33.0でした。これを172.17.32.0に変更していこうと思います。
flannel0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.17.33.0 P-t-P:172.17.33.0 Mask:255.255.0.0
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1472 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:336 (336.0 B) TX bytes:336 (336.0 B)
まず、flannel起動時に参照しているetcdの設定ファイルを見に行きましょう。
etcdが動いているサーバーで下記コマンドを打つことで使用されているipレンジの一覧を確認することができます。
# atomic.ioの部分に関しては各自の設定で変更してください
$ etcdctl ls /atomic.io/network/subnets/
/atomic.io/network/subnets/172.17.94.0-24
/atomic.io/network/subnets/172.17.74.0-24
/atomic.io/network/subnets/172.17.43.0-24
/atomic.io/network/subnets/172.17.50.0-24
/atomic.io/network/subnets/172.17.15.0-24
/atomic.io/network/subnets/172.17.69.0-24
/atomic.io/network/subnets/172.17.33.0-24
/atomic.io/network/subnets/172.17.52.0-24
/atomic.io/network/subnets/172.17.22.0-24
/atomic.io/network/subnets/172.17.55.0-24
次に現在の取得しているipレンジの値を確認します。
$ etcdctl get /atomic.io/network/subnets/172.17.33.0-24
{"PublicIP":"192.168.133.3"}
次に現在の値を削除します。
$ etcdctl rmdir /atomic.io/network/subnets/172.17.33.0-24
PrevNode.Value: {"PublicIP":"192.168.133.3"}
次に新しく取得したいipレンジの値を登録していきます。
$ etcdctl set /atomic.io/network/subnets/172.17.32.0-24 '{"PublicIP":"192.168.133.3"}'
{"PublicIP":"192.168.133.3"}
動いていたflannelを再起動すると下記のようにipが172.17.32.0に変更されています。
flannel0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.17.32.0 P-t-P:172.17.32.0 Mask:255.255.0.0
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1472 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
おわりに
基本的にflannelはPublicIPが変わらない限り、同じIPを割り振ってくれるみたいなので、固定IPが欲しいとかだったら今回の設定はやらなくていいと思います。PublicIPを変更したけど前と同じIPが欲しいとかいう状況があれば今回の設定で、IPを変更すればいい感じになると思います。