Layar Installation Guide (CentOS 7, Helm Chart)
A walk-through of all steps needed to go from a basic CentOS 7 install to a running Layar system.
In this guide we will go from a basic CentOS 7 install to a fully functioning Layar system. This guide is intended as an example installation only and makes configuration decisions that may not be best suited for your environment. The following commands should be run as root.
Hardware Requirements
RAM: 128GB
CPU: 16+ cores
GPU: 2x NVIDIA V100 32GB generation or later or 4x V100 16GB
Disk: 500GB SSD
Prerequisites
The system must have an external DNS entry (not relying on /etc/hosts
) with the corresponding IP assigned to the host.
Internet access from the installation system is a requirement.
Installation
Commands should be run as root or prefixed with sudo
Ensure you have docker 20.10 installed
docker version
both Client and Server output should show version 20.10. If not please follow the instructions for installing docker on CentOS here before proceeding.
Increase operating system vm.max_map_count
echo "vm.max_map_count=262144" > /etc/sysctl.d/99-vyasa.conf
sysctl -p /etc/sysctl.d/99-vyasa.conf
Install kernel development packages
yum -y install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
Install and enable the EPEL repository
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum-config-manager --enable epel
Install CUDA 11
yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
yum clean expire-cache
yum -y install nvidia-driver-latest-dkms
yum -y install cuda-runtime-11-4
Install NVIDIA Docker toolkit
yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl --now enable docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
yum clean expire-cache
yum install -y nvidia-docker2
Set docker default runtime
Edit the file /etc/docker/daemon.json
and replace its contents with:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
Restart docker
systemctl restart docker
Edit /etc/yum.repos.d/kubernetes.repo
and add:
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Install Kubernetes
yum install -y kubeadm-1.20.11-0.x86_64 kubelet-1.20.11-0.x86_64 kubectl-1.20.11-0.x86_64
/usr/bin/kubeadm init --kubernetes-version=1.20.11 --token-ttl 0 --pod-network-cidr=10.17.0.0/16 -v 5
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
Install NGINX Ingress controller
kubectl apply -f https://vyasa-static-assets.s3.amazonaws.com/layar/nginx-ingress.yaml
Install Calico CNI
kubectl create -f https://vyasa-static-assets.s3.amazonaws.com/layar/tigera-operator.yaml
kubectl create -f https://vyasa-static-assets.s3.amazonaws.com/layar/custom-resources.yaml
Let head node run pods
/usr/bin/kubectl taint nodes --all node-role.kubernetes.io/master:NoSchedule-
Install local volume provisioner
/usr/bin/kubectl apply -f https://vyasa-static-assets.s3.amazonaws.com/layar/local-storage-provisioner.yml
Set default storage class
kubectl patch storageclass 'local-path' -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Install Helm
wget -P /usr/local/bin/ https://vyasa-static-assets.s3.amazonaws.com/layar/helm
chmod +x /usr/local/bin/helm
Add the Layar helm repository
helm repo add vyasa https://helm.vyasa.com/charts/ --username vyasahelm --password "sail#away()"
helm repo update
Install Layar
Note: Replace MY_URL
with the IP address or DNS name of the system.
helm install layar vyasa/layar --set APPURL=MY_URL