ubuntu 24.04.4 + kubekey v4.0.5离线安装k8s v1.34
集群规划(3 节点),使用kubekey v4.0.5部署k8s。
master节点,主机名:k8s-master-01,ip:172.29.128.1
工作节点1:主机名:k8s-worker-01,ip:172.29.132.68
工作节点2:主机名:k8s-worker-02,ip:172.29.132.69
| 机器名 | 内网 ip |
| k8s-master-01 | 172.29.128.1 |
| k8s-worker-01 | 172.29.132.68 |
| k8s-worker-02 | 172.29.132.69 |
一、所有节点前置初始化(3 台机器全部执行)
1. 关闭防火墙、swap、配置主机名、hosts
# 1. 设置主机名(分别对应三台机器执行) # master节点执行 hostnamectl set-hostname k8s-master-01 # worker01执行 hostnamectl set-hostname k8s-worker-01 # worker02执行 hostnamectl set-hostname k8s-worker-02 # 2. 写入hosts(三台机器统一执行) cat >> /etc/hosts << EOF 172.29.128.1 k8s-master-01 172.29.132.68 k8s-worker-01 172.29.132.69 k8s-worker-02 EOF # 3. 永久关闭swap swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 4. 关闭ufw防火墙 systemctl stop ufw systemctl disable ufw # 5. 内核模块加载、sysctl容器网络配置 modprobe overlay modprobe br_netfilter cat >> /etc/sysctl.conf << EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sysctl -p # 6. 安装基础依赖
apt install -y curl wget openssl openssh-server ca-certificates sshpass tar unzip ipset ipvsadm socat conntrack
2. 配置免密 ssh(仅 master 节点操作,打通所有节点)
# master节点生成密钥,一路回车 ssh-keygen # 分发密钥到三台机器 ssh-copy-id root@172.29.128.1 ssh-copy-id root@172.29.132.68 ssh-copy-id root@172.29.132.69 # 验证免密连通 ssh root@172.29.128.1 hostname ssh root@172.29.132.68 hostname ssh root@172.29.132.69 hostname
3. 时区统一(所有节点)
timedatectl set-timezone Asia/Shanghai
二,参考kubekey官方安装文档
在线安装 Kubernetes 和 KubeSphere:https://docs.kubesphere.com.cn/v4.2.1/03-installation-and-upgrade/02-install-kubesphere/01-online-install-kubernetes-and-kubesphere/
离线安装 Kubernetes 和 KubeSphere:https://docs.kubesphere.com.cn/v4.2.1/03-installation-and-upgrade/02-install-kubesphere/02-offline-install-kubernetes-and-kubesphere/
三,安装kubekey
1)在线安装kubekey
执行以下命令下载最新版kubekey:
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
查看安装文件
ls download-images-config.yaml kk kubekey-v4.0.5-linux-amd64.tar.gz package.sh web-installer web-installer.tgz
2) 离线安装kubekey v4.0.5
注意,离线安装的kubekey没有package.sh、web-installer、web-installer.tgz三个文件,不能导出离线包
#github下载地址:https://github.com/kubesphere/kubekey/releases/download/v4.0.5/kubekey-v4.0.5-linux-amd64 #国内下载地址:https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v4.0.5/kubekey-v4.0.5-linux-amd64.tar.gz wget https://github.com/kubesphere/kubekey/releases/download/v4.0.5/kubekey-v4.0.5-linux-amd64 tar -zxvf kubekey-v4.0.5-linux-amd64.tar.gz chmod +x ./kk cp ./kk /usr/local/bin/ ./kk version
3) 查看kubekey版本:
./kk version
四,构建离线安装包
找一台能上github的服务器,构建离线安装包。
1,创建配置文件
通过 https://get-images.kubesphere.io 页面生成配置文件。 登录打包节点,在打包节点上创建 offline-config.yaml 文件:



把生在怕配置复制到download-images-config.yaml文件,内容如下如下:
apiVersion: kubekey.kubesphere.io/v1 kind: Config spec: zone: "cn" download: arch: - amd64 - arm64 images: policy: warn registry: hub.kubesphere.com.cn kubernetes: kube_version: - v1.23.17 - v1.24.17 - v1.25.16 - v1.26.15 - v1.27.16 - v1.28.15 - v1.29.15 - v1.30.14 - v1.31.14 - v1.32.13 - v1.33.7 - v1.34.3 cni: type: - calico - cilium - flannel - kubeovn - hybridnet multi_cni: - multus - spiderpool cri: container_manager: - containerd - docker storage_class: local: enabled: true nfs: enabled: true image_registry: type: - harbor - docker-registry iso: - "almalinux-9.0-rpms" - "kylin-v10SP3-rpms" - "ubuntu-22.04-debs" - "centos-8-rpms" - "kylin-v10SP2-rpms" - "ubuntu-24.04-debs" - "debian-10-debs" - "kylin-v10SP1-rpms" - "ubuntu-18.04-debs" - "kylin-v10SP3-2403-rpms" - "ubuntu-20.04-debs" - "debian-11-debs" charts: - url: oci://hub.kubesphere.com.cn/kse/ks-core version: 1.2.4 image_manifests: # ks-core - hub.kubesphere.com.cn/kse/ks-apiserver:v4.2.1 - hub.kubesphere.com.cn/kse/ks-console:v4.2.1 - hub.kubesphere.com.cn/kse/ks-controller-manager:v4.2.1 - hub.kubesphere.com.cn/kubesphereio/kubectl:v1.33.1 - hub.kubesphere.com.cn/kubesphereio/redis:7.2.12-alpine - hub.kubesphere.com.cn/kse/extensions-museum:v11.2.0 - hub.kubesphere.com.cn/kse/ks-console-embed:v4.2.1 - hub.kubesphere.com.cn/kse/ks-posthog:v2.0.0
注意:勾选不同的打包内容,生成的配置文件不同。
2,制作离线安装包
执行构建脚本:
./package.sh download-images-config.yaml
注意:构建离线包的命令一定要在kubekey v4.0.4安装目录执行,不然会找不到 ./kk命令。
当输出以下信息时,表示制作成功:
Offline package artifact.tgz has been created successfully.
五,离线安装 kubenertes v1.34.3
1, 解压离线包
tar -zxvf artifact.tgz

2,进入离线目录,解压 kubekey-v4.0.5-linux-amd64.tar.gz 到离线包目录,在当前目录下获得kk命令
cd /data/kubekey4/artifact tar -zxvf /data/kubekey4/kubekey-v4.0.5-linux-amd64.tar.gz -C .

将 /data/kubekey4/ kubekey-v4.0.5-linux-amd64.tar.gz 解压到 artifact 目录。
在 artifact 目录下会创建 kk 可执行文件。

3. 创建安装配置文件
在 artifact 目录下,执行以下命令创建安装配置文件 config-v1.34.3.yaml:
./kk create config --with-kubernetes v1.34.3 -o .
将 v1.34.3 替换为实际需要的 Kubernetes 版本。请确保替换后的版本已包含在构建离线包时使用的 spec.download.kubernetes.kube_version 列表中。
命令执行完毕后,将生成安装配置文件 config-v1.34.3.yaml。
补充镜像仓库配置(如果不使用外部仓库,在创建集群时同时安装镜像仓库)
spec: image_registry: # 镜像仓库类型。支持 harbor、docker-registry;留空则不安装 type: "harbor" auth: # 私有镜像仓库地址 registry: "dockerhub.kubekey.local"
5. 创建节点配置文件
在 artifact 目录下,执行以下命令创建节点配置文件 inventory.yaml:
./kk create inventory -o .
inventory.yaml 主要设置集群中各节点的连接信息。命令执行完毕后,将生成节点配置文件,示例如下:
apiVersion: kubekey.kubesphere.io/v1
kind: Inventory
metadata:
name: default
spec:
hosts: # your can set all nodes here. or set nodes on special groups.
# localhost:
# connector:
# password: 123456
# node1:
# connector:
# type: ssh
# host: node1
# port: 22
# user: root
# password: 123456
# internal_ipv4: 1.1.1.1
groups:
# all kubernetes nodes.
k8s_cluster:
groups:
- kube_control_plane
- kube_worker
# control_plane nodes
kube_control_plane:
hosts:
- localhost
# worker nodes
kube_worker:
hosts:
- localhost
# etcd nodes when etcd_deployment_type is external
etcd:
hosts:
- localhost
# image_registry:
# hosts:
# - localhost
# nfs nodes for registry storage. and kubernetes nfs storage
# nfs:
# hosts:
# - localhost
如果选择在创建集群时同时安装镜像仓库,需要在 inventory.yaml 中额外添加 image_registry 节点和分组。示例如下:
spec: hosts: harbor1: connector: type: ssh host: 172.29.128.1 port: 22 user: root password: root密码 internal_ipv4: 172.29.128.1 groups: image_registry: hosts: - harbor1
完整inventory.yaml配置:
apiVersion: kubekey.kubesphere.io/v1 kind: Inventory metadata: name: default spec: hosts: # your can set all nodes here. or set nodes on special groups. # localhost: # connector: # password: 123456 # node1: # connector: # type: ssh # host: node1 # port: 22 # user: root # password: 123456 # internal_ipv4: 1.1.1.1 k8s-master-01: connector: type: ssh host: 172.29.128.1 port: 22 user: root password: yihan@123 internal_ipv4: 172.29.128.1 k8s-worker-01: connector: type: ssh host: 172.29.132.68 port: 22 user: root password: yihan@123 internal_ipv4: 172.29.132.68 k8s-worker-02: connector: type: ssh host: 172.29.132.69 port: 22 user: root password: yihan@123 internal_ipv4: 172.29.132.69 harbor1: connector: type: ssh host: 172.29.128.1 port: 22 user: root password: yihan@123 internal_ipv4: 172.29.128.1 groups: # all kubernetes nodes. k8s_cluster: groups: - kube_control_plane - kube_worker # control_plane nodes kube_control_plane: hosts: - k8s-master-01 # worker nodes kube_worker: hosts: - k8s-worker-01 - k8s-worker-02 # etcd nodes when etcd_deployment_type is external etcd: hosts: - k8s-master-01 # image_registry: # hosts: # - localhost # nfs nodes for registry storage. and kubernetes nfs storage # nfs: # hosts: # - localhost image_registry: hosts: - harbor1

6. 安装集群
./kk create cluster -a kubekey-artifact.tgz -i inventory.yaml -c config-v1.34.3.yaml
7,查看集群状态
kubectl get nodes
kubectl get pod -A
kubectl get svc
六,在线安装 KubeSphere
chart=oci://hub.kubesphere.com.cn/kse/ks-core version=1.2.4 helm upgrade --install -n kubesphere-system --create-namespace ks-core $chart \ --debug --wait --version $version --reset-values --take-ownership \ --set global.imageRegistry=hub.kubesphere.com.cn,extension.imageRegistry=hub.kubesphere.com.cn \ --set kseExtensionRepository.image.tag=v11.2.0
注意: Helm 版本需要 >= 3.17.0。

浙公网安备 33010602011771号