• Documentation
  • Blog

›Guides

Getting Started

  • Introduction
  • Networking Considerations
  • Multi-Tenancy Considerations

Guides

  • Web UI Installation
  • Bare Metal Installation
  • Docker Integration
  • Docker Plugin
  • Kubernetes Quick Start "Solo"
  • Kubernetes Integration
  • Kubernetes CSI
Edit

Quick Start NexentaEdge as a Kubernetes Solo cluster

Overview

NexentaEdge is fast, feature rich and easy to use File, Block and Object storage for your Cloud-Native Applications. It is designed to make it easy to integrate an enterprise class storage system with existing "shared-nothing" style storage, networking and compute services.

NexentaEdge deployed as Kubernetes PODs on physical or virtual hosts, pooling allocated storage capacity and presenting it for consumption by applications. NexentaEdge designed with High-Performance and Data Reduction in mind. It provides best in class throughput and latency characteristics while saving overall allocated space with built-in in-line global De-Duplication, Compression and off-line Erasure Encoding.

Once deployed, Kubernetes PV (Persistent Volume) storage can be claimed either via standard S3FS, iSCSI or NFS providers or via CSI (currently available only for Kubernetes >= 1.10). Additionally Cluster name spaces and tenants can be managed via YAML pre-installed CLI and GUI. This further orchestrates Kubernetes service creation.

NexentaEdge "Solo" is specially packaged installation method to quickly deploy on a single node setup. It can be used either as advanced access-point for Multi-Cloud inter segment name space distribution or as a local demo or development setup.

Requirements and Limitations

It is highly recommended that you run NexentaEdge Kubernetes PODs on a nodes with sufficient amount of memory and CPU cores as explained in table below:

RequirementNotes
Kubernetes1.9 or higher
CPU4 cores minimally recommended
Memory4GB Minimum + 2GB x # of HDDs or SSDs
Minimum individual Disk size1GB
Minimal number of disks per Data Container4
Max raw capacity per Data Containerup to 132TB

NexentaEdge DevOps limitations:

ResourceLimit
Max Total Logical Used Capacity (*)16TB

(*) Logical Used Capacity is what application logically allocates. Example would be: iSCSI LUN of 1TB would allocate 1TB of logical. The other example would be: while total raw capacity of 4 servers is 256TB it is still possible to install software with DevOps license initially and then later convert it to unlimited Enterprise (try and then buy model)

Installation

If you currently do not have Kubernetes installed please follow these instructions on getting it up and running:

https://kubernetes.io/docs/tasks/tools/install-minikube/

Once Kubernetes configured and operating properly, download YAML file and edit your site local parameters:

  • Prepare "state" local PV /mnt/nedge-target-state. It can be just empty directory available for kubelet to consume.
  • Prepare "data" local PV /mnt/nedge-target-data. Either keep it empty or mount pre-formatted drives to it.
  • Ensure that /usr/bin/kubectl command is available on the path. This will be used by management POD to start / stop / reconfigure storage services.

For Minikube recommended configurational tips:

  • If Minikube is executed with VM driver option (default), it would expose storage as mountpoint /mnt/sda1. Change nedge-target-data PV's path from /mnt/nedge-target-data to /mnt/sda1/nedge-target-data. Snippet example:
...
---
kind: PersistentVolume
apiVersion: v1
metadata:
  name: nedge-target-data
  labels:
    type: local
spec:
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  capacity:
    storage: 1000Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/nedge-target-data"   <= change this to "/mnt/sda1/nedge-target-data"
...
  • By default kubectl isn't available on the path inside the minikube when it is configured with VM driver option. NexentaEdge management POD needs it available. Download and expose kubectl binary to the minikube:
mkdir -p ~/.minikube/files/usr/bin
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.10.2/bin/linux/amd64/kubectl && chmod +x ./kubectl
cp kubectl ~/.minikube/files/usr/bin/
minikube stop
minikube start

When ready, simply execute the following command:

kubectl create -f nedge-cluster-lfs-solo.yaml

In a few minutes, try to connect to the GUI on port 31080, which would be exposed on all Kubernetes hosts.

In case of minikube find out the right IP address with minikube service list command.

Default login user: admin, password: nexenta.

Follow Wizard steps to finish installation and connect w/ us on Slack!

Troubleshooting tips

Kubernetes is an awesome and powerful orchestration framework. But when you just start using it, it can be difficult to digest such enormous set of material available online. In this section we collecting some useful diagnostics that can be run from the command line:

CommandNotes
minikube sshLogin inside minikube VM in case if it is running with VM driver option
ls ~/.minikube/filesDirectory location through which user can copy files from host to minikube VM
minikube service listMinikube command which lists IP:PORT pairs accessible from host
kubectl create -f file.yamlCreate all objects as defined in file.yaml
kubectl delete -f file.yamlDelete all objects as defined in file.yaml. It will preserve data in /mnt/...
kubectl get pods -n nedgeVerify that PODs in NexentaNedge namespace "nedge" are running
kubectl describe pods -n nedgeDescribe statuses of NexentaEdge PODs
← Docker PluginInstallation NexentaEdge DevOps Edition as a Kubernetes cluster →
NexentaEdge Product Page
Copyright © 2018 Nexenta Systems, Inc.