此文档在centos7.X实际操作

 注意:以下所有操作均使用root用户执行 

官方文档参考地址

1、环境描述及注意事项

环境描述:

角色 ip
部署节点 172.16.77.84
etcd节点 172.16.77.36
master节点 172.16.77.36
node节点1 172.16.77.40
nodes节点2 172.16.77.64
node节点3(测试增加节点)(非必需) 172.16.77.87
master2(测试增加master节点)(非必需) 172.16.77.85

注意事项:

  • 此部署搭建需要在没有安装Kubernetes的机器上搭建,不然可能导致安装不成功。
  • 安装完成后node的name为ip,不能修改(官方作者的回答),会导致kubelet启动不了。
  • 此文档操作的部署工作皆在部署机上操作,验证操作皆在集群里的机器上操作。
  • 部署机可以加入集群里但官方不建议加入。

2、下载文件

1
2
3
4
5
#下载工具脚本easzup
[root@k8s-77-84 ~]# curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/2.0.0/easzup
[root@k8s-77-84 ~]# chmod +x ./easzup
#使用工具脚本下载
[root@k8s-77-84 ~]# ./easzup -D

上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像) 均已整理好放入/etc/ansilbe

  • /etc/ansible 包含 kubeasz 版本为2.0.0 的发布代码
  • /etc/ansible/bin 包含 k8s/etcd/docker/cni 等二进制文件
  • /etc/ansible/down 包含集群安装时需要的离线容器镜像

3、安装依赖工具

1
2
3
4
#安装epel源
[root@k8s-77-84 ~]# yum install epel-release -y
# 安装依赖工具
[root@k8s-77-84 ~]# yum install git python python-pip -y

4、安装ansible

1
2
3
#安装ansible
[root@k8s-77-84 ~]# pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
[root@k8s-77-84 ~]# pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

5、配置ssh免密登陆

1
2
[root@k8s-77-84 ~]# ssh-keygen -t rsa -b 2048 回车 回车 回车
[root@k8s-77-84 ~]# ssh-copy-id $IP  # $IP 为所有节点地址,按照提示输入 yes 和 root 密码

6、安装前准备

进入/etc/ansible下配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#必要配置
[root@k8s-77-84 ~]# cd /etc/ansible && cp example/hosts.multi-node hosts
#只需要ip为自己的即可
[root@k8s-77-84 ansible]# vim hosts  #将相关配置更改为自己的ip
# 'etcd' cluster should have odd member(s) (1,3,5,...)
# variable 'NODE_NAME' is the distinct name of a member in 'etcd' cluster
[etcd]
172.16.77.36 NODE_NAME=etcd1

# master node(s)
[kube-master]
172.16.77.36

# work node(s)
[kube-node]
172.16.77.40
172.16.77.64
...

在部署节点验证ansible是否可免密登录

1
2
#正常能看到节点返回SUCCESS
[root@k8s-77-84 ansible]# ansible all -m ping

7、部署

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#一步安装 直接执行90.setup.yml
[root@k8s-77-84 ansible]# cd /etc/ansible
[root@k8s-77-84 ansible]# ansible-playbook 90.setup.yml
#分步安装 需要分别执行01-07的yml
#cd /etc/ansible
#ansible-playbook 01.prepare.yml
#ansible-playbook 02.etcd.yml
#ansible-playbook 03.docker.yml
#ansible-playbook 04.kube-master.yml
#ansible-playbook 05.kube-node.yml
#ansible-playbook 06.network.yml
#ansible-playbook 07.cluster-addon.yml
-----------------------------------------
#执行安装命令后 最后输出 failed=0 则为成功 如果不等于0 记得查看异常信息并修复。
#也可以执行集群清理命令 然后再重新安装
#ansible-playbook 99.clean.yml #清理集群操作

8、验证安装

此步骤需要在集群里的机器上操作

如果提示kubectl: command not found,退出重新ssh登录一下,环境变量生效即可

1
2
3
4
5
6
kubectl version
kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等组件 Healthy
kubectl cluster-info # 可以看到kubernetes master(apiserver)组件 running
kubectl get node # 可以看到各节点就绪 (Ready) 状态
kubectl get pod --all-namespaces # 可以查看所有集群pod状态,默认已安装网络插件、coredns、metrics-server等
kubectl get svc --all-namespaces # 可以查看所有集群服务状态

如下图:

ZQRRXR.jpg

至此,集群安装成功


以下操作非必须,请按需求操作

9、增加node节点

若后续需要增加机器,请在部署机上按此操作

配置ssh免密登录

1
2
#为新节点配置免密登录
$ ssh-copy-id $IP  # $IP 为新节点IP,按照提示输入 yes 和 root 密码

节点增加操作

1
2
#假设增加的节点为172.16.77.87
[root@k8s-77-84 ansible]# easzctl add-node 172.16.77.87

验证

此操作需要在集群里的机器上操作

1
2
3
4
#验证新节点状态
$ kubectl get nodes
# 验证新节点的网络插件的pod状态
$ kubectl get pod -n kube-system -o wide

如下图:

ZQoQgO.jpg

10、删除node节点

此操作需要在部署节点上操作

删除操作

1
2
#假设删除的节点为172.16.77.87
$ easzctl del-node 172.16.77.87

11、增加master节点

此操作在部署机上操作

配置ssh免密登录

1
2
#为新节点配置免密登录
$ ssh-copy-id $IP  # $IP 为新节点IP,按照提示输入 yes 和 root 密码

master节点增加操作

1
2
#假设增加的节点为172.16.77.85
[root@k8s-77-84 ansible]# easzctl add-master 172.16.77.85

验证

此操作需要在新增master节点机器上操作

1
2
3
4
5
6
7
8
# 在新节点master 服务状态
$ systemctl status kube-apiserver 
$ systemctl status kube-controller-manager
$ systemctl status kube-scheduler

# 查看新master的服务日志
$ journalctl -u kube-apiserver -f
#查看集群节点,就可以看到master节点Ready,并且禁止了pod调度 如果需要让master上调度pod 可以执行kubectl uncordon xx.xx.xx.xx 即可恢复调度

12、删除master节点

此操作需要在部署节点上操作

删除操作

1
2
#假设删除的节点为172.16.77.85
$ easzctl del-master 172.16.77.85