Prerequisites for the Howso Platform installation examples.
To run the examples well requires a workstation with at least 32GB of RAM and 8 CPU cores. If you are low on resources, shut down any other applications you can, and try the single node k3d cluster.
These examples use local workstation installs to inform production Howso Platform installations. Production installations are expected to be amd64 on a supported Linux distribution. These local examples should work on Windows, Mac (x86 or arm64), or Linux (x86 or arm64) should work.
Note the air-gap examples use image archives that only contain amd64 images. Mac Silicon amd64 emulation (rosetta) will work enough that the environment will start, but it is not able to complete machine learning tasks.
Docker for Windows/Mac or equivilent. On mac increase the memory and cpu limits.
Install the following:-
- kubectl - Kubernetes command line tool, if not installed with container runtime
- k3d - k3s in docker
- helm - Kubernetes package manager
- kots plugin - kubectl kots CLI plugin for uploading images in air-gap bundles
- argocd cli - argocd CLI for argocd install examples
For Openshift examples, you'll need to install the following:-
- OpenShift Local (CodeReady Containers) - OpenShift local development environment
Access to the Helm registry for the Howso Platform requires a Howso Platform license. Log in with your email, registered with the customer portal, and your license ID as the credential.
You can find your license ID in two ways: either from the address bar on the downloads page or within your license file, where it's listed under the license_id:
field.
The charts are stored in an OCI (Open Container Initiative) type registry, and you'll log in using the email registered with the customer portal and your license ID. Use the following command to log in, replacing your_email@example.com
with your registered email and your_license_id
with your actual license ID:
helm registry login registry.how.so --username your_email@example.com --password your_license_id
Note. Only licenses for the Howso Platform Kots application (howso-platform vs legacy diveplane-platform licenses) will work with the Howso Platform Helm charts. If you have a legacy license, contact your Howso representative to get a new one.
k3d cluster create --config prereqs/k3d-single-node.yaml
Confirm kubectl access, and check the cluster is running.
This command waits for the metrics server to be ready - a good indicator the cluster is fully up.
kubectl -n kube-system wait --for=condition=ready --timeout=180s pod -l k8s-app=metrics-server
The Howso Platform is a resource-intensive machine learning platform. It dynamically creates new kubernetes workloads through an operator; these can require considerable CPU and memory resources.
For optimal performance installations should:-
- Allow for a substantial number of available nodes, ideally within an autoscaling infrastructure.
- Dedicate nodes to either the core services or the dynamic worker pods.
Such setups ensure that the platform can scale resources efficiently as workloads increase.
Note - the typical autoscaling pattern is:- to use taints/tolerations to control the scheduling of worker pods onto specific node groups; allow the worker node group to autoscale. When the Howso Platform operator creates new workloads it will schedule them onto the worker node group and the kubernetes autoscaler will add new nodes to accomodate.
Though these examples are for local installations - mimicking a larger cluster demonstrate's how labels and taints can be used to control scheduling of pods across multiple nodes.
k3d cluster create --config prereqs/k3d-multi-node.yaml
Check/wait for the cluster to be ready.
kubectl -n kube-system wait --for=condition=ready --timeout=180s pod -l k8s-app=metrics-server
Label the server node - to keep worker pods off it
kubectl label nodes k3d-platformk8s-server-0 howso.com/allowWorkers=False --overwrite
For each agent node, apply a taint so only worker pods are scheduled.
kubectl taint nodes k3d-platformk8s-agent-{0,1,2} howso.com/nodetype=worker:NoSchedule --overwrite
kubectl create namespace howso
The Howso Platform uses a number of subdomains under a parent domain. For a local set-up, you can use the following entries in your hosts file.
127.0.0.1 local.howso.com
127.0.0.1 pypi.local.howso.com
127.0.0.1 api.local.howso.com
127.0.0.1 www.local.howso.com
127.0.0.1 management.local.howso.com
127.0.0.1 registry-localhost # For air-gap install example
127.0.0.1 argocd.local.howso.com # For Argo CD install example
k3d cluster delete platformk8s