0

このガイドに従って、Calico を使用して 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これは、コマンドの実行時にデフォルトのサブネットがまだ作成されていなかったためだと思います。

だから私の質問は:

  1. カスタムサブネットをデフォルトとして使用するように Calico を構成する方法はありますか?
  2. そうでない場合、Calico をポーリングしpool removeて、デフォルトのサブネットで実行する前に完全に初期化する方法はありますか?
4

1 に答える 1

0

ここでのパーティーには少し遅れましたが...

Calico の最近のリリースでは、これを自動化するのがより簡単になりました。デフォルトでは、コンテナはプールcalico/nodeを作成しようとします。192.168.0.0/16別のプールを使用する場合は、次の操作を実行できます。

  1. コンテナーを実行する前calico/nodeに、使用するプールを作成します。

  2. calico/nodeNO_DEFAULT_POOLS=true 環境変数でコンテナーを開始します。これにより、コンテナはデフォルト プールを作成できなくなります。( 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
于 2016-04-22T16:22:13.237 に答える