Tutorial
Step 1. Install CloudNatix
Welcome!
This tutorial walks through the installation and the features that CloudNatix provides. We use a kind local Kubernetes cluster.
- Please see the installation steps to install CloudNatix to EKS/AKS/GKE.
- Please see this page to understand the optimization technologies provided by CloudNatix in more details.
Step 1.1. Install CloudNatix CLI
The installation requires CloudNatix CLI called cnatix
. Please login CloudNatix from https://app.cloudnatix.com and click the "Install CLI" button on the side menu bar.
Then select version 21.2
and channel stable
to download and install the CLI.
Step 1.2. Install CloudNatix Cluster Controller on a Kind Cluster
First let's create a Kind cluster. If you haven't installed kind
, please follow the installation document.
kind create cluster --name my-cluster
Then we can install CloudNatix onto this Kind cluster by running the following commands.
cnatix login
cnatix clusters configure
cnatix clusters install --name my-cluster
cnatix login
will open a browser and show the login screen. Once you log into CloudNatix, the command saves credentials locally and finishes.
cnatix clusters configure
asks several questions on the installation configuration. You can just choose the default answers for all the questions.
$ cnatix clusters configure
Welcome! This command will guide you through configuring install parameters.
Initializing... done
? Use current context(kind-k8s-1.24) to install? Yes
? Choose CloudNatix distribution version: 21.2
? Choose CloudNatix channel: stable
? Enable CloudNatix components auto-upgrade? Yes
? Send Kubernetes container arguments and environment variables to global controller? Yes
cnatix clusters install
will install CloudNatix Cluster Controller to the Kind cluster. It internally uses Helm. If you don't have Helm, you can also directly apply the generated YAML file.
kubectl apply -f "${HOME}"/.cnatix/cluster-configs/my-cluster/ccoperator.yaml
The cnatix clusters install
command will create a ccoperator
deployment in the cloudnatix
namespace. Then the ccoperator
deployment creates additional deployments in the same namespace.
The installation completes once all pods start running in the cloudnatix
namespace. You can check the installation status with the following command:
watch -d "kubectl get pods -n cloudnatix"
Here is an example output after the completion of the installation:
$ kubectl get pods -n cloudnatix
NAME READY STATUS RESTARTS AGE
authtokenrefresher-5c9c57465c-hnpv7 1/1 Running 0 3m22s
ccoperator-5cf64675c7-lcl4m 1/1 Running 0 5m7s
cluster-watcher-75456897bd-cnm94 1/1 Running 0 112s
clusteragent-595f45f574-h8l2n 1/1 Running 0 2m
connect-agent-d58f54956-bfsnc 2/2 Running 0 3m23s
kube-prometheus-stack-kube-state-metrics-64f75d684f-qrh4f 1/1 Running 0 2m12s
kube-prometheus-stack-operator-6bdb6cd498-d6n4t 1/1 Running 0 2m12s
kube-prometheus-stack-prometheus-node-exporter-f4hj6 1/1 Running 0 2m12s
prometheus-kube-prometheus-stack-prometheus-0 2/2 Running 0 2m3s
vpa-admission-controller-5756dc7bb6-mqlcn 1/1 Running 0 114s
vpa-recommender-586db6f844-m9fxr 1/1 Running 0 114s
vpa-updater-76cf5c8758-hn2zj 1/1 Running 0 114s
Finally let's install metrics-server
as CloudNatix internally uses it to generate workload rightsizing recommendations.
kubectl apply \
-f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch deployment metrics-server \
-n kube-system \
--type=json \
-p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--kubelet-insecure-tls"}]'
The second command is needed to make metrics-server
work with Kind.
Step 1.3. Check the installation status from Global Controller
We can check if the installed pods successfully connect to CloudNatix Global Controller https://app.cloudnatix.com and data get populated.
If you visit the Cluster page, it should show the installed cluster.
If you visit the Workload page, it should show all workloads running in the cluster.