安装 GlusterFS

GlusterFS 是 Kubernetes 中的树内 (in-tree) 存储插件。因此,您只需要安装存储类型。

本教程演示了如何使用 KubeKey 搭建 KubeSphere 集群并配置 GlusterFS 以提供存储服务。

备注

本教程以 Ubuntu 16.04 为例。

准备工作

您需要搭建 GlusterFS 集群并配置 Heketi。有关更多信息,请参见搭建 GlusterFS 服务器

步骤 1:配置客户端机器

您需要在全部客户端机器上安装 GlusterFS 客户端安装包。

  1. 安装 software-properties-common

    apt-get install software-properties-common
    
  2. 添加社区 GlusterFS PPA。

    add-apt-repository ppa:gluster/glusterfs-7
    
  3. 请确保使用的是最新安装包。

    apt-get update
    
  4. 安装 GlusterFS 服务器。

    apt-get install glusterfs-server -y
    
  5. 验证 GlusterFS 版本。

    glusterfs -V
    

步骤 2:为 GlusterFS 创建配置文件

单独的配置文件包含 GlusterFS 存储的全部参数,KubeKey 在安装过程中会使用这些参数。

  1. 访问稍后想要在其上下载 KubeKey 的节点(任务机),运行以下命令创建配置文件。

    vi glusterfs-sc.yaml
    

    示例配置文件(包括 Heketi 密钥):

    apiVersion: v1
    kind: Secret
    metadata:
      name: heketi-secret
      namespace: kube-system
    type: kubernetes.io/glusterfs
    data:
      key: "MTIzNDU2"    #请替换为您自己的密钥。Base64 编码。
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      annotations:
        storageclass.beta.kubernetes.io/is-default-class: "true"
        storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce","ReadOnlyMany","ReadWriteMany"]'
      name: glusterfs
    parameters:
      clusterid: "21240a91145aee4d801661689383dcd1"    #请替换为您自己的 GlusterFS 集群 ID。
      gidMax: "50000"
      gidMin: "40000"
      restauthenabled: "true"
      resturl: "http://192.168.0.2:8080"    #Gluster REST 服务/Heketi 服务 URL 可按需供应 gluster 存储卷。请替换为您自己的 URL。
      restuser: admin
      secretName: heketi-secret
      secretNamespace: kube-system
      volumetype: "replicate:3"    #请替换为您自己的存储卷类型。
    provisioner: kubernetes.io/glusterfs
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    

    备注

    • 请使用字段 storageclass.beta.kubernetes.io/is-default-classglusterfs 设置为默认存储类型。如果选择 false,KubeKey 将会安装 OpenEBS 作为默认存储类型。
    • 有关存储类型清单中参数的更多信息,请参见 Kubernetes 文档
  2. 保存文件。

步骤 3:下载 KubeKey

根据以下步骤在任务机上下载 KubeKey

GitHub Release Page 下载 KubeKey 或者直接运行以下命令。

curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.0 sh -

首先运行以下命令,以确保您从正确的区域下载 KubeKey。

export KKZONE=cn

运行以下命令来下载 KubeKey:

curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.0 sh -

备注

下载 KubeKey 之后,如果您将其转移到访问 Googleapis 受限的新机器上,请务必再次运行 export KKZONE=cn,然后继续执行以下步骤。

备注

通过以上的命令,可以下载 KubeKey 的最新版本 (v1.1.0)。您可以更改命令中的版本号来下载特定的版本。

使 kk 可执行:

chmod +x kk

步骤 4:创建集群

  1. 指定想要安装的 Kubernetes 版本和 KubeSphere 版本,例如:

    ./kk create config --with-kubernetes v1.20.4 --with-kubesphere v3.1.0
    

    备注

    • 安装 KubeSphere v3.1.0 的建议 Kubernetes 版本:v1.17.9,v1.18.8,v1.19.8 以及 v1.20.4。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.19.8。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵

    • 如果您在此步骤的命令中不添加标志 --with-kubesphere,则不会部署 KubeSphere,只能使用配置文件中的 addons 字段安装,或者在您后续使用 ./kk create cluster 命令时再次添加这个标志。

    • 如果您添加标志 --with-kubesphere 时不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。

  2. 如果您不自定义名称,将创建默认文件 config-sample.yaml。编辑文件:

    vi config-sample.yaml
    
    ...
    metadata:
      name: sample
    spec:
      hosts:
      - {name: client1, address: 192.168.0.5, internalAddress: 192.168.0.5, user: ubuntu, password: Testing123}
      - {name: client2, address: 192.168.0.6, internalAddress: 192.168.0.6, user: ubuntu, password: Testing123}
      - {name: client3, address: 192.168.0.7, internalAddress: 192.168.0.7, user: ubuntu, password: Testing123}
      roleGroups:
        etcd:
        - client1
        master:
        - client1
        worker:
        - client2
        - client3
      controlPlaneEndpoint:
        domain: lb.kubesphere.local
        address: ""
        port: "6443"
      kubernetes:
        version: v1.17.9
        imageRepo: kubesphere
        clusterName: cluster.local
      network:
        plugin: calico
        kubePodsCIDR: 10.233.64.0/18
        kubeServiceCIDR: 10.233.0.0/18
      registry:
        registryMirrors: []
        insecureRegistries: []
      addons:
      - name: glusterfs
        namespace: kube-system
        sources:
          yaml:
            path:
            - /root/glusterfs-sc.yaml
    ...
    
  3. 请特别注意 addons 字段,您必须在该字段下提供要创建的存储类型以及 Heketi 密钥的信息。有关文件中每个参数的更多信息,请参见多节点安装

  4. 保存文件,执行以下命令安装 Kubernetes 和 KubeSphere:

    ./kk create cluster -f config-sample.yaml
    
  5. 安装完成后,可以运行以下命令检查安装日志:

    kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
    

    预期输出:

    #####################################################
    ###              Welcome to KubeSphere!           ###
    #####################################################
       
    Console: http://192.168.0.4:30880
    Account: admin
    Password: P@88w0rd
       
    NOTES:
      1. After you log into the console, please check the
         monitoring status of service components in
         "Cluster Management". If any service is not
         ready, please wait patiently until all components 
         are up and running.
      2. Please change the default password after login.
       
    #####################################################
    https://kubesphere.io             20xx-xx-xx xx:xx:xx
    #####################################################
    

步骤 5:验证安装

您可以使用命令行或者在 KubeSphere 的 Web 控制台验证 GlusterFS 是否成功安装。

命令行

运行以下命令行检查您的存储类型。

kubectl get sc

预期输出:

NAME                  PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
glusterfs (default)   kubernetes.io/glusterfs   Delete          Immediate           true                   104m

KubeSphere 控制台

  1. 使用默认帐户和密码 (admin/P@88w0rd) 通过 <NodeIP>:30880 登录 Web 控制台。点击左上角的平台管理,选择集群管理

  2. 访问存储管理下的存储卷,可以看到 PVC 正在使用。

    volumes-in-use

    备注

    有关如何在 KubeSphere 控制台上创建存储卷的更多信息,请参见存储卷
  3. 存储类型页面,可以看到集群中可用的存储类型。

    storage-class-available