AWS上でのHA構成(k8s)

以下の文書に従い、Tungsten controller の 3-node 構成を試してみたので、その際のメモとなる。(k8sを使用)
https://github.com/Juniper/contrail-docker/wiki/Provision-Contrail-CNI-for-Kubernetes-with-High-Availability-(HA)

事前準備として、t2.large の ubuntu16.04.2 (メモリ8GB, ami-ea4eae8c) を5台用意し、kubeadm を使って master x 1, slave x 4 の構成を用意している.
詳しくは、以下のリンクを参照。
http://aaabbb-200904.hatenablog.jp/entry/2017/10/15/034243

その後、k8sの設定ファイルを環境に合わせて書き換え、kubectl apply で適用する。
修正内容として、以下のように、tungsten のcontroller, analytics, analyticsdb をデプロイするipを変更する、という内容となる。

# git clone https://github.com/Juniper/contrail-docker.git -b R4.0
# cd contrail-docker/kubernetes/manifests/
# vi contrail-host-ubuntu-ha.yaml
(以下の行を修正)
  config_nodes = 10.84.24.52,10.84.24.53,10.84.14.144
  controller_nodes = 10.84.24.52,10.84.24.53,10.84.14.144
  analytics_nodes = 10.84.24.52,10.84.24.53,10.84.14.144
  analyticsdb_nodes = 10.84.24.52,10.84.24.53,10.84.14.144
-
  api_server = 10.84.14.144

また、上記に加えて、tungsten の docker を起動したいslave ノードについては、以下を実行し、起動の許可を出す必要があるのだが、

# kubectl label node <node-name> opencontrail.org/controller=true

実機で試した時には、以下のエラーが発生したため、master ノードでパッケージのアップデートを行い、解消させるようにしている。

# kubectl label node 'ip-172-31-7-231' 'opencontrail.org/controller=true'
The Node "ip-172-31-7-231" is invalid: metadata.labels: Invalid value: "opencontrail.org~1controller": name part must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]')
# 
# apt-get update kubectl
# dpkg -l | grep -i kube
ii  kubeadm                          1.7.4-00                                   amd64        Kubernetes Cluster Bootstrapping Tool
ii  kubectl                          1.10.0-00                                  amd64        Kubernetes Command Line Tool
ii  kubelet                          1.7.4-00                                   amd64        Kubernetes Node Agent
ii  kubernetes-cni                   0.6.0-00                                   amd64        Kubernetes CNI
# kubectl label node 'ip-172-31-7-231' 'opencontrail.org/controller=true'
node "ip-172-31-7-231" labeled
# 

その後、以下のコマンドで DaemonSet の定義を行うと、約10分後に、container の起動が行われた。

# kubectl apply -f contrail-host-ubuntu-ha.yaml

上手く起動すると、以下のURLで、
http://contoller-ip:8080
で、webui にログイン可能となる。
id:pass は、 admin:contrail123
f:id:aaabbb_200904:20180408003203p:plain

なお、こちらで試した際には、controller が起動した slave ノードでは vhost0 がうまく作られず、controller 以外の container が起動出来ない状態になってしまったのだが、一度 os のリブートを行うことで事象が解消し、webui からもvrouter として認識されるようになった。
f:id:aaabbb_200904:20180408003231p:plain

※ 合わせて、念のため、各ノードで以下も実施している

# apt install ntp