Kubernetes绝对是SDN和虚拟化世界中最热门的趋势之一。简单来说,对于虚拟机我们有OpenStack,而对于容器那就是Kubernetes了(或者RedHat的商业版本OpenShift)。

和虚拟机一样,容器也需要网络,特别是需要一个软件来管理这个虚拟网络。在Kubernetes的世界里,我们可以把这个所谓的软件称为CNI,即容器网络接口(Container Network Interface)。

我们不打算描述Kubernetes的基础和基本概念;要想了解什么是K8s,以及对docker容器的一些基本理解,我建议阅读下面这篇伟大的文章(它还谈到了作者工作的一个特定的“模块”,但以一种非常酷的方式解释了基本概念)。
https://medium.com/@geraldcroes/kubernetes-traefik-101-when-simplicity-matters-957eeede2cf8

在这里,我们将专注于使用Tungsten Fabric创建一个运行Kubernetes的小型实验室。

架构

我们将建立一个这样的实验室:

所有的4个元素可能是裸机服务器,也可能是虚拟机;在这个实验室里,我使用了运行CentOS的虚拟机。

那么这4个元素的实体是什么呢?

首先,我们有Ansible部署器,它不会成为K8s集群(我们的“云”)的一部分,而只是利用Ansible安装Kubernetes和Tungsten Fabric。

然后我们有一个控制节点,TF和K8s的控制功能都将在这里运行。用K8s的“语言”来说,这个节点将是master节点。

另外两个节点将是kubernetes worker,容器将在这里运行。TF将在这里安装并运行vRouter,它将负责虚拟网络。

TF vRouter并不能与所有的内核一起工作,而是需要一些特定的兼容版本。查看版本说明来了解你所需要的特定TF版本的内核版本。

例如,我要安装Tungsten Fabric 5.0.3,它需要3.10.0-957内核。

步骤

首先,我们需要在master节点和两个节点上安装正确的内核版本:

yum -y install kernel-3.10.0-957.el7.x86_64.rpm
yum update
reboot

接下来,我们连接到Ansible部署器虚拟机并准备环境:

yum -y install epel-release git ansible net-tools
yum install -y python-pip
pip install requests

Ansible部署器以tgz文件的形式出现。

我们将其解压:

tar -xvf {contrail-ansible-deployer-vxxx.tgz}

移动到提取的文件夹中:

cd {contrail-ansible-deployer-vxxx}

现在我们需要建立instances.yaml文件,一个描述我们的设置的文件。

这个文件在yaml文件中。

vi config/instances.yaml

下面是一个示例:

global_configuration:CONTAINER_REGISTRY: hub.juniper.net/contrailCONTAINER_REGISTRY_USERNAME: xxxCONTAINER_REGISTRY_PASSWORD: yyy
provider_config:bms:ssh_pwd: Embe1mplsssh_user: rootdomainsuffix: ulab
instances:master:provider: bmsroles:config_database:config:control:analytics_database:analytics:webui: k8s_master:kubemanager:ip: 10.49.231.32w1:provider: bmsroles:vrouter:k8s_node:ip: 10.49.230.206w1:provider: bmsroles:vrouter:k8s_node:ip: 10.49.230.205
contrail_configuration:CONTRAIL_CONTAINER_TAG: 5.0.3-0.493KUBERNETES_CLUSTER_PROJECT: {}CONFIG_NODEMGR__DEFAULTS__minimum_diskGB: 2DATABASE_NODEMGR__DEFAULTS__minimum_diskGB: 2CONFIG_DATABASE_NODEMGR__DEFAULTS__minimum_diskGB: 2RABBITMQ_NODE_PORT: 5673

详解

让我们把它分成小块,以便更好地理解它。

首先,我们有全局配置部分:

global_configuration:CONTAINER_REGISTRY: hub.juniper.net/contrailCONTAINER_REGISTRY_USERNAME: xxxCONTAINER_REGISTRY_PASSWORD: yyy

这将告诉部署器在哪里获得Tungsten Fabric容器(记住,从5.0版本开始TF控制平面就已经是容器化的了)。你需要一个有效的账户。

接下来,我们定义访问我们节点的凭证:

provider_config:bms:ssh_pwd: Embe1mplsssh_user: rootdomainsuffix: ulab

所有的设备都需要用相同的凭证来配置,我们支持使用相同的凭证,但需要通过在单个节点定义中配置凭证来覆盖这些设置。

接下来开始定义我们的资源:

instances:

定义master节点:

master:provider: bmsroles:config_database:config:control:analytics_database:analytics:webui: k8s_master:kubemanager:ip: 10.49.231.32

实例是一个bms(即使是虚拟机,也要用bms),那么所有典型的控制角色都会分配给它。

Worker节点的定义也类似:

w1:provider: bmsroles:vrouter:k8s_node:ip: 10.49.230.206

很显然,这里的角色是不同的,因为我们必须安装vRouter,并将节点配置为worker。

我们省略了第二个worker的定义。

最后,我们有TF配置部分:

contrail_configuration:CONTRAIL_CONTAINER_TAG: 5.0.3-0.493KUBERNETES_CLUSTER_PROJECT: {}CONFIG_NODEMGR__DEFAULTS__minimum_diskGB: 2DATABASE_NODEMGR__DEFAULTS__minimum_diskGB: 2CONFIG_DATABASE_NODEMGR__DEFAULTS__minimum_diskGB: 2RABBITMQ_NODE_PORT: 5673

在这里,我们指定了TF容器的具体标签。标签应该与我们要安装的版本相匹配。

标签可以通过以下方式获取:

[root@master ~]# curl -u XXX -X GET https://hub.juniper.net/v2/contrail/contrail-analytics-api/tags/list | python -mjson.tool
Enter host password for user 'JNPR-Customer15':% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100   423  100   423    0     0   1082      0 --:--:-- --:--:-- --:--:--  1087
{"name": "contrail/contrail-analytics-api","tags": ["5.0.0-0.40-ocata","5.0.0-0.40","5.0.1-0.214-ocata","5.0.1-0.214-queens","5.0.1-0.214-rhel-queens","5.0.1-0.214","5.0.2-0.360-ocata","5.0.2-0.360-queens","5.0.2-0.360-rhel-queens","5.0.2-0.360","5.0.3-0.493-ocata","5.0.3-0.493-queens","5.0.3-0.493-rhel-queens","5.0.3-0.493","5.1.0-0.38-ocata","5.1.0-0.38-queens","5.1.0-0.38-rhel-queens","5.1.0-0.38-rocky","5.1.0-0.38"]
}

同样,我们需要一个有效的账户。

当使用Tungsten Fabric时,你还可以简单地获得最新版本:

contrail_configuration:CONTRAIL_VERSION: latest

回到TF配置部分,将最小磁盘尺寸设置为低值,这样我们的小型实验室虚拟机就绰绰有余了。

现在我们只需运行这三个Ansible命令(记住你是在Ansible部署器的解压文件夹里):

ansible-playbook -e orchestrator=kubernetes -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

一切都应该是正常的!

验证

现在我们可以连接到master,检查一切工作是否符合预期。

首先我们列出节点:

[root@master ~]# kubectl get nodes
NAME      STATUS     ROLES     AGE       VERSION
master    NotReady   master    9h        v1.9.2
w1        Ready          9h        v1.9.2
w2        Ready          9h        v1.9.2

Worker已经准备好了,Master还没有准备好,但这不是问题。

接下来,我们检查控制容器:

[root@master ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE
kube-system   etcd-master                             1/1       Running   0          9h
kube-system   kube-apiserver-master                   1/1       Running   0          9h
kube-system   kube-controller-manager-master          1/1       Running   0          9h
kube-system   kube-dns-6f4fd4bdf-nwjkt                3/3       Running   0          9h
kube-system   kube-proxy-fzvt7                        1/1       Running   0          9h
kube-system   kube-proxy-tt5nr                        1/1       Running   0          9h
kube-system   kube-proxy-wvmzh                        1/1       Running   0          9h
kube-system   kube-scheduler-master                   1/1       Running   0          9h
kube-system   kubernetes-dashboard-846c4ddc5f-6fzdq   1/1       Running   0          9h

所有的容器都在运行!请注意,K8s是我们用来管理容器及其核心功能的东西,让K8s工作的也是容器。它们运行在一个特殊的命名空间里,叫做kube-system。这些容器在主机上运行,只要运行“docker ps”来验证就可以了。

我们可以在master和worker上运行经典的contrail-status命令:

[root@master ~]# contrail-status

最后,验证gui是可以通过https://%5Bmaster_ip}:8143打开。默认凭证(如果没有手动设置)是admin/trail23:

就这样,已经设置好了……又快又简单。

现在剩下的就是学习如何使用Kubernetes了。

(注:原文出现Contrail的地方,本文都以Tungsten Fabric替代,绝大多数情况下两者功能一致。)


作者:Umberto Manferdini 译者:TF编译组
原文链接:
https://iosonounrouter.wordpress.com/2019/05/30/setting-up-a-small-contrailkubernetes-lab-using-ansible-deployer/


使用Ansible部署器设置一个小型的TF+K8s实验室相关推荐

  1. 一个小型理财APP开发全过程(原型、设计、前端、后端、测试、部署)

    昨天在电脑里无意中翻到了几年前做的一个小东西,也从来没有正式上线运营过.想着放那里也是浪费,不如凑一篇文章放出来算了,所以有了这篇拙文.本文详细的展示一个小型理财APP从立项到上线运营的全过程,旨在帮 ...

  2. 学习C++:C++进阶(三)CMake基础篇---用一个小型项目了解CMake及环境构建

    V1.1 于2022年7月15日第二次修改:添加了比较多的解释图,解读了各类库的CMakelist.txt文件 目录 第一部分 基础篇(Basics) 1.0 本部分主要学什么(Intro) 1.1 ...

  3. lnmp部署Ansible部署zabbix6.0版本

    目录标题 lnmp 架构 准备工作 部署nginx 部署 mysql 部署 PHP 使用Ansible 部署 zabbix6.0版本 准备工作 ansible 操作 配置关闭防火墙跟SElinux的p ...

  4. CentOS7.5 -- Ansible部署与应用

    第1章 Ansible概述 Ansible是一个配置管理系统configuration management system python 语言是运维人员必须会的语言 ansible 是一个基于pyth ...

  5. Tomcat源码分析(十)--部署器 转载

    本系列转载自 http://blog.csdn.net/haitao111313/article/category/1179996 我们知道,在Tomcat的世界里,一个Host容器代表一个虚机器资源 ...

  6. 动手| 一个人脸识别的K8s部署实践

    Kubernetes含金量最高CKA首个包过培训班文末报名啦! 伙计们,请搬好小板凳坐好,下面将是一段漫长的旅程,期望你能够乐在其中. -- Hannibal 简介 伙计们,请搬好小板凳坐好,下面将是 ...

  7. Kolla Ansible 部署 -T版openstack

    介绍 Kolla的使命是为运营OpenStack云提供生产环境的容器和部署工具.可使用社区最佳实践进行扩展.快速.可靠和可升级.使用Ansible部署Docker容器运行OpenStack,并提供多种 ...

  8. 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

    新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/ 一步一步用jenkin ...

  9. 播放器设置 Player Settings

    原地址:http://game.ceeger.com/Manual/class-PlayerSettings.html#Android Player Settings is where you def ...

最新文章

  1. [Android] ListView关于adapter多种view设置
  2. 【Java 基础篇】【第三课】表达式、控制结构
  3. java 取随机正整数_Java获取随机数
  4. 阿里云对数据可靠性保障的一些思考
  5. C#开发笔记之14-如何用C#计算闰年?
  6. 拓端tecdat|R语言大数据分析纽约市的311万条投诉统计可视化与时间序列分析
  7. 一个Ext2+SWFUpload做的图片上传对话框收藏
  8. net 去掉第一位和最后一位_2020最后三个月港剧有咩睇?熟女强人首播!
  9. java的finalize_Java中finalize()方法
  10. redhat linux raid5,Linux 红帽   磁盘管理~~~~RAID5+LVM
  11. 【Python】第七篇:模块化编程及第三方模块的安装
  12. 最简单DIY基于Android系统的万能蓝牙设备智能遥控器
  13. SolidWorks、inventor、UG...我该学哪个?主流三维机械设计软件对比
  14. 金立android手机怎么截图,金立手机怎么截屏
  15. powerdesign如何导出数据库到mysql数据库
  16. 用计算机读取机读卡信息,摄像机SD卡无法读取怎么办
  17. 大于2019电大计算机应用上机表格题,2019年电大计算机应用基础试题及答案重要知识点...
  18. Altium designer--软件简介及安装教程(AD)
  19. liunx系统的根结构认识及命令学习
  20. oracle12 expdb,12c导出导入用expdp

热门文章

  1. ChatGPT初体验——开发好帮手
  2. mysql (1205, 'Lock wait timeout exceeded; try restarting transaction')
  3. 【调剂】河北大学2022年硕士研究生招生拟接收调剂专业信息
  4. Jira 史诗指南 (2022)
  5. 如何查看MySQL版本号
  6. SpringMVC大体流程框架类图版
  7. 国产恒辉数据库CS端管理工具
  8. html如何设置打印分页打印出来,网页中如何用 CSS 设置打印分页符
  9. 高考数学考用计算机求函数吗,高考数学52种快速做题方法整理!再也不用担心考试时间不够了...
  10. 唐山大地震:接近尸体