码迷,mamicode.com
首页 > Web开发 > 详细

使用Kubespray在虚拟机上部署Kubernetes

时间:2017-12-23 23:03:41      阅读:1482      评论:0      收藏:0      [点我收藏+]

标签:kubernetes

Kubespray 是 Kubernetes incubator 中的项目,目标是提供 Production Ready Kubernetes 部署方案,该项目基础是通过 Ansible Playbook 来定义系统与 Kubernetes 集群部署的任务,具有以下几个特点:

  • 可以部署在 AWS, GCE, Azure, OpenStack以及裸机上.

  • 部署 High Available Kubernetes 集群.

  • 可组合性(Composable),可自行选择 Network Plugin (flannel, calico, canal, weave) 来部署.

  • 支持多种 Linux distributions(CoreOS, Debian Jessie, Ubuntu 16.04, CentOS/RHEL7)

一、环境介绍

  • 宿主机Ubuntu17.10,也是ansible主机

二、安装前准备

1、ansible安装最新ansible,我这是 Ubuntu 其他系统点这里
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible python-netaddr python-pbr
2、下载kubespary,这是我修改过的 官方的点这里
git clone https://github.com/bravem/ansible-k8s.git
3、虚拟机安装docker
yum install docker-engine-17.03.1.ce-1.el7.centos -y
4、下载镜像

kubespray/roles/download/defaults/main.yml  这个文件定义了镜像版本,按照这文件提前下载所需镜像

下载后直接上传至虚拟机

gcr.io/google_containers/kubernetes-dashboard-amd64:v1.8.1
gcr.io/google_containers/hyperkube:v1.8.3
lachlanevenson/k8s-helm:2.7.0
gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.7
gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.7
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.7
andyshinn/dnsmasq:2.78
quay.io/calico/ctl:v1.5.0
quay.io/calico/node:v2.5.0
quay.io/calico/kube-policy-controller:v0.7.0
xueshanf/install-socat:latest
quay.io/calico/cni:v1.10.0
quay.io/calico/routereflector:v0.4.0
quay.io/coreos/etcd:v3.2.4
gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.1.1
gcr.io/google_containers/fluentd-elasticsearch:1.22
gcr.io/google_containers/elasticsearch:v2.4.1
gcr.io/google_containers/kibana:v4.6.1
nginx:1.11.4-alpine
gcr.io/google_containers/pause-amd64:3.0
5、修改inventory文件IP地址
[all]
node1   ansible_host=192.168.1.121 ip=192.168.1.121 ansible_user=root
node2   ansible_host=192.168.1.122 ip=192.168.1.122 ansible_user=root
node3   ansible_host=192.168.1.123 ip=192.168.1.123 ansible_user=root
node4   ansible_host=192.168.1.124 ip=192.168.1.124 ansible_user=root
node5   ansible_host=192.168.1.125 ip=192.168.1.125 ansible_user=root
node6   ansible_host=192.168.1.126 ip=192.168.1.126 ansible_user=root

[kube-master]
node1

[kube-node]
node2
node3

[etcd]
node1
node2
node3

[k8s-cluster:children]
kube-node
kube-master
6、修改sshkkeys.exp文件IP地址,这是expect脚步,用来复制ssh秘钥
#!/usr/bin/expect -f
set timeout -1
set user root
set passwd "password"

for { set i 121 } { $i < 124 } { incr i } {
   spawn ssh-copy-id  $user@192.168.1.$i
   expect {
       "yes/no" { send "yes\r";exp_continue }
       "id_rsa" { send "yes\r";exp_continue }
       "*assword" { send "$passwd\r" }
   }
}

expect eof

三、安装

1、复制ssh秘钥,需安装expect,或者手动添加
expect sshkeys.exp
2、安装
ansible-playbook -i inventory/inventory.cfg cluster.yml
3、完成技术分享图片

技术分享图片

技术分享图片

三、集群扩展

1、修改inventory文件,把新主机加入Master或者Node组

[all]
node1   ansible_host=192.168.1.121 ip=192.168.1.121 ansible_user=root
node2   ansible_host=192.168.1.122 ip=192.168.1.122 ansible_user=root
node3   ansible_host=192.168.1.123 ip=192.168.1.123 ansible_user=root
node4   ansible_host=192.168.1.124 ip=192.168.1.124 ansible_user=root
node5   ansible_host=192.168.1.125 ip=192.168.1.125 ansible_user=root
node6   ansible_host=192.168.1.126 ip=192.168.1.126 ansible_user=root

[kube-master]
node1
node5

[kube-node]
node2
node3
node4
.....
2、安装

ansible-playbook -i inventory/inventory.cfg cluster.yml --limit node4,node5
3、完成

技术分享图片

技术分享图片

使用Kubespray在虚拟机上部署Kubernetes

标签:kubernetes

原文地址:http://blog.51cto.com/brave666/2053906

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!