本文档使用 KubeKey 作为制品和部署工具,具体参考官方文档,本文档仅作为按照官方文档进行实际操作时遇到的一些问题的补充。

制品制作

准备一台可以访问互联网的机器制作制品 artifact

  1. 执行以下命令下载 KubeKey v3.0.7 并解压:
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
  1. 在联网主机上执行以下命令,并复制示例中的 manifest 内容。(本示例已 Debian 11 系统部署 K8S 1.23.15 版本为例,并包含 KubeSphere 3.3.1 基础的相关镜像)
vim manifest.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
  name: sample
spec:
  arches:
  - amd64
  operatingSystems:
  - arch: amd64
    type: linux
    id: debian
    version: "11"
    osImage: Debian GNU/Linux 11 (bullseye)
    repository:
      iso:
        localPath: ./iso/debian-11-amd64.iso
        url:
  kubernetesDistributions:
  - type: kubernetes
    version: v1.23.15
  components:
    helm:
      version: v3.9.0
    cni:
      version: v0.9.1
    etcd:
      version: v3.4.13
    containerRuntimes:
    - type: containerd
      version: 1.6.4
    crictl:
      version: v1.24.0
    ##
    docker-registry:
      version: "2"
    # harbor:
    #   version: v2.4.1
    # docker-compose:
    #   version: v2.2.2
  images:
  - registry.cn-beijing.aliyuncs.com/kubesphereio/alertmanager:v0.23.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.23.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/coredns:1.8.6
  - registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4
  - registry.cn-beijing.aliyuncs.com/kubesphereio/haproxy:2.3
  - registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache:1.15.12
  - registry.cn-beijing.aliyuncs.com/kubesphereio/ks-apiserver:v3.3.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/ks-console:v3.3.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/ks-controller-manager:v3.3.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/ks-installer:v3.3.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver:v1.23.15
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager:v1.23.15
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers:v3.23.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.23.15
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-rbac-proxy:v0.11.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-rbac-proxy:v0.8.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler:v1.23.15
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-state-metrics:v2.5.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/kubectl:v1.22.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/linux-utils:3.3.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/mc:RELEASE.2019-08-07T23-14-43Z
  - registry.cn-beijing.aliyuncs.com/kubesphereio/minio:RELEASE.2019-08-07T01-59-21Z
  - registry.cn-beijing.aliyuncs.com/kubesphereio/nfs-subdir-external-provisioner:v4.0.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/node-exporter:v1.3.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/node:v3.23.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/notification-manager-operator:v1.4.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/notification-manager:v1.4.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/notification-tenant-sidecar:v3.2.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/openpitrix-jobs:v3.3.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.6
  - registry.cn-beijing.aliyuncs.com/kubesphereio/pod2daemon-flexvol:v3.23.2
  - registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus-config-reloader:v0.55.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus-operator:v0.55.1
  - registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus:v2.34.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv:3.3.0
  - registry.cn-beijing.aliyuncs.com/kubesphereio/snapshot-controller:v4.0.0
  registry:
    auths: {}

备注

  • 若需要导出的 artifact 文件中包含操作系统依赖文件(如:conntarck、chrony 等),可在 operationSystem 元素中的 .repostiory.iso.url 中配置相应的 ISO 依赖文件下载地址或者提前下载 ISO 包到本地在 localPath 里填写本地存放路径并删除 url 配置项。
  • 开启 harbor 和 docker-compose 配置项,为后面通过 KubeKey 自建 harbor 仓库推送镜像使用。
  • 默认创建的 manifest 里面的镜像列表从 docker.io 获取。
  • 可根据实际情况修改 manifest.yaml 文件的内容,用于之后导出期望的 artifact 文件。
  • 您可以访问 https://github.com/kubesphere/kubekey/releases/tag/v3.0.2 下载 ISO 文件。
  1. (可选)如果您已经拥有集群,那么可以在已有集群中执行 KubeKey 命令生成 manifest 文件,并参照步骤 2 中的示例配置 manifest 文件内容。
./kk create manifest
  1. 生成并导出制品 artifact。
./kk artifact export -m manifest.yaml -o kubesphere.tar.gz

离线安装集群

  1. 将下载的 kk 和制品 kubesphere.tar.gz 通过 U 盘等介质拷贝至离线环境安装节点。
  2. 创建离线集群配置文件。
vim config-offline.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: local-k8s
spec:
  hosts:
  # 各节点 name 需先手工添加到 /etc/hosts 中
  - {name: local-k8s-test01, address: 172.18.2.80, internalAddress: 172.18.2.80, privateKeyPath: "~/.ssh/id_rsa"}
  # - {name: node1, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: "<REPLACE_WITH_YOUR_ACTUAL_PASSWORD>"}
  roleGroups:
    etcd:
    - local-k8s-test01
    control-plane:
    - local-k8s-test01
    worker:
    - local-k8s-test01
    # 如需使用 kk 自动部署镜像仓库,请设置该主机组 (生成环境建议仓库与集群分离部署,减少相互影响)
    registry:
    - local-k8s-test01
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    internalLoadbalancer: haproxy
    domain: lb.k8s.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.23.15
    imageRepo: kubesphere
    clusterName: k8s.local
    autoRenewCerts: true
    containerManager: containerd
  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:
    # 如需使用 kk 部署 harbor, 可将该参数设置为 harbor,不设置该参数且需使用 kk 创建容器镜像仓库,将默认使用docker registry。
    #type: harbor
    # 如使用 kk 部署的 harbor 或其他需要登录的仓库,可设置对应仓库的auths,如使用 kk 创建的 docker registry 仓库,则无需配置该参数。
    # 注意:如使用 kk 部署 harbor,该参数请于 harbor 启动后设置。
    #auths:
    #  "dockerhub.kubekey.local":
    #    username: admin
    #    password: Harbor12345
    # 设置集群部署时使用的私有仓库
    privateRegistry: "dockerhub.kubekey.local"
    namespaceOverride: "kubesphereio"
    registryMirrors: []
    insecureRegistries: []
    auths:
      "dockerhub.kubekey.local":
        skipTLSVerify: true
  addons: []
  1. 节点初始化(仅作参考,根据实际情况调整)
# 集群各节点先要进行一些依赖的初始化安装
apt update
apt install chrony curl socat conntrack ebtables ipset ipvsadm nfs-common
echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf

# 修改时区
rm -rf /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 调整 ulimit
cat >> /etc/security/limits.conf <<EOF
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
root soft nproc 1000000
root hard nproc 1000000
root soft nofile 1000000
root hard nofile 1000000
EOF

重启各节点
  1. (可选)安装本地镜像仓库。

  2. 确保 kk、kubesphere.tar.gz、config-offline.yaml 在当前同一目录

  3. 确保部署节点可以 ssh 登录各节点

  4. 有关完整的部署介绍,如使用 harbor 作为本地仓库服务,详情参考官方文档

./kk init registry -f config-offline.yaml -a kubesphere.tar.gz
  1. 执行以下命令安装 KubeSphere 集群:
./kk create cluster -f config-offline.yaml -a kubesphere.tar.gz --with-packages

image.png
在确认这些依赖和时区、时间都正常后可以输入 yes 进行安装,否则请安装相关依赖后再进行。

安装完成后,您会看到以下内容:

15:12:51 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.

Please check the result using the command:

kubectl get pod -A

执行以下命令查看集群状态:

kubectl get pod -A

NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-6b5bbdbbcc-lfvlc   1/1     Running   0          4m1s
kube-system   calico-node-54p4b                          1/1     Running   0          4m1s
kube-system   coredns-5bb9675886-fbhjv                   1/1     Running   0          4m4s
kube-system   coredns-5bb9675886-gg9bs                   1/1     Running   0          4m4s
kube-system   kube-apiserver-local-k8s-test01            1/1     Running   0          4m12s
kube-system   kube-controller-manager-local-k8s-test01   1/1     Running   0          4m17s
kube-system   kube-proxy-82v2h                           1/1     Running   0          4m1s
kube-system   kube-scheduler-local-k8s-test01            1/1     Running   0          4m11s
kube-system   nodelocaldns-n6fqg                         1/1     Running   0          4m3s

当所有 Pod 状态都为 Running 时则说明部署成功。

附件:

iso/debian-11-amd64.iso
下载地址:https://github.com/kubesphere/kubekey/releases/download/v3.0.7/debian10-debs-amd64.iso
下载后重命名即可,兼容

5 个月 后

官方文档在安装完成后会将kubesphere也安装了,为什么操作了之后只装了k8s