在K8s上轻松部署Tungsten Fabric的两种方式

时间:2022-07-26
本文章向大家介绍在K8s上轻松部署Tungsten Fabric的两种方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

第一种:在AWS的K8s上部署TF

首先介绍下如何在AWS上使用Kubernetes编排的Tungsten Fabric集群部署沙盒,15分钟就可以搞定。Tungsten Fabric集群由部署节点、一个控制器节点、两个作为EC2 VM运行的计算节点组成。

要求

在开始使用沙盒之前,必须订购CentOS 7 x86_64 HVM的正式映像。

所选区域必须至少具有两个可用区。

登录到AWS控制台后,请转到AWS Marketplace 的URL。

点击“继续订购”,然后点击“接受条款”。

*如果您以IAM用户身份连接,您将无法在AWS Marketplace中执行任务,请查看文档末尾的附录以获取相关解决方案。

步骤

1,只需单击以下按钮即可创建沙箱(以AWS CloudFormation堆栈形式运行):

Launch Stack

2,点击Next。

3,指定以下信息:

  • 您的Sandbox UI的管理员密码
  • EC2实例类型
  • 更多详细内容请关注TF中文社区
  • 密钥对(用于访问命令行实用程序)
  • 更多详细内容请关注TF中文社区

4,点击两次Next。

5,在页面底部选择复选框“ Acknowledge ...”。

6,点击创建。

7,重新加载堆栈页面并等待堆栈的CREATE_COMPLETE状态。

8,选中“Stack”(复选框),然后在底部窗格中选中“Output”选项卡,以找到Sandbox UI的URL。

9,转到Sandbox UI URL并等待部署(该站点将在创建堆栈后的2-3分钟内可用)。

10,成功部署后,沙盒界面将提供信息以连接到Tungsten Fabric和Kubernetes服务。

11,使用Tungsten Fabric用户界面URL,密码登录进行启动。

重要信息:沙盒使用完毕后,可以使用DELETE SANDBOX按钮清除所有使用的资源。

为了双重安全,您可以在删除后检查AWS Interface中的剩余资源。

访问集群:

您可以使用在堆栈启动期间指定的ssh密钥来访问具有“centos”用户名的任何VM。

ssh -i <ssh-key name> centos@<ip>   # <ip> can be the public IP or the private IP of the node
sudo -s

沙盒界面将提供有关如何连接到Tungsten Fabric UI和Kubernetes仪表板的信息。

附录:IAM用户

如果要使用IAM用户而不是使用root帐户登录,则需要为该用户授予额外的特权。

  • 登录到AWS控制台。
  • 在控制台左上方的AWS服务搜索中,找到IAM并选择它。
  • 在左侧导航栏中,单击需要更改权限的用户。
  • 在右下角单击“Add inline policy)”。
  • 进入“JSON”页签,使用以下内容替换策略内容:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:*",
                "aws-marketplace:*",
                "sns:*",
                "s3:*",
                "ec2:*",
                "elasticloadbalancing:*",
                "cloudwatch:*",
                "autoscaling:*",
                "iam:*"
            ],
            "Resource": "*"
        }
    ]
}
  • 检查策略。添加策略名称。创建策略。

第二种:通过Centos/Ubuntu“一键安装”

Tungsten Fabric CNI可以通过多种配置方案安装在Kubernetes集群上。

这里描述最简单的方法:单个基于yaml的安装。

先决条件

1.一个正在运行的Kubernetes集群

有很多方法可以安装Kubernetes。最简单的是kubeadm:

更多详细内容请关注TF中文社区。

或者,如果您希望将Tungsten Fabric和K8s集群一起安装,可以使用Tungsten Fabric Ansible Deployer:

更多详细内容请关注TF中文社区。

2.所有节点上的Docker版本不低于1.24

3.Linux内核版本3.10.0-957

Tungsten Fabric转发使用内核模块来提供高吞吐量和低延迟的网络连接。

最新的内核模块是针对3.10.0-957内核编译的。

安装

将Tungsten Fabric安装到Cento或者Ubuntu上只需要一个步骤。

注意:将x.x.x.x替换为Kubernetes Master节点的IP。

对于在Centos系统上安装,请使用以下的命令:

{% raw %}

K8S_MASTER_IP=x.x.x.x; CONTRAIL_REPO="docker.io/opencontrailnightly"; CONTRAIL_RELEASE="latest"; mkdir -pm 777 /var/lib/contrail/kafka-logs; curl https://raw.githubusercontent.com/Juniper/contrail-kubernetes-docs/master/install/kubernetes/templates/contrail-single-step-cni-install-centos.yaml | sed "s/{{ K8S_MASTER_IP }}/$K8S_MASTER_IP/g; s/{{ CONTRAIL_REPO }}/$CONTRAIL_REPO/g; s/{{ CONTRAIL_RELEASE }}/$CONTRAIL_RELEASE/g" | kubectl apply -f -

{% endraw %}

对于在Ubuntu上安装,请使用以下命令:

K8S_MASTER_IP=x.x.x.x; CONTRAIL_REPO="docker.io/opencontrailnightly"; CONTRAIL_RELEASE="latest"; mkdir -pm 777 /var/lib/contrail/kafka-logs; curl https://raw.githubusercontent.com/Juniper/contrail-kubernetes-docs/master/install/kubernetes/templates/contrail-single-step-cni-install-ubuntu.yaml | sed "s/{{ K8S_MASTER_IP }}/$K8S_MASTER_IP/g; s/{{ CONTRAIL_REPO }}/$CONTRAIL_REPO/g; s/{{ CONTRAIL_RELEASE }}/$CONTRAIL_RELEASE/g" | kubectl apply -f -

看看发生了什么?

太棒了!欢迎来到Tungsten Fabric。

您已经在Kubernetes节点中安装了Tungsten Fabric CNI。当新的计算节点添加到Kubernetes群集中,Tungsten Fabric CNI也将神奇地自动传播到这些节点,就像背后有Kubernetes DaemaonSet一样。

同时,您已经安装了整个Tungsten Fabric Networking套件,其中包括Networking、Analytics、Security、Visualization等功能。

Tungsten Fabric UI在节点的8143端口上可用,可以开始在上面玩了。

https://x.x.x.x:8143
Default credentials: admin/contrail123

检查Tungsten Fabric状态

通过在Kubernetes主节点中运行“contrail-status”命令行工具,可以获得Tungsten Fabric组件的状态。这将列出系统中运行的所有Tungsten Fabric组件。

[root@foo ~]# contrail-status
Pod         Service         Original Name                          State    Status         
            zookeeper       contrail-external-zookeeper            running  Up 35 minutes  
analytics   alarm-gen       contrail-analytics-alarm-gen           running  Up 35 minutes  
analytics   api             contrail-analytics-api                 running  Up 35 minutes  
analytics   collector       contrail-analytics-collector           running  Up 35 minutes  
analytics   nodemgr         contrail-nodemgr                       running  Up 33 minutes  
analytics   query-engine    contrail-analytics-query-engine        running  Up 35 minutes  
analytics   snmp-collector  contrail-analytics-snmp-collector      running  Up 35 minutes  
analytics   topology        contrail-analytics-topology            running  Up 34 minutes  
config      api             contrail-controller-config-api         running  Up 35 minutes  
config      cassandra       contrail-external-cassandra            running  Up 35 minutes  
config      device-manager  contrail-controller-config-devicemgr   running  Up 35 minutes  
config      nodemgr         contrail-nodemgr                       running  Up 33 minutes  
config      rabbitmq        contrail-external-rabbitmq             running  Up 35 minutes  
config      schema          contrail-controller-config-schema      running  Up 35 minutes  
config      svc-monitor     contrail-controller-config-svcmonitor  running  Up 35 minutes  
control     control         contrail-controller-control-control    running  Up 35 minutes  
control     dns             contrail-controller-control-dns        running  Up 35 minutes  
control     named           contrail-controller-control-named      running  Up 35 minutes  
control     nodemgr         contrail-nodemgr                       running  Up 33 minutes  
database    cassandra       contrail-external-cassandra            running  Up 35 minutes  
database    kafka           contrail-external-kafka                running  Up 35 minutes  
database    nodemgr         contrail-nodemgr                       running  Up 34 minutes  
kubernetes  kube-manager    contrail-kubernetes-kube-manager       running  Up 35 minutes  
vrouter     agent           contrail-vrouter-agent                 running  Up 34 minutes  
vrouter     nodemgr         contrail-nodemgr                       running  Up 33 minutes  
webui       job             contrail-controller-webui-job          running  Up 35 minutes  
webui       web             contrail-controller-webui-web          running  Up 35 minutes  

WARNING: container with original name 'contrail-external-zookeeper' have Pod os Service empty. Pod: '' / Service: 'zookeeper'. Please pass NODE_TYPE with pod name to container's env

vrouter kernel module is PRESENT
== Contrail control ==
control: active
nodemgr: initializing (NTP state unsynchronized. ) . <-- Safe to ignore
named: active
dns: active

== Contrail kubernetes ==
kube-manager: active

== Contrail database ==
kafka: active
nodemgr: initializing (NTP state unsynchronized. ) . <-- Safe to ignore
zookeeper: inactive                                  <-- Safe to ignore
cassandra: active

== Contrail analytics ==
nodemgr: initializing (NTP state unsynchronized. ) . <-- Safe to ignore
api: active
collector: active
query-engine: active
alarm-gen: active

== Contrail webui ==
web: active
job: active

== Contrail vrouter ==
nodemgr: initializing (NTP state unsynchronized. )    <-- Safe to ignore
agent: active

== Contrail config ==
api: active
zookeeper: inactive                                   <-- Safe to ignore
svc-monitor: active
nodemgr: initializing (NTP state unsynchronized. ) .  <-- Safe to ignore
device-manager: active
cassandra: active
rabbitmq: active
schema: active