Ubuntu18.04でのTungstenFabricインストール

Ubuntu18.04 での Tungsten Fabric インストールを試してみている。

今回もAWS上のインスタンスを使用している。
AMIとしては、Ubuntu Server 18.04 LTS (HVM) (ami-07ad4b1c3af1ea214) を使用した。

環境としては、controller 1台 (t2.large, disk 30GB)、vRouter 1台 (t2.medium, disk 8GB) で、 kubernetes 環境を構築している。

まず、準備として、各ノードで 以下を実施している。

(all node) apt update
(controller node) apt install python-pip git
(controller node) pip install ansible==2.4.2.0
(vRouter node) apt install python

(controller node) ssh-keygen
(controller node) cd .ssh/
(controller node) cat id_rsa.pub >> authorized_keys
 (vRouter node の .ssh/authorized_keys にも上記の公開鍵を登録)
(controller node) cd

(controller node) git clone -b R5.0 http://github.com/Juniper/contrail-ansible-deployer
(controller node) cd contrail-ansible-deployer
(controller node) vi config/instances.yaml
(以下を記述)
provider_config:
  bms:
   ssh_user: root
   ssh_public_key: /root/.ssh/id_rsa.pub
   ssh_private_key: /root/.ssh/id_rsa
   domainsuffix: local
   ntpserver: ntp.nict.jp
instances:
  bms1:
   provider: bms
   roles:
      config_database:
      config:
      control:
      analytics:
      analytics_database:
      webui:
      k8s_master:
      kubemanager:
   ip: 172.31.6.88 # controller node の ip
  bms11:
   provider: bms
   roles:
     vrouter:
     k8s_node:
   ip: 172.31.9.130 # vRouter node の ip
contrail_configuration:
  CONTRAIL_VERSION: r5.0.1
  KUBERNETES_CLUSTER_PROJECT: {}
  JVM_EXTRA_OPTS: "-Xms128m -Xmx1g"
global_configuration:
  CONTAINER_REGISTRY: tungstenfabric

また、vrouter.ko ビルド時のエラーを回避するため、vRouter node にて、以下を実施している。

(vRouter node) # vi /usr/src/linux-aws-headers-4.15.0-1021/include/linux/uuid.h
(以下の3行をコメントアウト)
// typedef struct {
//      __u8 b[UUID_SIZE];
// } uuid_t;
(直後の行に、以下を追記)
typedef unsigned char uuid_t[16];


準備が終わったら、以下で実際のインストールを実施する。

ansible-playbook -i inventory/ playbooks/configure_instances.yml
ansible-playbook -e orchestrator=kubernetes -i inventory/ playbooks/install_k8s.yml
ansible-playbook -e orchestrator=kubernetes -i inventory/ playbooks/install_contrail.yml

※ インストール完了後、vhost0 が作成された後に、vRouter node で名前解決が出来なくなった場合、以下を実施する

(vRouter node) # vi /etc/systemd/resolved.conf
(以下を追記)
DNS=172.31.0.2
(vRouter node) # systemctl restart systemd-resolved.service

この後、以下の yaml ファイル ( https://github.com/tnaganawa/contrail-k8s-tutorial/tree/master/yml/1_initial ) で テスト用のコンテナを作成し、コンテナ間、およびGW IPへの疎通ができることを確認している。

root@ip-172-31-6-88:~/contrail-k8s-tutorial/yml/1_initial# kubectl get pod -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP              NODE
cirros1   1/1       Running   0          38s       10.47.255.251   ip-172-31-9-130
cirros2   1/1       Running   0          16s       10.47.255.250   ip-172-31-9-130
root@ip-172-31-6-88:~/contrail-k8s-tutorial/yml/1_initial# kubectl exec -it cirros1 sh
/ # ping 10.47.255.250
PING 10.47.255.250 (10.47.255.250): 56 data bytes
64 bytes from 10.47.255.250: seq=0 ttl=63 time=1.482 ms
64 bytes from 10.47.255.250: seq=1 ttl=63 time=0.065 ms
^C
--- 10.47.255.250 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.065/0.773/1.482 ms
/ # ping 10.47.255.254
PING 10.47.255.254 (10.47.255.254): 56 data bytes
64 bytes from 10.47.255.254: seq=0 ttl=64 time=1.304 ms
64 bytes from 10.47.255.254: seq=1 ttl=64 time=0.128 ms
^C
--- 10.47.255.254 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.128/0.716/1.304 ms
/ #