< img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=3131724&fmt=gif" />
Last updated:

    Install NFS Client

    This tutorial demonstrates how to set up a Kube AI Hub cluster and configure NFS storage.

    Note

    • Ubuntu 16.04 is used as an example in this tutorial.
    • NFS is incompatible with some applications, for example, Prometheus, which may result in pod creation failures. If you need to use NFS in the production environment, ensure that you have understood the risks. For more information, contact support@kubesphere.cloud.

    Prerequisites

    You must have an NFS server ready providing external storage services. Make sure you have created and exported a directory on the NFS server which your permitted client machines can access. For more information, see Set up an NFS Server.

    Step 1: Configure the Client Machine

    Install nfs-common on all of the clients. It provides necessary NFS functions while you do not need to install any server components.

    1. Execute the following command to make sure you are using the latest package.

      sudo apt-get update
      
    2. Install nfs-common on all the clients.

      sudo apt-get install nfs-common
      
    3. Go to one of the client machines (taskbox) where you want to download KubeKey later. Create a configuration file that contains all the necessary parameters of your NFS server which will be referenced by KubeKey during installation.

      vi nfs-client.yaml
      

      An example configuration file:

      nfs:
        server: "192.168.0.2"    # This is the server IP address. Replace it with your own.
        path: "/mnt/demo"    # Replace the exported directory with your own.
      storageClass:
        defaultClass: false
      

      Note

      • If you want to configure more values, see chart configurations for NFS-client.
      • The storageClass.defaultClass field controls whether you want to set the storage class of NFS-client Provisioner as the default one. If you enter false for it, KubeKey will install OpenEBS to provide local volumes, while they are not provisioned dynamically as you create workloads on your cluster. After you install Kube AI Hub, you can change the default storage class on the console directly.
    4. Save the file.

    Step 2: Download KubeKey

    Follow the steps below to download KubeKey on the taskbox.

    Download KubeKey from its GitHub Release Page or use the following command directly.

    curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
    

    Run the following command first to make sure you download KubeKey from the correct zone.

    export KKZONE=cn
    

    Run the following command to download KubeKey:

    curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
    

    Note

    After you download KubeKey, if you transfer it to a new machine also with poor network connections to Googleapis, you must run export KKZONE=cn again before you proceed with the steps below.

    Note

    The commands above download the latest release of KubeKey. You can change the version number in the command to download a specific version.

    Make kk executable:

    chmod +x kk
    

    Step 3: Create a Cluster

    1. Specify a Kubernetes version and a Kube AI Hub version that you want to install. For example:

      ./kk create config --with-kubernetes v1.22.12 --with-kubesphere v3.4.1
      

      Note

      • Recommended Kubernetes versions for Kube AI Hub 3.4: v1.20.x, v1.21.x, v1.22.x, v1.23.x, * v1.24.x, * v1.25.x, and * v1.26.x. For Kubernetes versions with an asterisk, some features of edge nodes may be unavailable due to incompatability. Therefore, if you want to use edge nodes, you are advised to install Kubernetes v1.23.x. If you do not specify a Kubernetes version, KubeKey will install Kubernetes v1.23.10 by default. For more information about supported Kubernetes versions, see Support Matrix.

      • If you do not add the flag --with-kubesphere in the command in this step, Kube AI Hub will not be deployed unless you install it using the addons field in the configuration file or add this flag again when you use ./kk create cluster later.

      • If you add the flag --with-kubesphere without specifying a Kube AI Hub version, the latest version of Kube AI Hub will be installed.

    2. A default file config-sample.yaml will be created if you do not customize the name. Edit the file.

      vi config-sample.yaml
      
      ...
      metadata:
        name: sample
      spec:
        hosts:
        - {name: client1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: ubuntu, password: Testing123}
        - {name: client2, address: 192.168.0.4, internalAddress: 192.168.0.4, user: ubuntu, password: Testing123}
        - {name: client3, address: 192.168.0.5, internalAddress: 192.168.0.5, user: ubuntu, password: Testing123}
        roleGroups:
          etcd:
          - client1
          control-plane:
          - client1
          worker:
          - client2
          - client3
        controlPlaneEndpoint:
          domain: lb.kubesphere.local
          address: ""
          port: 6443
        kubernetes:
          version: v1.22.12
          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: nfs-client
          namespace: kube-system
          sources:
            chart:
              name: nfs-client-provisioner
              repo: https://charts.kubesphere.io/main
              valuesFile: /home/ubuntu/nfs-client.yaml # Use the path of your own NFS-client configuration file.
      ...             
      
    3. Pay special attention to the field of addons, under which you must provide the information of NFS-client. For more information about each parameter in this file, see Multi-node Installation.

    4. Save the file and execute the following command to install Kubernetes and Kube AI Hub:

      ./kk create cluster -f config-sample.yaml
      
    5. When the installation finishes, you can inspect installation logs with the following command:

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

      Expected output:

      #####################################################
      ###              Welcome to Kube AI Hub!           ###
      #####################################################
      
      Console: http://192.168.0.3: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
      #####################################################
      

    Step 4: Verify Installation

    You can verify that NFS-client has been successfully installed either from the command line or from the Kube AI Hub web console.

    Command line

    1. Run the following command to check your storage class.

      kubectl get sc
      

      Expected output:

      NAME              PROVISIONER                                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
      local (default)   openebs.io/local                                  Delete          WaitForFirstConsumer   false                  16m
      nfs-client        cluster.local/nfs-client-nfs-client-provisioner   Delete          Immediate              true                   16m
      

      Note

      If you set nfs-client as the default storage class, OpenEBS will not be installed by KubeKey.
    2. Run the following command to check the statuses of Pods.

      kubectl get pod -n kube-system
      

      Note that nfs-client is installed in the namespace kube-system. Expected output (exclude irrelevant Pods):

      NAME                                                 READY   STATUS    RESTARTS   AGE
      nfs-client-nfs-client-provisioner-6fc95f4f79-92lsh   1/1     Running   0          16m
      

    Kube AI Hub console

    1. Log in to the web console as admin with the default account and password at <NodeIP>:30880. Click Platform in the upper-left corner and select Cluster Management.

    2. Go to Pods in Application Workloads and select kube-system from the project drop-down list. You can see that the Pod of nfs-client is up and running.

    3. Go to Storage Classes under Storage, and you can see available storage classes in your cluster.

      Note

      For more information about how to create volumes on the Kube AI Hub console, see Volumes.