在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
- 加密货币常见加密算法
- 如何给Kerberos环境下的CDH集群添加Gateway节点
- Spring Security OAuth RCE (CVE-2016-4977) 漏洞分析
- 高通量测序如何寻找T-DNA插入的位置
- 如何使用java命令从非集群节点向CDH集群提交MapReduce作业
- 【深度学习入门系列】TensorFlow训练线性回归
- 从老漏洞到新漏洞---iMessage 0day(CVE-2016-1843) 挖掘实录
- Wordpress <= 4.6.1 使用语言文件任意代码执行 漏洞分析
- 如何使用hadoop命令向CDH集群提交MapReduce作业
- Wordpress <= 4.6.1 使用主题文件触发存储型XSS 漏洞分析
- 如何跨平台在本地开发环境提交MapReduce作业到CDH集群
- 区块链行业的机会
- KEGG数据库的rest API(附带R语言小技巧)
- 如何使用Java代码访问HDFS.docx
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- RTSP/GB28181/HIKSDK/Ehome协议视频融合平台EasyCVR编译C++报参见“XXX”的声明错误
- 详解 Linux 常用目录的作用
- CentOS6环境下搭建路由器的方法
- centos7下NFS使用与配置的步骤
- 基于DOM4J的XML文件解析类
- Win7安装和配置Apache2.4服务器的详细方法
- shiro会话管理示例代码
- Windows Apache2.4 VC9(ApacheHaus)详细安装配置教程
- 在centos 7中安装配置k8s集群的步骤详解
- Centos7.2 编译安装方式搭建 phpMyAdmin
- CentOS 6.5 web服务器apache的安装与基本设置
- Linux本机与服务器文件互传及Linux服务器文件上传下载命令写法
- linux利用read命令获取变量中的值
- 解决Centos7 安装腾达U12无线网卡驱动问题
- CentOS 6.5上编译安装Apache服务器的方法(最小化安装)