高可用架构图
高可用集群所需节点配置
角色 | 数量 | 描述 |
---|---|---|
管理节点 | 1 | 运行ansible/easzctl脚本,可以复用master节点, 建议使用独立节点 |
etcd节点 | 3 | 注意etcd集群需要1,3,5,7...奇数个节点,一般复用master节点 |
master节点 | 2 | 高可用集群至少2个master节点 |
node节点 | 3 | 运行应用负载的节点,可根据需要提升机器配置/增加节点数 |
部署环境
本次测试部署的是高可用架构的K8S,所以需要3台以上的虚拟机,我这里使用4台
主机名 | IP地址 | 配置 | 角色 | 系统 |
---|---|---|---|---|
master1 | 192.168.0.117 | 2C5G | 管理节点、master节点 | CentOS 7.8 |
master2 | 192.168.0.125 | 2C4G | master节点 | CentOS 7.8 |
node1 | 192.168.0.130 | 2C3G | node节点 | CentOS 7.8 |
node2 | 192.168.0.131 | 2C3G | node节点 | CentOS 7.8 |
备注:由于网络原因,easzup可能会出现下载失败情况,这里把easzup2.2.1 版本工具分享给大家
百度网盘分享链接:https://pan.baidu.com/s/1GJtn5EkCSXR39KAMVe8Pzw
提取码:j0wj
部署过程
一、基础系统配置
**在4台服务器上面都操作**
1.修改hosts文件,添加:
vim /etc/hosts
#末尾添加:
192.168.0.117 master1
192.168.0.125 master2
192.168.0.130 node1
192.168.0.131 node2
2.修改主机名
hostnamectl set-hostname master1 && bash
hostnamectl set-hostname master2 && bash
hostnamectl set-hostname node1 && bash
hostnamectl set-hostname node2 && bash
3, 关闭防火墙,selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
4. 时间同步
timedatectl set-timezone Asia/Shanghai
二、软件包安装
在管理节点(master1)上安装
1.安装Python3
yum install git python3-pip -y
2.在ansible控制端安装
pip3 install ansible==2.6.18 netaddr==0.7.19 -i https://mirrors.aliyun.com/pypi/simple/
三、 ssh免密
1.生成公钥
ssh-keygen
2.推送公钥
ssh-copy-id master1
ssh-copy-id master2
ssh-copy-id node1
ssh-copy-id node2
ssh node2 #测试连接
四、在ansible控制端编排k8s安装
1.下载工具脚本easzup
export release=2.2.1
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup
chmod +x ./easzup #授权
2.使用工具脚本下载docker
./easzup -D
五、配置集群参数
1 修改配置:
cd /etc/ansible && cp example/hosts.multi-node hosts
vim hosts #修改此hosts文件:
[etcd]
192.168.0.117 NODE_NAME=etcd1
192.168.0.125 NODE_NAME=etcd2
192.168.0.130 NODE_NAME=etcd3
#master node(s)
[kube-master]
192.168.0.117
192.168.0.125
#work node(s)
[kube-node]
192.168.0.130
192.168.0.131
CLUSTER_NETWORK="calico"
2 验证ansible 安装:
ansible all -m ping #正常能看到节点返回 SUCCESS
3.开始安装K8S
ls #查看此目录下需要执行的剧本
使用分步安装(推荐)
1.创建证书和安装准备
ansible-playbook 01.prepare.yml
如果发生下图错误:
尝试这样子解决:
yum install libselinux-python -y
cat /etc/selinux/config
init 6 #重启服务器
cd /etc/ansible
ansible-playbook 01.prepare.yml #重新运行剧本
2.安装etcd集群
ansible-playbook 02.etcd.yml
3.安装docker服务
ansible-playbook 03.docker.yml
4.安装master节点
ansible-playbook 04.kube-master.yml
5.安装node节点
ansible-playbook 05.kube-node.yml
6.安装集群网络
ansible-playbook 06.network.yml
7.安装集群插件
ansible-playbook 07.cluster-addon.yml
如果你对集群安装流程不熟悉,请先使用一键安装:(不推荐使用)
#一步安装
ansible-playbook 90.setup.yml
六、验证安装
1.验证集群版本
kubectl version
kubectl get componentstatus
2.验证节点就绪 (Ready) 状态
kubectl get nodes
3.验证集群pod状态
kubectl get pod --all-namespaces
4. 验证集群服务状态
kubectl get svc --all-namespaces
5.查看dashboard
kubectl get svc -n kube-system|grep kubernetes-dashboard
6. 访问网页 https://192.168.0.117:33613/
参考文档 :
https://github.com/easzlab/kubeasz/blob/master/docs/setup/quickStart.md
https://www.97hjh.cn/archives/%E5%9F%BA%E4%BA%8Eeaszup%E4%B8%80%E9%94%AE%E6%90%AD%E5%BB%BAk8s%E9%9B%86%E7%BE%A4