Kubeeasy部署文档
# Kubeeasy部署文档
# 版本
版本:kubeeasy-v1.3.0
# 更新说明:
- 新增安装软件包并发执行任务
- 新增私有容器registry仓库,用于集群拉取镜像
- 修改容器镜像的操作
- 取消在线安装的模式,全部替换为离线安装
# 架构
# 要求
OS:centos 7.9 x64
CPU:2C及以上
MEM:4G及以上
认证:集群节点需统一认证,需使用同一用户名和密码
运行:在预设的master节点执行
# 功能
- 支持升级集群内核,升级后内核版本为:5.13.2
- 支持离线部署普通的k8s集群,k8s版本为:v1.21.3
- 支持离线部署高可用k8s集群,k8s版本为:v1.21.3
- K8S HA集群使用云原生的kube-vip,其自带VIP和负载均衡
- K8S集群默认安装图形化管理工具kuboard-v2
- K8S集群默认安装local-hostpath存储类
- K8S证书100年,且开启了自动轮询
- 内置容器镜像的功能:pull、push、save、load
普通集群模式主机列表
IP 地址 | 主机名 | 角色 |
---|---|---|
192.168.1.6 | k8s-maste-noder01 | master | etcd | worker |
192.168.1.15 | k8s-worker-node1 | worker |
192.168.1.9 | k8s-worker-node2 | worker |
# 离线安装方式
注意:离线部署方式的主机必须配置网关
[root@master-1 opt]# ll
total 1991876
dr-xr-xr-x. 2 root root 55 Mar 3 01:27 dependencies
-r-xr-xr-x. 1 root root 615853603 Mar 3 01:27 harbor-offline.tar.gz
-r-xr-xr-x. 1 root root 13862382 Mar 3 01:27 helm-v3.7.1-linux-amd64.tar.gz
-r-xr-xr-x. 1 root root 21963328 Mar 3 01:27 istio.tar.gz
-r-xr-xr-x. 1 root root 155976 Mar 3 01:27 kubeeasy
-r-xr-xr-x. 1 root root 1367636693 Mar 3 01:27 kubernetes.tar.gz
-r-xr-xr-x. 1 root root 20196005 Mar 3 01:27 kubevirt.tar.gz
# 🚀安装kubeeasy
将kubeeasy文件上传至预设的master节点/root目录,然后赋予执行权限并移动到/usr/bin目录下。
[root@master-1 opt]# mv kubeeasy /usr/bin/
# 🚀集群安装依赖包
使用kubeeasy在集群中安装软件包,包含远程连接sshpass等软件包。
[root@master-1 opt]# kubeeasy install dependencies \
--host 192.168.1.6,192.168.1.15 \
--user root \
--password 000000 \
--offline-file dependencies/base-rpms.tar.gz
# 🚀基础ssh配置
使用kubeeasy在集群中创建ssh免秘钥,其中优化的ssh的连接以及配置了集群的免秘钥登录等。
- 集群连通性检测-ssh
kubeeasy check ssh \
--host 192.168.1.6,192.168.1.15 \
--user root \
--password 000000
- 集群免秘钥设置
kubeeasy create ssh-keygen \
--master 192.168.1.6 \
--worker 192.168.1.15 \
--user root \
--password 000000
# 🚀集群升级内核
使用kubeeasy升级集群的内核,将其3.10的内核升级为5.14(建议升级内核)。脚本执行完后,会自动重启主机,以生效系统内核。
[root@master-1 opt]# kubeeasy install upgrade-kernel \
--host 192.168.1.6,192.168.1.15 \
--user root \
--password 000000 \
--offline-file dependencies/base-rpms.tar.gz
# 🚀部署K8S集群
使用kubeeasy部署K8S集群,以下分为普通集群和高可用集群的安装方式,根据实际情况选择一种方案部署。安装后的K8S的版本为v1.21.3,使用docker作为容器运行时,网络组件使用calico网络,默认还安装kuboard图形化管理器和K8S存储类(local-hostpath),K8S的证书有效期为100年,且开启了证书轮换.
如需更改K8S的Pod网段,修改--pod-cidr参数相应的值
[root@master-1 opt]# kubeeasy install kubernetes \
--master 192.168.1.6 \
--worker 192.168.1.15 \
--user root \
--password 000000 \
--version 1.21.1 \
--offline-file kubernetes.tar.gz
部署完成后重新登录刷新。
██╗ ██╗ █████╗ ███████╗
██║ ██╔╝██╔══██╗██╔════╝
█████╔╝ ╚█████╔╝███████╗
██╔═██╗ ██╔══██╗╚════██║
██║ ██╗╚█████╔╝███████║
╚═╝ ╚═╝ ╚════╝ ╚══════╝
Information as of: 2022-03-03 10:13:10
Product............: OpenStack Compute 17.0.10-1.el7
OS.................: CentOS Linux release 7.9.2009 (Core)
Kernel.............: Linux 3.10.0-1160.el7.x86_64 x86_64 GNU/Linux
CPU................: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz 4P 1C 4L
Hostname...........: k8s-master-node1
IP Addresses.......: 192.168.1.18
Uptime.............: 0 days, 00h 17m 42s
Memory.............: 1.71GiB of 7.64GiB RAM used (22.42%)
Load Averages......: 0.31 / 0.52 / 0.32 with 4 core(s) at 3298.088Hz
Disk Usage.........: 13G of 100G disk space used (13%)
Users online.......: 1
Running Processes..: 189
Container Info.....: Exited:2 Running:12 Images:26
[root@k8s-master-node1 ~]#
安装高可用k8s集群(master节点个数必须大于等于3)
kubeeasy install kubernetes \
--master 192.168.1.206,192.168.1.207,192.168.1.208 \
--worker 192.168.1.209 \
--user root \
--password 000000 \
--version 1.21.3 \
--virtual-ip 192.168.1.250 \
--pod-cidr 10.244.0.0/16 \
--offline-file kubernetes.tar.gz
# 🚀部署Harbor仓库
使用kubeeasy部署Harbor仓库,使用kubeeasy add的方式添加harbor-offline.tar.gz完成部署。
[root@k8s-master-node1 opt]# kubeeasy add \
--registry harbor \
--offline-file harbor-offline.tar.gz
✔ ----Harbor has been installed and started successfully.----
Created symlink from /etc/systemd/system/multi-user.target.wants/harbor.service to /usr/lib/systemd/system/harbor.service.
# 🚀部署Istio服务网格
使用kubeeasy部署istio服务网格。
[root@k8s-master-node1 opt]# kubeeasy add \
--istio istio \
--offline-file istio.tar.gz
[root@k8s-master-node1 opt]# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
grafana-6ccd56f4b6-b5f2r 1/1 Running 0 49s
istio-egressgateway-7f4864f59c-qmlgg 1/1 Running 0 65s
istio-ingressgateway-55d9fb9f-6kd2x 1/1 Running 0 65s
istiod-555d47cb65-s8xsg 1/1 Running 0 69s
jaeger-5d44bc5c5d-ndgss 1/1 Running 0 49s
kiali-9f9596d69-mdbzb 1/1 Running 0 49s
prometheus-64fd8ccd65-w9n65 2/2 Running 0 48s
# 🚀部署kubevirt
使用kubeeasy部署kubrvirt的虚拟机服务,用于管理k8s的虚拟机。
[root@k8s-master-node1 opt]# kubeeasy add \
--virt kubevirt \
--offline-file kubevirt.tar.gz
[root@k8s-master-node1 opt]# kubectl get pods -n kubevirt
NAME READY STATUS RESTARTS AGE
virt-api-86f9d6d4f-mj6qx 1/1 Running 0 8m6s
virt-api-86f9d6d4f-xm9j2 1/1 Running 0 8m6s
virt-controller-54b79f5db-6x2dd 1/1 Running 0 7m41s
virt-controller-54b79f5db-mwd86 1/1 Running 0 7m41s
virt-handler-t7c7k 1/1 Running 0 7m41s
virt-handler-tkqxl 1/1 Running 0 7m41s
virt-handler-wfgnj 1/1 Running 0 7m41s
virt-operator-6fbd74566c-k9wxq 1/1 Running 0 8m47s
virt-operator-6fbd74566c-ntxf9 1/1 Running 0 8m47s
# 其他功能
# 🚀 重置K8S节点
使用kubeeasy将集群重置(意思就是删除所有相关软件,恢复一个纯净的系统)
- 重置正常的K8S集群(会重置整个集群)
kubeeasy reset \
--user root \
--password 000000
- 强制重置指定的节点(如果节点不正常可以选择强制重置节点)
kubeeasy reset --force \
--master 192.168.1.6 \
--worker 192.168.1.15 \
--user root \
--password 000000
# 🚀增加K8S节点
使用kubeeasy将新的节点加入K8S集群中
- 离线增加K8S节点
增加master节点只适用于高可用集群的模式
从普通的K8S集群转换为高可用的K8S集群
[root@k8s-master-node1 opt]# kubeeasy install dependencies \
--host 192.168.1.9 \
--user root \
--password 000000 \
--offline-file dependencies/base-rpms.tar.gz
[root@k8s-master-node1 opt]# kubeeasy add \
--worker 192.168.1.9 \
--user root \
--password 000000 \
--offline-file kubernetes.tar.gz
[root@k8s-master-node1 opt]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master-node1 Ready control-plane,master,worker 8m21s v1.21.1
k8s-worker-node1 Ready worker 7m56s v1.21.1
k8s-worker-node2 Ready worker 15s v1.21.1
# 🚀删除K8S节点
使用kubeeasy将节点从K8S集群中删除
- 删除K8S节点
删除操作会重置节点,包括删除K8S服务、docker数据等清空操作。
[root@k8s-master-node1 opt]# kubeeasy delete \
--worker 192.168.1.9 \
--user root \
--password 000000
# 🚀移除K8S节点
使用kubeeasy将节点从K8S集群中移除
- 移除K8S节点
移除操作会不会重置节点,只是从K8S集群中移除,并不会删除docker的数据。
[root@k8s-master-node1 opt]# kubeeasy remove \
--worker 192.168.1.9 \
--user root \
--password 0000000
# 🚀集群分发并读取容器镜像
使用kubeeasy将容器镜像离线包分发到指定节点并读取,如test-images.tar.gz。
- 分发现有的容器镜像并读取
[root@k8s-master-node1 opt]# kubeeasy images load \
--host 192.168.1.6,192.168.1.15,192.168.1.9 \
--user root \
--password 000000 \
--offline-file test-images.tar.gz
# 🚀容器镜像
使用kubeeasy将容器列表文件的镜像保存到指定目录、也可以将其上传到镜像仓库中,但前提是您需要先登录镜像仓库。
images-list.txt (opens new window)文件命名规范:
test :表示一个镜像包集,下方区域是镜像列表,保存后以test命名。
- 保存镜像离线包
[root@k8s-master-node1 opt]# kubeeasy images save \
--images-file images-list.txt \
--images-dir ./images
- 推送镜像到仓库
[root@k8s-master-node1 opt]# docker login dockerhub.kubeeasy.local:5000 -u admin -p admin
kubeeasy images push \
--images-file images-list.txt \
--images-registry dockerhub.kubeeasy.local:5000/kongyu
# 其他
# 🚀集群免秘钥设置
kubeeasy create ssh-keygen \
--master 192.168.200.11 \
--worker 192.168.200.12,192.168.200.13 \
--user root \
--password 000000
# 🚀集群时间同步设置
kubeeasy create time \
--master 192.168.1.207 \
--worker 192.168.1.208,192.168.1.209 \
--user root \
--password 000000
# 🚀集群连通性检测-ssh
kubeeasy check ssh \
--host 192.168.1.207-192.168.1.209 \
--user root \
--password 000000
# 🚀集群连通性检测-ping
kubeeasy check ping \
--host 192.168.1.207-192.168.1.209
# 🚀修改集群root密码
kubeeasy create password \
--host 192.168.1.207-192.168.1.209 \
--user root \
--password 000000 \
--new-password 123456
# 🚀清除历史命令
kubeeasy set history \
--host 192.168.1.207-192.168.1.209 \
--user root \
--password 000000