### DC/OSのネットワークを
### Calicoでどうにかできるかできないか
<br>
Junichi Yoshise
@jyoshise
----
### そろそろ髪を切りたいので
### だれかきっかけをください
----
### (失恋とかそういうやつ)
----
### コンテナのネットワーク
### なにかとやっかいですよね
----
### Mesosで使える<br>Container Runtime 2種類
- Docker Containerizer
- Mesos Containerizer <br> (Universal Container Runtime)
----
### てことはContainer Networkも2種類
----
- CNM (Container Network Model)
- Dockerが使ってるやつ
- コンテナが外と通信するためにNAT(NAPT)が必須
![](https://i.imgur.com/uxjIZEu.jpg)
----
- CNI (Container Network Interface)
- Mesos Containerizerはこっち
- ちなみにKubernetesもこっち
- オーバーレイ前提(L2フレームをカプセル化)
- オーバーレイ実装の決定打がない感じ(DC/OSはNavster)
----
## Calico
1. 更紗(さらさ) 《平織りのいろいろな模様を捺染(なつせん)した綿布》.
2. 三毛猫
----
![](https://i.imgur.com/7s7c8TG.png)
----
- Calico
- オーバーレイしない
- BGPをつかった単純なL3ネットワーク
----
要するにこれが
![](https://i.imgur.com/YGjB5Rj.jpg)
----
こうなる
![](https://i.imgur.com/AoMzoHR.jpg)
----
- 単純なのでスケーラブル
- L3なのでポリシーベースで通信制御できる
----
#### やってみた
http://docs.projectcalico.org/v2.3/getting-started/mesos/
![](https://i.imgur.com/1GSvTEl.png)
----
セットアップ
- Mesosクラスタ準備
- 全ノードにetcdを入れてクラスタ化
- etcdをDockerのCluster Storeにする
- Docker Containerizerを有効化
- CNI Isolatorを有効化
- Calicoインストール
- `calicoctl`(バイナリ)を配置
- `calico/node`(Dockerイメージ)を起動
- Calico CNI pluginをインストール
----
DC/OSだとさらに簡単
![](https://i.imgur.com/uwgXJA8.png)
----
## Demo
----
と思ったけどあまりに地味なのでやめときます
----
普通に動きます
----
ネットワーク作るときはこんな感じ
<br>
Docker Containerizer:
```
docker network create --driver=calico\
--ipam-driver=calico-ipam my-calico-net
```
----
ネットワーク作るときはこんな感じ
<br>
Mesos Containerizer:
```
cat <<EOF > $NETWORK_CNI_CONFIG_DIR/calico-net-1.conf
{
"name": "calico-net-1",
"type": "calico",
"ipam": {
"type": "calico-ipam"
},
"etcd_endpoints": "http://<etcd-ip:port>:2379"
}
EOF
```
----
触ってみて
よさげなところ
- 使う分には単純なL3ネットワークなのであんま難しいこと考えなくていい
- パフォーマンスはよくわからないけどオーバーヘッドはそんななさそう
----
微妙なところ
- etcdか。。。
----
結論
----
WE ARE HIRING
{"metaMigratedAt":"2023-06-14T13:59:59.546Z","metaMigratedFrom":"YAML","title":"DC/OSのネットワークをCalicoでどうにかできるかできないか","breaks":"true","contributors":"[]"}