本文是Kubernetes系列的第二篇,将介绍使用Kubeadm+Ansible搭建Kubernetes集群所须要的工具及其做用。java
主要内容包括:python
Kubeadm是一个提供Kubeadm init 和 Kubeadm join命令,用于建立Kubernetes集群的最佳实践“快速路径”工具。nginx
Kubeadm能够在多种设备上运行,能够是Linux笔记本电脑,虚拟机,物理/云服务器或Raspberry Pi。这使得Kubeadm很是适合与不一样种类的配置系统(例如Terraform,Ansible等)集成。git
开发者能够在支持安装deb或rpm软件包的操做系统上很是轻松地安装Kubeadm。SIG集群生命周期SIG Cluster Lifecycle Kubeadm的SIG相关维护者提供了预编译的这些软件包,也能够在其余操做系统上使用。github
Kubeadm的目标是在不安装其余功能插件的基础上,创建一个经过Kubernetes一致性测试Kubernetes Conformance tests的最小可行集群。它在设计上并不会安装网络解决方案,而是须要用户自行安装第三方符合CNI的网络解决方案(如:flannel,calico,weave network等)。json
安装Kubeadm须要手动安装Kubelet和Kubectl,由于Kubeadm是不会安装和管理这两个组件的。bash
apt-get update && apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl 复制代码
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF setenforce 0 yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable kubelet && systemctl start kubelet 复制代码
CFSSL是CloudFlare开源的一款PKI/TLS工具。它既是命令行工具,也是用于签名、验证和捆绑TLS证书的HTTP API 服务器。服务器
CFSSL包括:微信
PKI借助数字证书和公钥加密技术提供可信任的网络身份,一般,证书就是一个包含以下身份信息的文件:markdown
因为运行环境不一样,故使用Go命令进行编译安装,在安装以前请确保已安装1.8版本以上的Go命令行以及配置了环境变量GOPATH。
go get -u github.com/cloudflare/cfssl/cmd/...
复制代码
Ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的云服务管理。
全部的这几个目标本质上来讲都是在一台或者几台服务器上,执行一系列的命令而已。就像Fabric,以及基于Fabric开发的自动化应用部署的工具: Essay 。都是作了这么个事——批量地在远程服务器上执行命令 。
那么Fabric和Ansible有什么差异呢?简单来讲Fabric像是一个工具箱,提供了不少好用的工具,用来在Remote执行命令,而Ansible则是提供了一套简单的流程,你只要按照它的流程来作,就能轻松完成任务。这就像是库和框架的关系同样。
固然,它们之间也有共同点——都是基于 Paramiko 开发的。这个Paramiko是什么呢?它是一个纯Python实现的ssh协议库。所以Fabric和Ansible还有一个共同点就是不须要在远程主机上安装client/agents,由于它们是基于ssh来和远程主机通信的。
Ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优势,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible是基于模块工做的,自己没有批量部署的能力。真正具备批量部署的是Ansible所运行的模块,Ansible只是提供一种框架,主要包括:
核心引擎:即图中所看到的Ansible。
核心模块(core module):
模块库(module library)分为两部分,一个是核心模块,另一个就是自定义模块(custom modules)。核心模块中都是Ansible自带的模块,Ansible模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。这些核心模块都遵循 Batteries Included 哲学。其实这里仍是颇有意思的,Batterires Included:Python has a large standard library, commonly cited as one of Python’s greatest strengths,providing tools suited to many tasks. 这就意味着Python有巨大的库支持你完成你想完成的任务工做。
自定义模块(custom modules):
若是Ansible没法知足你所需求的模块,那么你能使用 Ansible 添加自定义化的模块。
插件(plugin):
这里的理解就是完成较小型的任务,辅助模块来完成某个功能。
剧本(playbook):
定义须要给远程主机执行的一系列任务。好比安装一个nginx服务,能够把这拆分为几个任务放到一个playbook中。例如:第一步,须要下载nginx的安装包。第二步,将事先写好的nginx.conf的配置文件下发的目标服务器上。第三步,把服务启动起来。第四步,检查端口是否正常开启。这些步骤能够经过playbook来进行整合,而后经过inventory来下发到想要执行剧本的主机上。而且playbook也支持交互式执行playbook里面的步骤,若是有哪个步骤执行返回了一个错误报告,能够仅仅只单独执行这个步骤。你能够把playbook理解成为一个组策略,控制管理这个OU下全部的主机行为。
链接插件(connectior plugins):
Ansible默认是基于SSH链接到目标机器上执行操做的。可是一样的Ansible支持不一样的链接方法,要是这样的话就须要链接插件来完成链接了。
主机清单(host inventory):
为Ansible定义了管理主机的策略。通常小型环境下只须要在host文件中写入主机的IP地址便可,可是到了中大型环境有可能须要使用静态inventory或者动态主机清单来生成所须要执行的目标主机。
应用代码自动化部署
系统管理配置自动化
支持持续交付自动化
支持云计算,大数据平台环境
轻量级,无序在客户端安装agent,更新时只需在控制机上进行更行便可
批量任务执行能够写成脚本,不用分发到远程就能够执行
支持非root用户管理操做,支持sudo
使用python编写,维护更简单
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
复制代码
sudo yum install epel-release
sudo yum install ansible
复制代码
经过前面的介绍,能够大体了解Kubeadm、CFSSL、Ansible这三个工具的做用,因为安装Kubernetes集群时执行Kubeadm命令较为固定和繁琐,而且有些命令须要全部节点都执行,故将这些命令编写为Ansible playbooks,使用Ansible进行执行,从而提升部署效率和下降出错的几率。
该系列第一篇为:《从0到1使用Kubernetes系列——Kubernetes入门》,下一篇将介绍如何使用Ansible快速安装Kubernetes集群,欢迎各位持续关注。
Choerodon猪齿鱼是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台,同时提供IoT、支付、数据、智能洞察、企业应用市场等业务组件,致力帮助企业聚焦于业务,加速数字化转型。
你们能够经过如下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:
欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。