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/

在线升级到4.2.1:https://docs.kubesphere.com.cn/v4.2.1/03-installation-and-upgrade/03-upgrade-kubesphere/03-online-upgrade-kubephere-from-4.1.x/

离线升级到4.2.1:https://docs.kubesphere.com.cn/v4.2.1/03-installation-and-upgrade/03-upgrade-kubesphere/04-offline-upgrade-kubephere-from-4.1.x/

 

三,安装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 文件:

image

 

 

 

image

 

image

 

把生在怕配置复制到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

 

image

 

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 .

 

image

 将 /data/kubekey4/ kubekey-v4.0.5-linux-amd64.tar.gz 解压到 artifact 目录。

在 artifact 目录下会创建 kk 可执行文件。

image

 

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

 

image

 

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。

 

 

posted @ 2026-07-29 13:02  民工黑猫  阅读(23)  评论(0)    收藏  举报