代码改变世界

Kubeasz安装K8s集群(Rocky Linux9.6)

2025-06-11 09:18  WilliamZheng  阅读(542)  评论(0)    收藏  举报

一、环境信息

IP地址 主机名 角色
192.168.94.20 WorkLinux 离线包制作,有互联网
192.168.94.10 k8s-node1 部署机、K8s Master+Worker
192.168.94.11 k8s-node2 K8s Master+Worker
192.168.94.12 k8s-node3 K8s Master+Worker

操作系统:Rocky Linux release 9.6 (Blue Onyx)
内核版本:5.14.0-570.17.1.el9_6.x86_64
待安装k8s版本:v1.32.3
项目地址:https://github.com/easzlab/kubeasz

说明:模拟192.168.94.20有互联网,用来制作离线包,192.168.94.10-12是三台离线的生产环境,三台均为k8smaster+worker节点,部署机为192.168.94.10

二、离线安装包制作

  1. 下载工具脚本ezdown,举例使用kubeasz版本3.6.6
export release=3.6.6
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
  1. 下载kubeasz代码、二进制、默认容器镜像,安装docker,运行registry
    所有相关文件都会保存在/etc/kubeasz
# 国内环境
./ezdown -D
# 海外环境
#./ezdown -D -m standard
  1. 【可选】下载额外容器镜像(cilium,flannel,prometheus等)
# 按需下载
./ezdown -X flannel
./ezdown -X local-path-provisioner
./ezdown -X prometheus
  1. 【可选】下载离线系统包 (适用于无法使用yum/apt仓库情形)
./ezdown -P rocky_9
  1. 打包目录,制作离线安装包
cd /etc && tar -czvf kubeasz_3.6.6_1.32-x86_64.tgz ./kubeasz

三、离线环境安装k8s

以下操作均在部署机上完成

  1. 配置ssh免密登录
ssh-keygen
(连续三次回车)
ssh-copy-id 192.168.94.10
ssh-copy-id 192.168.94.11
ssh-copy-id 192.168.94.12
  1. 配置chrony时间同步
    选定一个节点(groups.chrony[0])作为集群内部其他节点的时间同步源,而这个节点本身从公网源同步;如果整个集群都无法访问公网,那么请手动校准这个节点的时间后,仍旧可以作为内部集群的时间源服务器。
# RockyLinux9默认安装了chrony
systemctl status chronyd
# 修改 clusters/${cluster_name}/hosts 文件,在 chrony组中加入选中的节点ip

  1. 解压,离线安装docker,运行registry,检查本地文件,正常会提示所有文件已经下载完成,并上传到本地私有镜像仓库
# 目录层级必须为/etc/kubeasz
tar -zxvf kubeasz_3.6.6_1.32-x86_64.tgz -C /etc/
cd /etc/kubeasz/
./ezdown -D
./ezdown -X flannel
./ezdown -X local-path-provisioner
./ezdown -X prometheus
# 用到哪些组件,这里就需要执行哪些组件
  1. 创建集群配置实例
# 容器化运行kubeasz
./ezdown -S
# 设置参数允许离线安装系统软件包
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/kubeasz/example/config.yml
# 创建新集群 k8s-01
docker exec -it kubeasz ezctl new k8s-01
  1. 然后根据提示修改配置
    /etc/kubeasz/clusters/k8s-01/hosts主要内容修改如下
......
[etcd]
192.168.94.10
192.168.94.11
192.168.94.12
......
[kube_master]
192.168.94.10 k8s_nodename='k8s-node1'
192.168.94.11 k8s_nodename='k8s-node2'
192.168.94.12 k8s_nodename='k8s-node3'
......
[kube_node]
192.168.94.10 k8s_nodename='k8s-node1'
192.168.94.11 k8s_nodename='k8s-node2'
192.168.94.12 k8s_nodename='k8s-node3'
......
CLUSTER_NETWORK="flannel"
PROXY_MODE="iptables"
......

/etc/kubeasz/clusters/k8s-01/config.yml主要内容修改如下

......
local_path_provisioner_install: "yes"
local_path_provisioner_dir: "/data/local-path-provisioner"
......
# 特殊目录需指定容器持久化存储,比如:
# [containerd]容器持久化存储目录
CONTAINERD_STORAGE_DIR: "/data/lib/containerd"

# [docker]容器存储目录
DOCKER_STORAGE_DIR: "/data/lib/docker"

# Kubelet 根目录
KUBELET_ROOT_DIR: "/data/lib/kubelet"
  1. 开始一键安装
docker exec -it kubeasz ezctl setup k8s-01 all
  1. 部署完成~
[root@k8s-node1 ~]# kubectl get node -owide
NAME        STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                      KERNEL-VERSION                 CONTAINER-RUNTIME
k8s-node1   Ready    master   57m   v1.32.3   192.168.94.10   <none>        Rocky Linux 9.6 (Blue Onyx)   5.14.0-570.17.1.el9_6.x86_64   containerd://2.0.4
k8s-node2   Ready    master   57m   v1.32.3   192.168.94.11   <none>        Rocky Linux 9.6 (Blue Onyx)   5.14.0-570.17.1.el9_6.x86_64   containerd://2.0.4
k8s-node3   Ready    master   57m   v1.32.3   192.168.94.12   <none>        Rocky Linux 9.6 (Blue Onyx)   5.14.0-570.17.1.el9_6.x86_64   containerd://2.0.4
[root@k8s-node1 ~]#
[root@k8s-node1 ~]# kubectl get pod -A
NAMESPACE     NAME                                         READY   STATUS    RESTARTS       AGE
kube-system   coredns-75dd46b86b-bkjw6                     1/1     Running   0              55m
kube-system   dashboard-metrics-scraper-65c7c4ffff-7vz6d   1/1     Running   0              55m
kube-system   kube-flannel-ds-9gknm                        1/1     Running   11 (31m ago)   58m
kube-system   kube-flannel-ds-k67zl                        1/1     Running   11 (31m ago)   58m
kube-system   kube-flannel-ds-tnvgh                        1/1     Running   11 (31m ago)   58m
kube-system   kubernetes-dashboard-75c65df89-62dkb         1/1     Running   0              55m
kube-system   local-path-provisioner-69f8df4bb8-94ftz      1/1     Running   0              55m
kube-system   metrics-server-74f6d6fdd5-r5dlp              1/1     Running   0              55m
kube-system   node-local-dns-dw646                         1/1     Running   0              55m
kube-system   node-local-dns-w6wx9                         1/1     Running   0              55m
kube-system   node-local-dns-wrxhh                         1/1     Running   0              55m
[root@k8s-node1 ~]#
  1. 安装插件
# 07-安装集群插件
docker exec -it kubeasz ezctl setup k8s-01 07
  1. 删除集群
# 注意:删除后需要重启所有节点
docker exec -it kubeasz ezctl destroy k8s-01

四、增删节点

增删master节点

# 增加master节点
docker exec -it kubeasz ezctl add-master k8s-01 192.168.94.13 k8s_nodename=k8s-master1
docker exec -it kubeasz ezctl add-etcd k8s-01 192.168.94.13

# 删除master节点
docker exec -it kubeasz ezctl del-etcd k8s-01 192.168.94.13
docker exec -it kubeasz ezctl del-master k8s-01 192.168.94.13

增删node节点

# 增加node节点
docker exec -it kubeasz ezctl add-node k8s-01 192.168.94.14 k8s_nodename=k8s-node4

# 删除node节点
docker exec -it kubeasz ezctl del-node k8s-01 192.168.94.14