2019-11-14に投稿

Days2: The Calico datastore

今日はThe Calico datastoreから。前回はKubernetesのクラスタを作った。

これからCalicoをインストールする作業を進めていくわけだけど、そのためにはCalicoが保持するデータの場所を設定する必要がある。設定場所の選択肢はKubernetesとetcdの2つ。どちらにも長所と短所がある。ざっくり言うとこんな感じ。

  • Kubernetesをデータストアとして使う: すでにあるKubernetesクラスタを利用するので、追加でなにかを用意する必要がない。また、Kubernetesがもっている様々な機構を利用することが出来る。
  • etcdををデータストアとして使う: Kubernetesに依存しない環境(例えばOpenStackなど)でCalicoを利用することができる。また、Kubernetesを意識する必要がないので、独自にスケールさせることが出来る。

Calico the hard wayではKubernetesをデータストアとして利用する。で、じゃあKubernetesをデータストアとして利用するならどうなるかというと、KubernetesのCustom resourceとしてCalicoのリソースが管理される。全部がCustome resourceというわけではない。例えば、workload endpointsなんかはPodとして管理される。兎にも角にも、Custome resourceとして管理するためにはリソース定義が必要。ということで、以下の手順でリソース定義を適用する。

$ wget 'https://docs.projectcalico.org/v3.10/manifests/crds.yaml'
...
2019-11-14 01:01:21 (3.92 MB/s) - ‘crds.yaml’ saved [4077/4077]

$ kubectl apply -f ./crds.yaml
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created

次にCalicoの操作を用意にするためにcalicoctlをインストールする。

$ wget https://github.com/projectcalico/calicoctl/releases/download/v3.8.0/calicoctl
$ sudo mv calicoctl /usr/local/bin/
$ chmod +x calicoctl
$ echo 'export KUBECONFIG=${HOME}/.kube/config' >> ~/.bashrc
$ echo 'export DATASTORE_TYPE=kubernetes' >> ~/.bashrc

軽く動作確認をする。

$ calicoctl get nodes
NAME
calicothehardway-001
calicothehardway-002
calicothehardway-003
calicothehardway-004
calicothehardway-005

# ↑と同じような出力になっているかを確認 -> OK
$ kubectl get nodes
NAME                   STATUS     ROLES    AGE   VERSION
calicothehardway-001   NotReady   master   24h   v1.16.2
calicothehardway-002   NotReady   <none>   24h   v1.16.2
calicothehardway-003   NotReady   <none>   23h   v1.16.2
calicothehardway-004   NotReady   <none>   23h   v1.16.2
calicothehardway-005   NotReady   <none>   23h   v1.16.2

# これはからの出力になるのが期待通り。
$ calicoctl get ippools
NAME   CIDR   SELECTOR

今日はここまで。


shige
所有者限定モードのためこのボードには投稿できません
コメント