此文档在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 # 可以查看所有集群服务状态
|
如下图:
至此,集群安装成功
以下操作非必须,请按需求操作
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
|
如下图:
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
|
Author
dylan
LastMod
2019-08-04
License
如需转载请注明文章作者和出处。谢谢!