kk部署k8s集群

元气满满
2026-03-02 / 0 评论 / 0 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2026年03月02日,已超过239天没有更新,若内容或图片失效,请留言反馈。

查看支持的k8s版本

./kk version --show-supported-k8s

安装 KubeKey

下载完成后当前目录下将生成 KubeKey 二进制文件 kk
curl -sSL https://get-kk.kubesphere.io | sh -

# 国内
wget https://packages.emal.cc/package/KubeKey/kubekey-v3.1.10-linux-amd64.tar.gz
wget https://packages.emal.cc/package/KubeKey/kk

创建 manifest 文件

注意
若只需要使用 kk 打包 KubeSphere 镜像至离线环境中,可直接使用邮件中收到的 manifest 文件构建离线包。无需另外创建或编辑 manifest 文件。

若需要使用 kk 部署 Kubernetes 以及镜像仓库,可参考以下步骤

  • 如果您访问 DockerHub 受限,执行以下命令将 Kubernetes 镜像地址替换为阿里云仓库
export KKZONE=cn
创建 manifest 文件。
# 如需使用 kk 离线部署镜像仓库,添加 --with-registry 打包镜像仓库的安装文件
./kk create manifest --with-kubernetes v1.26.12 --with-registry --filename manifest-sample-v1.26.12.yaml

# 该命令将创建一个 manifest-sample.yaml 文件

编辑 manifest 文件

若需要使用 kk 部署 Kubernetes 以及镜像仓库,将从邮件获取到的 KubeSphere 镜像列表添加到新创建的 manifest 文件中即可

  • 打开 manifest 文件
vi manifest-sample.yaml
复制 kk-manifest.yaml 或 kk-manifest-mirror.yaml(若访问 DockerHub 受限) 中的镜像列表,添加到新创建的 manifest-sample.yaml 文件中
注意
以下 manifest 文件中的镜像列表仅为示例,建议通过 https://get-images.kubesphere.io/ 获取最新的镜像列表。
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
  name: sample
spec:
  arches:
  - amd64
  operatingSystems: []
  kubernetesDistributions:
  - type: kubernetes
    version: v1.26.12
  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.26.12
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager:v1.26.12
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler:v1.26.12
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.26.12
  - 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
  registry:
    auths: {}

制作命令

执行以下命令构建包含 ks-core 及各扩展组件镜像的离线安装包
./kk artifact export -m manifest-sample.yaml -o kubesphere.tar.gz
执行成功后,将显示如下信息:
Pipeline[ArtifactExportPipeline] execute successfully

下载 KubeSphere Core Helm Chart

  • 安装 helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  • 下载 KubeSphere Core Helm Chart

此处为示例版本,请访问 https://get-images.kubesphere.io 或 KubeSphere GitHub 仓库查看最新 chart 版本。

VERSION=1.1.3     # Chart 版本
helm fetch https://charts.kubesphere.io/main/ks-core-${VERSION}.tgz

离线部署

1、准备工作

将联网主机 node1 上的三个文件同步至离线环境的 master 节点

  • kk
  • kubesphere.tar.gz
  • ks-core-1.1.3.tgz

2、创建配置文件

  • 创建离线集群配置文件
./kk create config --with-kubernetes v1.26.12

修改配置文件

vi config-sample.yaml

说明

  • 按照离线环境的实际配置修改节点信息。
  • 指定 registry 仓库的部署节点,用于 KubeKey 部署自建 Harbor 仓库。
  • registry 里可以指定 type 类型为 harbor,否则默认安装 docker registry。
  • 对于 Kubernetes v1.24+,建议将 containerManager 设置为 containerd。
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: master, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: "<REPLACE_WITH_YOUR_ACTUAL_PASSWORD>"}
  - {name: node2, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: "<REPLACE_WITH_YOUR_ACTUAL_PASSWORD>"}
  roleGroups:
    etcd:
    - master
    control-plane:
    - master
    worker:
    - node2
    # 如需使用 kk 自动部署镜像仓库,请设置该主机组 (建议仓库与集群分离部署,减少相互影响)
    # 如果需要部署 harbor 并且 containerManager 为 containerd 时,由于部署 harbor 依赖 docker,建议单独节点部署 harbor
    registry:
    - node2
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    # internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.26.12
    containerManager: containerd
  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:
    # 如需使用 kk 部署 harbor, 可将该参数设置为 harbor,不设置该参数且需使用 kk 创建容器镜像仓库,将默认使用 docker registry。
    # type: harbor
    # 如使用 kk 部署的 harbor 或其他需要登录的仓库,需设置对应仓库的 auths,如使用 kk 创建默认的 docker registry 仓库,则无需配置 auths 参数。
    auths:
      "dockerhub.kubekey.local":
        # 部署 harbor 时需指定 harbor 帐号密码
        # username: admin
        # password: Harbor12345
        skipTLSVerify: true
    # 设置集群部署时使用的私有仓库地址。如果您已有可用的镜像仓库,请替换为您的实际镜像仓库地址。
    # 如果离线包中为原始 dockerhub 镜像(即 manifest 文件中的镜像地址为 docker.io/***),可以将该参数设置为 dockerhub.kubekey.local/kubesphereio, 表示将镜像全部推送至名为 kubesphereio 的 harbor 项目中。
    privateRegistry: "dockerhub.kubekey.local"
    # 如果构建离线包时 Kubernetes 镜像使用的是阿里云仓库镜像,需配置该参数。如果使用 dockerhub 镜像,则无需配置此参数。
    namespaceOverride: "kubesphereio"
    registryMirrors: []
    insecureRegistries: []
  addons: []

安装harbor

./kk init registry -f config-sample.yaml -a kubesphere.tar.gz

创建harbor项目

tee create_project_harbor.sh <<-'EOF'
#!/usr/bin/env bash

# Copyright 2018 The KubeSphere Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

url="http://dockerhub.kubekey.local"  # 或修改为实际镜像仓库地址
user="admin"
passwd="Harbor12345"

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
)

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
EOF
chmod +x create_project_harbor.sh
./create_project_harbor.sh

安装kubernetes集群

安装必要软件包

yum -y install socat ipvsadm conntrack chrony
./kk create cluster -f config-sample.yaml -a kubesphere.tar.gz --with-local-storage
  • 指定 --with-local-storage 参数会默认部署 openebs localpv,如需对接其他存储,可在 Kubernetes 集群部署完成后自行安装。
  • 如果显示如下信息,则表明 Kubernetes 集群创建成功。
Pipeline[CreateclusterPipeline] execute successfully
Installation is complete.

删除集群

./kk delete cluster -f config-sample.yaml

官方文档地址:kubekey

0

评论 (0)

取消