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
なお、こちらで試した際には、controller が起動した slave ノードでは vhost0 がうまく作られず、controller 以外の container が起動出来ない状態になってしまったのだが、一度 os のリブートを行うことで事象が解消し、webui からもvrouter として認識されるようになった。
※ 合わせて、念のため、各ノードで以下も実施している
# apt install ntp