最近刚刚学习k8s,部署k8s的操作过于麻烦,因此想要寻找到一种自动化部署方式,Kubespray是现在最好的自动化部署方式,拥有支持多平台 、相对简单 、适用于生产环境的特点。
一、准备工作
每一台linux机器都需要特殊单独配置一下,才能使用于搭建k8s的环境,我使用的是centos7系统,现在开始搭建k8s准备环境的第一步
(1)更新内核驱动
为了更好的使用 docker 和 k8s ,更新一下内核驱动, centos7 默认是3.3的版本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 导入 Key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 Yum 源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 更新 kernel
yum --enablerepo=elrepo-kernel install -y kernel-lt kernel-lt-devel
# 配置 内核优先
grub2-set-default 0
(2)关闭防火墙
关闭防火墙为了防止部署时,防止各个节点因为防火墙的原因,不能通信
1 | #关闭防火墙。 |
(3)关闭linux安全控制
Security Context的目的是限制不可信容器的行为,保护系统和其他容器不受其影响。我们先关闭。
1 | #关闭SELinux |
(4)关闭交换分区
从 k8s 1.8版本就要求不能开启交换分区
1 | swapoff -a |
做完上面这些操作就可以重启一下机器,准备环境的工作就已经完成了
二、准备安装k8s
Kubespray 是基于 ansible 上构建的一套自动化部署工具,所以我们需要先安装 ansible
1 |
|
安装好之后我们就可以先把 Kubespray 的源码从git上拉取下来
1 | git clone https://github.com/kubernetes-sigs/kubespray |
拉去下来后还不能直接使用,为什么呢?因为谷歌嘛,大家懂的。不能直接下载,需要走代理,或者使用其他镜像,我选择将源码中所有镜像都替换一遍才可以。
我使用的是七牛云,亚马逊的镜像源具体的替换过程为:
quay.io
替换为quay-mirror.qiniu.com
gcr.io/google-containers
替换为gcr.azk8s.cn/google-containers
试过中科大的镜像,但是体验不太好,老是失败。阿里云镜像则是有部分镜像没有,只有亚马逊的镜像是最全的。这个花了很长时间,因为网络原因试了很多次。
三、安装k8s
首先进入 kubespray 的 git 目录下初始化 kubespray 脚本
1 |
|
编写 hosts.ini , 配置那些机器需要作为k8s的一部分1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25[all]
k8s ansible_host=106.14.162.10
node1 ansible_host=106.14.163.10
[kube-master]
k8s
[etcd]
k8s
[kube-node]
k8s
node1
[k8s-cluster:children]
kube-master
kube-node
[calico-rr]
看上面编写的 host.ini 应该很容易理解:
1.[all] 下面所有的机器节点,第一个为 机器hostname,第二个为机器的ip地址。
2.[etcd] 分布式存储运行在那些机器上
3.[kube-node] k8s 的 node节点有那些,用hostname 标示
4.[k8s-cluster:children] 表示集群有哪些把 kube-master 和 kube-node 填上就可以了,代表所有的机器
你可以根据自己的配置来进行修改
然后可以启动脚本了,脚本如下:
1 |
|
启动脚本之后会让你输入ssh密码,只要输入密码就可以,中间可能出现一些问题,在访问到storage.googleapis.com
这个域名的时候可能会出现下载失败,因为有的ip不能访问,多试几次就好了。
静静等待大概10分钟左右的样子应该就可以安装好了~
上面镜像和脚本的配置我已经编写好了,大家可以参考我写的,只需要修改inventory/mycluster/hosts.ini
文件就可以了
1 | git clone -b prod https://github.com/ulovecode/kubespray |
运行脚本分别为build-step1.sh
,build-step2.sh
,build.sh
,按照顺序运行就可以了
四、总结
这次学 kubespray 搭建集群还是遇到许多问题,首先是网络问题,如果没有网络问题的原因可能只需一个小时的事情,但是因为网络原因,弄了一两天,因为每个镜像源总有或多或少的一些问题,不能够直接使用。另外搭建过程除了更换镜像原因,文章的内容还是很浅显的,但是考虑到只是搭建的步骤,应该还是能接受,后续会继续更新使用Kubespray在阿里云上自动化部署Kubernetes集群(1.14.1) 这篇文章的后续操作,有任何问题都可以在下面和我交流~