使用Ansible脚本安装K8S集群,介绍组件交互原理,方便直接,不受国内网络环境影响
 
 
 
Go to file
jmgao 712c01be5c 更新版本说明 2017-11-26 17:47:40 +08:00
bin 更新版本说明 2017-11-26 17:47:40 +08:00
down 更新版本说明 2017-11-26 17:47:40 +08:00
example 增加节点脚本20.addnode.yml 2017-11-25 21:37:43 +08:00
manifests 增加常用插件yaml配置 2017-11-21 09:01:24 +08:00
pics tiny fix 2017-11-26 12:43:23 +08:00
roles 增加等待kube-apiserver/kubelet启动延迟 2017-11-26 12:36:58 +08:00
.gitignore 更新版本说明 2017-11-26 17:47:40 +08:00
01.prepare.yml cni-calico参数调整,minor changes 2017-11-25 21:31:00 +08:00
02.etcd.yml 修改ansible配置默认不进行gather_facts 2017-11-12 19:18:39 +08:00
03.kubectl.yml cni-calico参数调整,minor changes 2017-11-25 21:31:00 +08:00
04.docker.yml 修改ansible配置默认不进行gather_facts 2017-11-12 19:18:39 +08:00
05.calico.yml 修改ansible配置默认不进行gather_facts 2017-11-12 19:18:39 +08:00
06.kube-master.yml 修改ansible配置默认不进行gather_facts 2017-11-12 19:18:39 +08:00
07.kube-node.yml 修改ansible配置默认不进行gather_facts 2017-11-12 19:18:39 +08:00
20.addnode.yml 增加节点脚本20.addnode.yml 2017-11-25 21:37:43 +08:00
90.setup.yml 修正一些 kubelet/apiserver启动参数 2017-11-21 11:27:06 +08:00
99.clean.yml 修正多主多节点集群部署脚本 2017-11-26 09:34:33 +08:00
LICENSE k8s-calico initial commit 2017-11-11 19:14:21 +08:00
README.md 更新版本说明 2017-11-26 17:47:40 +08:00
ansible.cfg 修改ansible配置默认不进行gather_facts 2017-11-12 19:18:39 +08:00

README.md

利用Ansible部署kubernetes集群

docker kube ansible

本系列文档致力于提供快速部署高可用k8s集群的工具,并且也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化:既提供一键安装脚本,也可以分步执行安装各个组件,同时讲解每一步主要参数配置和注意事项。二进制方式部署优势:有助于理解系统各组件的交互原理和熟悉组件启动参数,有助于快速排查解决实际问题

集群特性:TLS 双向认证、RBAC 授权、多Master高可用、支持Network Policy

文档基于Ubuntu 16.04,其他系统如CentOS 7需要读者自行替换部分命令;由于使用ansible经验有限和简化ansible-playbook脚本考虑,已经尽量避免高级特性和复杂逻辑。

组件版本

  1. kubernetes v1.8.4
  2. etcd v3.2.10
  3. docker 17.09.0-ce
  4. calico/node v2.6.2

快速指南

以下为快速体验k8s集群的测试、开发环境--AllinOne部署觉得比官方的minikube方便、简单很多。

1.准备一台虚机(推荐内存3G硬盘20G以上)安装Ubuntu16.04配置基础网络、更新源、SSH登陆等。

2.安装python2/git/python-pip/ansible

# 更新
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
# 删除不要的默认安装
apt-get purge ufw lxd lxd-client lxcfs lxc-common
# 安装依赖工具
apt-get install python2.7 git python-pip
# 安装ansible
pip install pip --upgrade
pip install ansible
# 国内加速
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 配置ansible ssh密钥登陆
ssh-keygen -t rsa -b 2048 回车 回车 回车
ssh-copy-id $IP //$IP为本虚机地址

3.安装k8s

git clone https://gitee.com/netmon/deploy-k8s-with-ansible.git
mv deploy-k8s-with-ansible/ /etc/ansible
cd /etc/ansible
# 配置ansible
cp example/ansible.cfg.example ansible.cfg
# 配置集群hosts
cp example/hosts.allinone.example hosts
然后根据实际情况修改此hosts文件
# 准备二进制安装包
按照down/download.sh文件提示先手工下载各种tar包到 ./down目录
sh down/download.sh
# 开始安装(一步安装)
ansible-playbook 90.setup.yml
# 或者采用分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
...

如果执行成功k8s集群就安装好了

4.验证安装

kubectl version
kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等组件 Healthy
kubectl clusterinfo # 可以看到kubernetes master(apiserver)组件 running
kubectl get node # 可以看到单 node Ready状态
kubectl get pod --all-namespaces # 可以查看所有集群pod状态
kubectl get svc --all-namespaces # 可以查看所有集群服务状态

多节点指南(文档更新中...)

  1. 准备4台虚机(物理机也可,虚机实验更方便)安装Ubuntu16.04(centos7理论上一样不想ansible脚本太多条件判断)

  2. 准备一台部署机(可以复用上述4台虚机)安装ansible配置到4台目标机器ssh无密码登陆等

  3. 准备外部负载均衡准备master节点的vip地址

  4. 规划集群节点完成ansible inventory文件参考

  5. 其他安装步骤同单节点安装

  6. 建议阅读 feisky.gitbooks 原理和部署章节。

  7. 建议阅读 opsnull教程 二进制手工部署。

ansible超快入门