centos8 kernel source 安装_Tungsten Fabric知识库丨构建、安装与公有云部署

点击蓝字关注

找到右上角点击 ...  设为 249eb216d7f33122a57588f9cca54db4.png星标置顶249eb216d7f33122a57588f9cca54db4.png

作者:Tatsuya Naganawa   译者:TF编译组

如何构建Tungsten Fabric

这里的repo文件的说明文档大部分是有效的。 https://github.com/Juniper/contrail-dev-env

yum -y install docker git
git clone https://github.com/Juniper/contrail-dev-envcd contrail-dev-env
./startup.sh
docker exec -it contrail-developer-sandbox bashcd /root/contrail-dev-env
yum -y remove python-devel ## it is needed to resolve dependency issue
make sync
make fetch_packages
make setup
make dep

要构建所有模块,可以使用此命令(需要1-2个小时时间,具体取决于计算机性能)。

make rpmmake containers

要构建更多具体的模块,也可以使用这些命令。一个注意事项是,rpm-contrail本身是一个大的数据包,并且不能分解为更多(controller、vrouter等都包含在内)。

make listmake rpm-contrailmake list-containersmake container-general-basemake container-basemake container-kubernetes_kube-manager
- those make targets are included from this file:
 /root/contrail/tools/packages/Makefile
 https://github.com/Juniper/contrail-packages/blob/master/Makefile

如果仅构建vrouter.ko,此命令比较有用。

build:
cd /root/contrail
scons --opt=production --kernel-dir=/lib/modules/3.10.0-1062.el7.x86_64/build build-kmoduleclean:
cd /root/contrail/vrouter
make KERNELDIR=/lib/modules/3.10.0-1062.el7.x86_64/build clean

注意:当安装了其它发行版的kernel-devel软件包(我尝试过centos 8和amazon linux 2的软件包)时,也可以将其指定为kernel-dir。 例如,此命令为centos 8.2创建了vrouter.ko。
  • 可以通过insmod命令手动加载。

# rpm -ivh --nodeps kernel-devel-4.18.0-147.8.1.el8_1.x86_64.rpm# scons --opt=production --kernel-dir=/usr/src/kernels/4.18.0-147.8.1.el8_1.x86_64/ build-kmodule

charm安装

Tungsten Fabric也可以通过juju charm安装。
  • 使用了bionic和Openstack Queens,有4个节点(juju node, openstack controller, openstack compute, tunsten-fabric controller)

# apt update# snap install --classic juju# juju add-cloudSelect cloud type: manual
Enter a name for your manual cloud: manual-cloud-1
Enter the controller's hostname or IP address: (juju node's ip)# ssh-keygen# cd .ssh# cat id_rsa.pub >> authorized_keys# cd# ssh-copy-id (other nodes' ip)# juju bootstrap manual-cloud-1# git clone https://github.com/Juniper/contrail-charms -b R5# juju add-machine ssh:root@(openstack-controller ip)# juju add-machine ssh:root@(openstack-compute ip)# juju add-machine ssh:root@(TungstenFabric-controller ip)# vi set-juju.sh
juju deploy ntp
juju deploy rabbitmq-server --to lxd:0
juju deploy percona-cluster mysql --config root-password=contrail123 --config max-connections=1500 --to lxd:0
juju deploy openstack-dashboard --to lxd:0
juju deploy nova-cloud-controller --config console-access-protocol=novnc --config network-manager=Neutron --to lxd:0
juju deploy neutron-api --config manage-neutron-plugin-legacy-mode=false --config neutron-security-groups=true --to lxd:0
juju deploy glance --to lxd:0
juju deploy keystone --config admin-password=contrail123 --config admin-role=admin --to lxd:0
juju deploy nova-compute --config ./nova-compute-config.yaml --to 1
CHARMS_DIRECTORY=/root
juju deploy $CHARMS_DIRECTORY/contrail-charms/contrail-keystone-auth --to 2
juju deploy $CHARMS_DIRECTORY/contrail-charms/contrail-controller --config auth-mode=rbac --config cassandra-minimum-diskgb=4 --config cassandra-jvm-extra-opts="-Xms1g -Xmx2g" --to 2
juju deploy $CHARMS_DIRECTORY/contrail-charms/contrail-analyticsdb --config cassandra-minimum-diskgb=4 --config cassandra-jvm-extra-opts="-Xms1g -Xmx2g" --to 2
juju deploy $CHARMS_DIRECTORY/contrail-charms/contrail-analytics --to 2
juju deploy $CHARMS_DIRECTORY/contrail-charms/contrail-openstack
juju deploy $CHARMS_DIRECTORY/contrail-charms/contrail-agent
juju expose openstack-dashboard
juju expose nova-cloud-controller
juju expose neutron-api
juju expose glance
juju expose keystone
juju expose contrail-controller
juju expose contrail-analytics
juju add-relation keystone:shared-db mysql:shared-db
juju add-relation glance:shared-db mysql:shared-db
juju add-relation keystone:identity-service glance:identity-service
juju add-relation nova-cloud-controller:image-service glance:image-service
juju add-relation nova-cloud-controller:identity-service keystone:identity-service
juju add-relation nova-cloud-controller:cloud-compute nova-compute:cloud-compute
juju add-relation nova-compute:image-service glance:image-service
juju add-relation nova-compute:amqp rabbitmq-server:amqp
juju add-relation nova-cloud-controller:shared-db mysql:shared-db
juju add-relation nova-cloud-controller:amqp rabbitmq-server:amqp
juju add-relation openstack-dashboard:identity-service keystone
juju add-relation neutron-api:shared-db mysql:shared-db
juju add-relation neutron-api:neutron-api nova-cloud-controller:neutron-api
juju add-relation neutron-api:identity-service keystone:identity-service
juju add-relation neutron-api:amqp rabbitmq-server:amqp
juju add-relation contrail-controller ntp
juju add-relation nova-compute:juju-info ntp:juju-info
juju add-relation contrail-controller contrail-keystone-auth
juju add-relation contrail-keystone-auth keystone
juju add-relation contrail-controller contrail-analytics
juju add-relation contrail-controller contrail-analyticsdb
juju add-relation contrail-analytics contrail-analyticsdb
juju add-relation contrail-openstack neutron-api
juju add-relation contrail-openstack nova-compute
juju add-relation contrail-openstack contrail-controller
juju add-relation contrail-agent:juju-info nova-compute:juju-info
juju add-relation contrail-agent contrail-controller# vi nova-compute-config.yaml 
nova-compute:
    virt-type: qemu enable-resize: Trueenable-live-migration: Truemigration-auth-type: ssh# bash set-juju.sh
(to check status, it takes 20 minutes for every application to be active)# juju status# tail -f /var/log/juju/*log | grep -v -w DEBUG

为了使其成功运行,有以下两点需要注意。
  1. 由于juju在内部使用LXD及其自己的子网,因此至少Tungsten Fabric节点需要具有到该子网的一些静态路由(如果通过AWS,则可以使用VPC的路由表,还需要禁用源/目标检查)

  2. 由于默认情况下LXD不允许docker运行,因此需要通过lxc config设置为允许。

juju ssh 0
  sudo su -
    lxc list
    lxc config set juju-cb8047-0-lxd-4 security.nesting true
    lxc config show juju-cb8047-0-lxd-4
    lxc restart juju-cb8047-0-lxd-4

Tungsten fabric在公有云上的部署

gatewayless和snat
当安装在公有云上时,由于没有可用的支持MPLS over IP或VXLAN的硬件,vRouter需要具有来自underlay IP的浮动IP。 话虽如此,由于Tungsten Fabric支持gatewayless功能,因此从该虚拟网络为浮动IP提供服务不会有太大困难(办法是将另一个IP与ENI相连,并使之成为浮动IP的来源,从而可以从外部访问vRouter上的服务) 注意:当使用kubernetes时,我个人更喜欢将服务网络设置为gatewayless(此设置将不使用外部IP)。如果使用了带有裸金属实例的虚拟机管理程序,则首选带有一些gatewayless子网的浮动IP。 从vRouter到外部网络,分布式SNAT功能都可以解决问题。
  • 带有浮动IP的SNAT也可以很好地工作

AZ高可用性WIP
此外,还可以在vRouters上定义两个单独的负载均衡器以访问同一应用程序,以使其可以从两个不同的可用区域进行访问,从而确保更高的可用性。 要进行此设置,需要配置几项内容:
  1. vRouter有一个gatewayless子网,其子网范围未包含在VPC子网中。

  2. 在路由表中配置一个实例路由,它将gatewayless子网转发到其中一个vRouter节点。

  3. ELB将设置为gatewayless IP的IP地址。(当指定IP时,需要为“子网”配置“其它IP地址”)

  4. 由于在这种情况下,安全组(security-group)不会自动允许ELB的地址,因此需要手动允许VPC的CIDR进行ELB的运行状况检查,以使其正常工作。

vRouter的gatewayless功能的一个限制是,只有将目的地vRouter与原始接收数据包的vRouter放在同一个L2子网中,才能将数据包转发到其它vRouter。
  • 如果位于不同的子网中,vRouter会将数据包转发到VROUTER_GATEWAY,而后者又将其发送到vRouter,这会形成环路。

由于AWS子网不能包含相同的子网,因此,要使此设置AZ具有高可用性,需要为同一应用程序配置两个负载均衡器,每个AZ都具有两个不同的gatewayless子网。 由于ELB可以将数据包转发到两个vRouter负载均衡器,因此在ELB的帮助下它可以实现AZ高可用。

EKS整合

vRouter CNI AWS EKS是另一种可能的集成方案。
  • https://www.youtube.com/channel/UCXUny7HKBdyakn3-UOdkhsw

要进行此设置,首先要通过web console为EKS配置一些IAM用户。
  • 由于kubectl可以与创建该kubernetes集群的IAM用户一起使用,因此不建议对web console进行root访问。

然后,以下命令将从每个工作节点中删除VPC CNI。

(laptop)# kubectl delete ds -n kube-system aws-node
(EKS worker node)# mv -i /etc/cni/net.d/10-aws.conflist /tmp/

接下来,可以使用与以下URL相同的步骤来安装vRouter CNI。
  • https://github.com/tnaganawa/tungstenfabric-docs/blob/master/TungstenFabricPrimer.md#kubeadm

注意:尽管默认情况下,无法将dockerhub容器中的vrouter.ko加载到amazon linux 2内核中,但是可以使用此步骤为该内核创建vrouter.ko。
  • https://github.com/tnaganawa/tungstenfabric-docs/blob/master/TungstenFabricKnowledgeBase.md#how-to-build-tungsten-fabric

CNI MTU设置

值得注意的是,在公有云实例中安装vRouter时,可能会发生一些MTU问题。 更改物理接口MTU可以解决大部分问题,但是当来自容器的数据包被分段时,可能需要更改CNI的MTU设置。

vi /etc/cni/net.d/10-contrail.conf
{"cniVersion": "0.3.1","contrail" : {"meta-plugin"   : "$KUBERNETES_CNI_META_PLUGIN","vrouter-ip"    : "127.0.0.1","vrouter-port"  : $VROUTER_PORT,"config-dir"    : "/var/lib/contrail/ports/vm","poll-timeout"  : 5,"poll-retries"  : 15,
+       "mtu"  : 1300,"log-file"      : "$LOG_DIR/cni/opencontrail.log","log-level"     : "4"
    },"name": "contrail-k8s-cni","type": "contrail-k8s-cni"
}

https://github.com/Juniper/contrail-controller/blob/master/src/container/cni/contrail/cni.go#L33  

原文链接:

https://github.com/tnaganawa/tungstenfabric-docs/blob/master/TungstenFabricKnowledgeBase.md


ab8655c399576e8bd3bf3dd238f4c396.gif
  • vRouter内部运行探秘

  • 更多组件内部探秘

Tungsten Fabric入门宝典系列文章

  1.  首次启动和运行指南

  2. TF组件的七种“武器”

  3. 编排器集成

  4. 关于安装的那些事(上)

  5. 关于安装的那些事(下)

  6. 主流监控系统工具的集成

  7. 开始第二天的工作

  8. 8个典型故障及排查Tips

  9. 关于集群更新的那些事  

  10. 说说L3VPN及EVPN集成

  11. 关于服务链、BGPaaS及其它

  12. 关于多集群和多数据中心

  13. 多编排器用法及配置


5e9f351faaf6c2546e28d59165389f1d.png

TF中文社区

多云互联 · 开源开放

4a3cc506c22ca99d0e9ff6ca5fe1c809.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值