etcd
kubernetes
flannel
固定IP

flannelで自由に固定ipレンジを取得する方法

More than 1 year has passed since last update.

はじめに

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を変更すればいい感じになると思います。