第一种:在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。
代码语言:javascript复制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 %}
代码语言:javascript复制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上安装,请使用以下命令:
代码语言:javascript复制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端口上可用,可以开始在上面玩了。
代码语言:javascript复制https://x.x.x.x:8143
Default credentials: admin/contrail123
检查Tungsten Fabric状态
通过在Kubernetes主节点中运行“contrail-status”命令行工具,可以获得Tungsten Fabric组件的状态。这将列出系统中运行的所有Tungsten Fabric组件。
代码语言:javascript复制[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