kubernetes系列1:kubernetes介绍与集群部署方案
1.kubernetes是什么?
kubernetes是基于docker容器编排技术之上的一个完备的分布式系统支撑平台。
- Kubernetes是一种全新的基于容器技术的分布式架构领先方案,它是谷歌Borg的一个开源版本,是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果。
- Kubernetes中包含了很多常用的功能,比如负载均衡、服务治理等,如果我们的系统遵循了kubernetes的设计思想,就可以省去很多功能的开发,将更多的精力集中到业务本身。
- Kubernetes是一个开放的平台,不局限于任何一种语言,任何语言编写的服务都可以映射为kubernetes的Service,并通过标准的tcp通信协议进行交互。
- Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡机制、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。
2.kubernetes集群部署(kubespray方式)
2.1 部署前的准备
- 安装文件下载地址:https://github.com/kubernetes-incubator/kubespray
- 安装ansible v2.4或者更高版本,安装python-netaddr;
- 安装python3.4和pip;
- 安装jinja2.9;
- 各个集群节点之间免密码ssh登陆;
- 关闭防火墙;
- 可联网获取docker镜像
- 将roles/download/defaults/main.yml文件和roles/kubernetes-apps/absible/defaults/main.yml中的各种镜像地址更换成我们自己的镜像仓库地址;
- 将inventory/sample/group_vars/k8s-cluster.yml中的kube_network_plugin: calico更改为flannel,默认为calico,但是该方案推荐使用flannel
2.2 部署脚本
cd /home/kube/kubespray-master
# Install dependencies from ``requirements.txt``
sudo pip install -r requirements.txt
# Copy ``inventory/sample`` as ``inventory/mycluster``
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.180.138.162 10.180.138.163 10.180.138.164)
CONFIG_FILE=inventory/mycluster/hosts.ini python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ``inventory/mycluster/group_vars``
#cat inventory/mycluster/group_vars/all.yml
#cat inventory/mycluster/group_vars/k8s-cluster.yml
# Deploy Kubespray with Ansible Playbook
ansible-playbook -i inventory/mycluster/hosts.ini cluster.yml