使用Kubespray在国内自动化部署Kubernetes集群(1.14.1)

使用Kubespray在国内自动化部署Kubernetes集群(1.14.1)

最近刚刚学习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
2
3
#关闭防火墙。
systemctl stop firewalld.service
systemctl disable firewalld.service

(3)关闭linux安全控制

Security Context的目的是限制不可信容器的行为,保护系统和其他容器不受其影响。我们先关闭。

1
2
3
#关闭SELinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0

(4)关闭交换分区

从 k8s 1.8版本就要求不能开启交换分区

1
2
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

做完上面这些操作就可以重启一下机器,准备环境的工作就已经完成了

二、准备安装k8s

Kubespray 是基于 ansible 上构建的一套自动化部署工具,所以我们需要先安装 ansible

1
2
3
4
5
6
7
8
9
10
11
12

# 安装 centos 额外的yum源
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm


# make 缓存
yum clean all && yum makecache

# ansible 必须 >= 2.7

# 安装 软件
yum install -y python-pip python34 python-netaddr python34-pip ansible

安装好之后我们就可以先把 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
2
3
4

pip install -r requirements.txt

cp -rfp inventory/sample inventory/mycluster

编写 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
2

ansible-playbook -i inventory/mycluster/hosts.ini cluster.yml -b -v -k

启动脚本之后会让你输入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) 这篇文章的后续操作,有任何问题都可以在下面和我交流~

#

评论

`
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×