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 / #