kubekey3.1.9离线安装k8sv1.33.0

目前kubekey最新版本为4.x,根据官网社区版步骤生成离线安装包,安装harbor时报错:
[harbor]: failed to push image: failed to push image “quay.io/tigera/operator:v1.34.5” to remote: POST “https://dockerhub.kubekey.local/v2/tigera/operator/blobs/uploads/”: response status code 401: unauthorized: unauthorized to access repository: tigera/operator, action: push: unauthorized to access repository: tigera/operator, action: push 即使手动安装harbor然后执行镜像推送步骤也报一样的错,感觉是kubekey的版本问题社区链接
暂时未解决,官方指导很多镜像都需要FQ访问,我用花了很长时间,做出来的离线包还有问题,所以不推荐用4.x版本

下面记录下离线安装经验(原文参考原文):
环境配置就不赘述了,参照原文就行了(主机名那一步不用操作,修改config-sample.yaml时需要填节点name,kk会自动修改设备的hostname)
1、下载kubekey:https://github.com/kubesphere/kubekey/releases/download/v3.1.9/kubekey-v3.1.9-linux-amd64.tar.gz 解压就行了
2、创建manifest.yaml 创建离线安装包

./kk create manifest --with-kubernetes v1.33.0 --with-registry

cat manifest.yaml

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
  name: sample
spec:
  arches:
  - amd64
  operatingSystems: []
  kubernetesDistributions:
  - type: kubernetes
    version: v1.33.0
  components:
    helm:
      version: v3.14.3
    cni:
      version: v1.2.0
    etcd:
      version: v3.5.13
    containerRuntimes:
    - type: docker
      version: 24.0.9
    - type: containerd
      version: 1.7.13
    calicoctl:
      version: v3.27.4
    crictl:
      version: v1.29.0
    docker-registry:
      version: "2"
    harbor:
      version: v2.10.1
    docker-compose:
      version: v2.26.1
  images:
  - registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.9
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver:v1.33.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager:v1.33.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler:v1.33.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.33.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/coredns:1.9.3
  - registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache:1.22.20
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers:v3.27.4
  - registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.27.4
  - registry.cn-beijing.aliyuncs.com/kubesphereio/node:v3.27.4
  - registry.cn-beijing.aliyuncs.com/kubesphereio/pod2daemon-flexvol:v3.27.4
  - registry.cn-beijing.aliyuncs.com/kubesphereio/typha:v3.27.4
  - registry.cn-beijing.aliyuncs.com/kubesphereio/flannel:v0.21.3
  - registry.cn-beijing.aliyuncs.com/kubesphereio/flannel-cni-plugin:v1.1.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/cilium:v1.15.3
  - registry.cn-beijing.aliyuncs.com/kubesphereio/operator-generic:v1.15.3
  - registry.cn-beijing.aliyuncs.com/kubesphereio/hybridnet:v0.8.6
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-ovn:v1.10.10
  - registry.cn-beijing.aliyuncs.com/kubesphereio/multus-cni:v3.8
  - registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv:3.3.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/linux-utils:3.3.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/haproxy:2.9.6-alpine
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-vip:v0.7.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kata-deploy:stable
  - registry.cn-beijing.aliyuncs.com/kubesphereio/node-feature-discovery:v0.10.0
    ## ks-core
  - docker.m.ixdev.cn/kubesphere/ks-apiserver:v4.1.3
  - swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubesphere/ks-console:v4.1.3
  #- docker.m.ixdev.cn/kubesphere/ks-console:v4.1.3
  - docker.m.ixdev.cn/kubesphere/ks-controller-manager:v4.1.3
  - docker.m.ixdev.cn/kubesphere/kubectl:v1.27.16
  - docker.m.ixdev.cn/kubesphere/redis:7.2.4-alpine
  - docker.m.ixdev.cn/kubesphere/haproxy:2.9.6-alpine
  - swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openksc/ks-extensions-museum:v1.1.6
  #- registry.cn-beijing.aliyuncs.com/kubesphere/ks-extensions-museum:v1.1.6
   ## metrics-server
  - docker.m.ixdev.cn/kubesphere/metrics-server:v0.7.0
  - docker.m.ixdev.cn/kubesphere/addon-resizer:1.8.20
  registry:
    auths: {}

我这里要安装kubesphere,不安装的话有的镜像不需要
然后执行以下命令创建离线安装包:

export KKZONE=cn
./kk artifact export -m manifest-sample.yaml -o kubesphere.tar.gz
#执行时可能会报错有的镜像需要登录才能下载,有的镜像找不到docker.m.ixdev.cn和swr.cn-north-4.myhuaweicloud.com这些域名的镜像都是我自己在网上找的
#如果有的镜像docker login后能手动pull,可以修改最后的auths,如
    auths:
      "docker.io":
        username: ruizhouh #如果username为纯数字需要加上引号
        passward: ********
#有的镜像如swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubesphere/ks-console:v4.1.3项目是ddn-k8s,后面push镜像的步骤会报错找不到项目,在创建harbor项目时将该项目添加进脚本即可,其他镜像同理

3、创建config-cample.yml 安装harbor

./kk create config  --with-kubernetes v1.33.0 -f config-sample.yaml

cat config-sample.yaml

kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: node1, address: 192.168.10.11, internalAddress: 192.168.10.11, user: app, password: "*******"} #用户提前创建
  - {name: node2, address: 192.168.10.12, internalAddress: 192.168.10.12, user: app, password: "*******"}
  - {name: node3, address: 192.168.10.13, internalAddress: 192.168.10.13, user: app, password: "*******"}
  roleGroups:
    etcd:
    - node1
    control-plane: 
    - node1
    worker:
    - node1
    - node2
    - node3
    registry: 
    - node3
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    # internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.33.0
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: docker
  #etcd:
  #  type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    type: "harbor"
    auths:
      "my.harbor.com": #私有harbor域名,可在/etc/hosts中映射
        username: admin
        password: Harbor12345
    privateRegistry: "my.harbor.com"
    namespaceOverride: "kubesphereio"
    skipTLSVerify: true
    plainHTTP: true
    registryMirrors: []
    insecureRegistries: ["0.0.0.0/0","::/0"]
  addons: []
./kk init registry -f config-sample.yaml -a kubesphere.tar.gz安装harbor

4、创建harbor项目
vim create_project_harbor.sh

#!/usr/bin/env bash
url="https://dockerhub.kubekey.local"  # 修改为真实镜像仓库地址
user="admin"    
passwd="******"    ## 修改为真实的密码
harbor_projects=(
        ks
        kubesphere
        kubesphereio
        coredns
        calico
        flannel
        cilium
        hybridnetdev
        kubeovn
        openebs
        library
        plndr
        jenkins
        argoproj
        dexidp
        openpolicyagent
        curlimages
        grafana
        kubeedge
        nginxinc
        prom
        kiwigrid
        minio
        opensearchproject
        istio
        jaegertracing
        timberio
        prometheus-operator
        jimmidyson
        elastic
        thanosio
        brancz
        prometheus
        ddn-k8s #上面镜像列表中存在的项目在这里添加
)

for project in "${harbor_projects[@]}"; do
    echo "creating $project"
    curl -u "${user}:${passwd}" -X POST -H "Content-Type: application/json" "${url}/api/v2.0/projects" -d "{ \"project_name\": \"${project}\", \"public\": true}" -k  # 注意在 curl 命令末尾加上 -k
done
chmod +x create_project_harbor.sh
./create_project_harbor.sh
./kk artifact image push -f config-sample.yaml -a kubesphere.tar.gz #推送镜像到harbor,可能报错找不到项目,在上面脚本中添加即可

5、安装k8s

./kk create cluster -f config-sample.yaml -a kubesphere.tar.gz --with-local-storage --skip-push-images
查看更多可用参数,可以执行以下命令:
./kk create cluster -f config-sample.yaml -a kubesphere.tar.gz --help
参数说明:
- --skip-push-images :跳过预推送镜像
- --with-packages    :安装操作系统依赖(需要 ISO 文件,前面有安装socat这些就不用加这个参数,如果有OS离线补丁包可以挂载后自定义yum或apt本地源,然后加上这个参数自动安装依赖)
- --with-local-storage :部署本地存储(Local PV Provisioner)
#安装报错Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 192.168.10.11:2379: connect: connection refused,
#执行journalctl -xeu etcd.service有报错node1 etcd[32536]: {"level":"fatal","ts":"2026-01-19T17:48:51.28967+0800","caller":"etcdmain/etcd.go:204","msg":"discovery failed","error":"cannot fetch cluster info from peer urls: could not retrieve cluster information from the given URLs","stacktrace":"go.etcd.io/etcd/server/v3/etcdmain.startEtcdOrProxyV2\n\tgo.etcd.io/etcd/server/v3/etcdmain/etcd.go:204\ngo.etcd.io/etcd/server/v3/etcdmain.Main\n\tgo.etcd.io/etcd/server/v3/etcdmain/main.go:40\nmain.main\n\tgo.etcd.io/etcd/server/v3/main.go:31\nruntime.main\n\truntime/proc.go:267"}
#需要修改/etc/etcd.env中的ETCD_INITIAL_CLUSTER_STATE=new 然后重新执行安装

到此k8s部署完成

posted @ 2026-01-19 19:42  大雄猫皮太痒  阅读(0)  评论(0)    收藏  举报