We’ll go through how to install MicroK8s Kubernetes Cluster on Arch | Manjaro | Garuda Linux in today’s guide. Kubernetes is an open source container orchestration engine for automating containerized application deployment, scaling, and administration. The Cloud Native Computing Foundation hosts the open source project (CNCF). MicroK8s is a production-ready Kubernetes distribution that is powerful, lightweight, and dependable. It runs on Linux, Windows, and MacOS and is the smallest and quickest multi-node kubernetes. MicroK8s is ideal for offline prototyping, testing, and development.

Install MicroK8s Kubernetes Cluster on Arch | Manjaro | Garuda Linux
On Arch | Manjaro | Garuda Linux, we’ll utilize snap to install MicroK8s. However, we should keep in mind that snap is not installed by default in these systems. So, first and foremost, we’ll install Snap.
1: Installing Snap on Arch|Manjaro|Garuda
Before you use the Snap installation approach, make sure you have Snap installed:
sudo pacman -Syy
sudo pacman -S git gcc glibc base-devel --noconfirm
git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si
After installation, the systemd unit that manages the principal snap communication socket must be activated:
sudo systemctl enable --now snapd.socket
To enable traditional snap functionality, use the following command to create a symbolic link between /var/lib/snapd/snap
and /snap
:
sudo ln -s /var/lib/snapd/snap /snap
2: Installing MicroK8s on Arch | Manjaro | Garuda
To install MicroK8s, simply execute the following command:
sudo snap install microk8s --classic
3: Add User to microk8s Group
After microk8s has been successfully installed, add the local user to the microk8s group so that it may perform commands without the need for sudo.
sudo usermod --append --groups microk8s cloudspinx
4: Microk8s Management
The instructions below will teach you how to administer the Microk8s service.
Starting MicroK8s
We use the command below to start MicroK8s:
$ microk8s start
Started.
Check the status of MicroK8s
Execute the following command to check if microk8s is running:
$ microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
addons:
enabled:
ha-cluster # Configure high availability on the current node
disabled:
ambassador # Ambassador API Gateway and Ingress
cilium # SDN, fast with full network policy
dashboard # The Kubernetes dashboard
dns # CoreDNS
fluentd # Elasticsearch-Fluentd-Kibana logging and monitoring
gpu # Automatic enablement of Nvidia CUDA
helm # Helm 2 - the package manager for Kubernetes
helm3 # Helm 3 - Kubernetes package manager
host-access # Allow Pods connecting to Host services smoothly
ingress # Ingress controller for external access
istio # Core Istio service mesh services
jaeger # Kubernetes Jaeger operator with its simple config
keda # Kubernetes-based Event Driven Autoscaling
knative # The Knative framework on Kubernetes.
kubeflow # Kubeflow for easy ML deployments
linkerd # Linkerd is a service mesh for Kubernetes and other frameworks
metallb # Loadbalancer for your Kubernetes cluster
metrics-server # K8s Metrics Server for API access to service metrics
multus # Multus CNI enables attaching multiple network interfaces to pods
openebs # OpenEBS is the open-source storage solution for Kubernetes
openfaas # openfaas serverless framework
portainer # Portainer UI for your Kubernetes cluster
prometheus # Prometheus operator for monitoring and logging
rbac # Role-Based Access Control for authorisation
registry # Private image registry exposed on localhost:32000
storage # Storage class; allocates storage from host directory
traefik # traefik Ingress controller for external access
Enabling Microk8s
To enable microk8s, use the following command:
$ sudo snap enable microk8s
microk8s enabled
Disabling Microk8s
To disable microk8s, use the following command:
$ sudo snap disable microk8s
microk8s disabled
List Microk8s all Nodes
In MicroK8s, we use the following command to list nodes:
$ microk8s kubectl get nodes
NAME STATUS ROLES AGE VERSION
hero Ready <none> 22h v1.32.2-3+90fd5f3d2aea0a
Adding a Node to Microk8s cluster
Use the microk8s add-node command to establish a cluster out of two or more MicroK8s instances that are already executing. The master of the cluster will be the MicroK8s instance that runs this command, and it will host the Kubernetes data plane.
$ microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join <server-ip>:25000/bb51a4bc3b60cfeec337d17c7440dfd5/fb3b59600d93
If the node you are adding is not reachable through the default interface you can use one of the following:
microk8s join <server-ip>:25000/bb51a4bc3b60cfeec337d17c7440dfd5/fb3b59600d93
Execute the steps above on the node that will be added to the cluster. After then, check to see if the host has been added. The result below shows two nodes that were successfully added:
$ microk8s kubectl get no
NAME STATUS ROLES AGE VERSION
hero Ready <none> 23h v1.32.2-3+90fd5f3d2aea0a
php Ready <none> 1h v1.32.2-3+90fd5f3d2aea0a
Remove Node from Mikrok8s Cluster
To remove a node from the cluster, use the leave
command on the node you want to get rid of:
$ microk8s leave
Run the following command on the remaining nodes:
$ microk8s remove-node <node-ip/node.name>
Verify that it has been deleted. There is only one node in my output, as you can see:
$ microk8s kubectl get nodes
NAME STATUS ROLES AGE VERSION
hero Ready <none> 23h v1.32.2-3+90fd5f3d2aea0a
Deploy Pods in Mikrok8s Cluster
K8s’ fundamental building components are pods, which can hold one or more containers. As an example, we’ll use httpd for apache to deploy:
microk8s.kubectl run httpd --image httpd
Run the command below to see whether there are any existing pods in your MicroK8s environment:
$ microk8s kubectl get pods
NAME READY STATUS RESTARTS AGE
httpd 1/1 Running 0 5m4s
Delete Pods in Microk8s Cluster
Execute the following command to delete a pod in microk8s i.e httpd:
$ microk8s kubectl delete pod httpd
pod "httpd" deleted
we can confirm if it is deleted:
$ microk8s kubectl get pods
No resources found in default namespace.
Checking Services on Microk8s
To list MicroK8s services, use the instructions below:
$ microk8s kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 23h
$ microk8s kubectl get all
NAME READY STATUS RESTARTS AGE
pod/httpd 1/1 Running 0 3m53s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 23h
5: Enable MicroK8s Registry
To enable registry on microk8s, run the following command:
$ microk8s.enable registry
The registry will be created with the default size of 20Gi.
You can use the "size" argument while enabling the registry, eg microk8s.enable registry:size=30Gi
Enabling default storage class
[sudo] password for frankb:
deployment.apps/hostpath-provisioner created
storageclass.storage.k8s.io/microk8s-hostpath created
serviceaccount/microk8s-hostpath created
clusterrole.rbac.authorization.k8s.io/microk8s-hostpath created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-hostpath created
Storage will be available soon
Applying registry manifest
namespace/container-registry created
persistentvolumeclaim/registry-claim created
deployment.apps/registry created
service/registry created
configmap/local-registry-hosting configured
The registry is enabled
6: Checking MicroK8s Config
Run the following command to check microk8s configuration:
$ microk8s.config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUREekNDQWZlZ0F3SUJBZ0lVSmhYd1VRWittS3JPb2FiOU5WZkJMMHdnSXpRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0Z6RVZNQk1HQTFVRUF3d01NVEF1TVRVeUxqRTRNeTR4TUI0WERUSXhNRGd5TlRBNU1USXlNRm9YRFRNeApNRGd5TXpBNU1USXlNRm93RnpFVk1CTUdBMVVFQXd3TU1UQXVNVFV5TGpFNE15NHhNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2UGVQVkNyZ2hVWmx0QkR4QTE5RGRlbXJscStucHMwM0NPUjIKYlRxckkrSTdIeWtPZnFSUzVTclRlYW1rdk5qK1NEZ1RTSmF4cTRBNDFTVVVvY1RRaHdBcWw5YXUvREFFMEdWcQo1dmtlc1lhcW5Gek9FZWlRbW4wamx1VWhiOEV0VEFjMnNvT3NPMys1emtHZXdCZnBSd1IvbzJIc3lJeVREWmZuCmQ0eGNVNERlekdyWVBmc0p5TG90V1hJMUlyMmxaRTFjLzBCSW92c21aMWhKLzk4VFJ6UEhxc05rcHpHTm5xUDQKQ2JiM0Vhc244ZVUrb0pjVGJGUG5WSE9jVTFObERzV1MxU1NWWW42NlBhRnpVdUlNdXBjZWVBTnQwZEFhS2V3SQp3MUUrbTdrYVB6SGMyZHBEOFNzcStUMU0zUVUvcTRkWWFXQVBjYTVySy93OGVFaXJ3d0lEQVFBQm8xTXdVVEFkCkJnTlZIUTRFRmdRVW9GWmJmYSthUU4wWXlNVU5XUGNRM3FYLzA2OHdId1lEVlIwakJCZ3dGb0FVb0ZaYmZhK2EKUU4wWXlNVU5XUGNRM3FYLzA2OHdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQwpBUUVBTkNaSHJSSjFiK0NtTTg5NHpYb0JMOUFpV2xzWm9vUnJLdVZneGZuSk1hTVlqcXFCYWJ6S2NoSSszWUF3CkNwemRqMytJeEhVcGd6cXgwcXdrS3RqSWxsRzNvZjM1OXUzS1Fqai9YR3BQSldvUUhseUFTTXgzdHNPWXk3bGsKMlJkMXYxeWpjOU50NmpuM2QxVi90eFN0ZVdtQnFOZ3NHMXo3TkhtZkpLdHpLSG1qUTdQdEhJbU9tV0JySEUweQorNW92b0huQ3FteFNwOEp4R0RWNmQxbUV3UmR1a09HdVl2aXVaaDJVdTV6MHl2TEFMMW1uRVJjLzdtczZvbEkrCnY3cGcxNkdNWWM4YW55akd3Zll5VHJMMHdjRlczU2MxN1hpYnlJbm9YWlhla2NWT2g1QitTOGdxUmdWdzZleDYKSVdHU2ZBaXkybjNWRzZSd0pQek9UMEJ3Y3c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://<server-ip>:16443
name: microk8s-cluster
contexts:
- context:
cluster: microk8s-cluster
user: admin
name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
user:
token: dzlpSWF5QVFMekppSHFFVXYweEl4K1lkY0xwZzZ6R1R4V0pwczZjQ1NtMD0K
7: Enable MicroK8s Dashboard and DNS
On microk8s, use the commands below to deploy Dashboards and DNS:
$ microk8s.enable dashboard dns
Enabling Kubernetes Dashboard
Enabling Metrics-Server
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
Warning: apiregistration.k8s.io/v1beta1 APIService is deprecated in v1.19+, unavailable in v1.22+; use apiregistration.k8s.io/v1 APIService
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-admin created
[sudo] password for frankb:
Metrics-Server is enabled
Applying manifest
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
If RBAC is not enabled access the dashboard using the default token retrieved with:
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token
In an RBAC enabled setup (microk8s enable RBAC) you need to create a user with restricted
permissions as shown in:
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
Enabling DNS
Applying manifest
serviceaccount/coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
clusterrole.rbac.authorization.k8s.io/coredns created
clusterrolebinding.rbac.authorization.k8s.io/coredns created
Restarting kubelet
DNS is enabled
Using the ‘token =’ and microk8s lines, get the token that will be needed to access the dashboard. Make sure the token is included in the above output.
$ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token
Name: default-token-5dqmf
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: be5aa60d-44a5-4cf8-b5ff-e82cb8bfb2ff
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1123 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImVHakVvcm50NGZNekF1UVRkVy16Yk1BTE92MXdMYU5zanhiN2dNbWFkMVUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLTVkcW1mIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJiZTVhYTYwZC00NGE1LTRjZjgtYjVmZi1lODJjYjhiZmIyZmYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.HWWBqY0fBZ1gb7QLrD_pErPYcZWGn3or_m88Bws2yp19qU80ceWA_X74RNddKTIuSScn6ZBM3a0NRMfDx8tHM6Dv3o2Fo3USuV0SXvaVJLH4F1HVNZ9qUTwI1M_hNCEPygf97cN-d-bC0SvFBhdYS6HOOtrUrHU6btatsd395YChxePrOZe-Z482o1vWxNcXq-u6cx6NCG0Th5FXsQPi5MAxvCEadJEx0BTloJjDznDFJn1ScSP0zyWW6gZoQ9u_hcaSyNgWDJsQz45Al0bVjGcR-l_Fp7TRZMRtIMpXNPqV3sn8aSYtotPSj_GJWvsoeOWX9waLpJC-fhoXZH_UnQ
8: Enable MicroK8s storage
Run the following command to enable storage on microk8s:
$ microk8s.enable storage
serviceaccount/microk8s-hostpath created
clusterrole.rbac.authorization.k8s.io/microk8s-hostpath created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-hostpath created
Storage will be available soon
9: Enable Microk8s Logging and Monitoring
Here we are going to enable prometheus and Grafana operator for logging and monitoring:
$ microk8s.enable prometheus
[sudo] password for frankb:
Addon dns is already enabled.
Fetching kube-prometheus version v0.7.0.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 143 100 143 0 0 97 0 0:00:01 0:00:01 --:--:-- 97
100 287k 0 287k 0 0 70596 0 --:--:-- 0:00:04 --:--:-- 161k
service/prometheus-operator created
serviceaccount/prometheus-operator created
alertmanager.monitoring.coreos.com/main created
secret/alertmanager-main created
service/alertmanager-main created
serviceaccount/alertmanager-main created
servicemonitor.monitoring.coreos.com/alertmanager created
secret/grafana-datasources created
configmap/grafana-dashboard-apiserver created
configmap/grafana-dashboard-cluster-total created
configmap/grafana-dashboard-controller-manager created
configmap/grafana-dashboard-k8s-resources-cluster created
configmap/grafana-dashboard-k8s-resources-namespace created
configmap/grafana-dashboard-k8s-resources-node created
configmap/grafana-dashboard-k8s-resources-pod created
configmap/grafana-dashboard-k8s-resources-workload created
configmap/grafana-dashboard-k8s-resources-workloads-namespace created
configmap/grafana-dashboard-kubelet created
configmap/grafana-dashboard-namespace-by-pod created
configmap/grafana-dashboard-namespace-by-workload created
configmap/grafana-dashboard-node-cluster-rsrc-use created
configmap/grafana-dashboard-node-rsrc-use created
configmap/grafana-dashboard-nodes created
configmap/grafana-dashboard-persistentvolumesusage created
configmap/grafana-dashboard-pod-total created
configmap/grafana-dashboard-prometheus-remote-write created
configmap/grafana-dashboard-prometheus created
configmap/grafana-dashboard-proxy created
configmap/grafana-dashboard-scheduler created
configmap/grafana-dashboard-statefulset created
configmap/grafana-dashboard-workload-total created
configmap/grafana-dashboards created
deployment.apps/grafana created
service/grafana created
serviceaccount/grafana created
servicemonitor.monitoring.coreos.com/grafana created
clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created
deployment.apps/kube-state-metrics created
service/kube-state-metrics created
serviceaccount/kube-state-metrics created
servicemonitor.monitoring.coreos.com/kube-state-metrics created
clusterrole.rbac.authorization.k8s.io/node-exporter created
clusterrolebinding.rbac.authorization.k8s.io/node-exporter created
daemonset.apps/node-exporter created
service/node-exporter created
serviceaccount/node-exporter created
servicemonitor.monitoring.coreos.com/node-exporter created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io configured
clusterrole.rbac.authorization.k8s.io/prometheus-adapter created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader unchanged
clusterrolebinding.rbac.authorization.k8s.io/prometheus-adapter created
clusterrolebinding.rbac.authorization.k8s.io/resource-metrics:system:auth-delegator created
clusterrole.rbac.authorization.k8s.io/resource-metrics-server-resources created
configmap/adapter-config created
deployment.apps/prometheus-adapter created
rolebinding.rbac.authorization.k8s.io/resource-metrics-auth-reader created
service/prometheus-adapter created
serviceaccount/prometheus-adapter created
servicemonitor.monitoring.coreos.com/prometheus-adapter created
clusterrole.rbac.authorization.k8s.io/prometheus-k8s created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-k8s created
servicemonitor.monitoring.coreos.com/prometheus-operator created
prometheus.monitoring.coreos.com/k8s created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s-config created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
role.rbac.authorization.k8s.io/prometheus-k8s-config created
role.rbac.authorization.k8s.io/prometheus-k8s created
role.rbac.authorization.k8s.io/prometheus-k8s created
role.rbac.authorization.k8s.io/prometheus-k8s created
prometheusrule.monitoring.coreos.com/prometheus-k8s-rules created
service/prometheus-k8s created
serviceaccount/prometheus-k8s created
servicemonitor.monitoring.coreos.com/prometheus created
servicemonitor.monitoring.coreos.com/kube-apiserver created
servicemonitor.monitoring.coreos.com/coredns created
servicemonitor.monitoring.coreos.com/kube-controller-manager created
servicemonitor.monitoring.coreos.com/kube-scheduler created
servicemonitor.monitoring.coreos.com/kubelet created
The Prometheus operator is enabled (user/pass: admin/admin)
To enable external access, configure MicroK8s Prometheus and Grafana port forwarding.
microk8s kubectl port-forward -n monitoring service/prometheus-k8s --address 0.0.0.0 9090:9090
microk8s kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000
If you’re using a firewall, make sure the ports are allowed via it.
sudo firewall-cmd --zone=public --add-port 9090/tcp --permanent
sudo firewall-cmd --zone=public --add-port 3000/tcp --permanent
sudo firewall-cmd --reload
To access the prometheus dashboard, go to http://your-server-ip>:9090
in your browser. And for the Grafana it will be http://<your-server-ip>:3000
.
10: MicroK8s Deployment
We use the command below to see everything that has been deployed in microk8s:
$ microk8s.kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
monitoring pod/node-exporter-pf6dt 2/2 Running 2 128m
kube-system pod/calico-node-l5xcx 1/1 Running 5 26h
kube-system pod/metrics-server-8bbfb4bdb-ptzfn 1/1 Running 2 168m
monitoring pod/grafana-6b8df57c5b-szc5s 1/1 Running 1 128m
monitoring pod/prometheus-operator-7649c7454f-qg4hk 2/2 Running 2 129m
kube-system pod/calico-kube-controllers-f7868dd95-4sk94 1/1 Running 5 26h
kube-system pod/dashboard-metrics-scraper-78d7698477-pg26w 1/1 Running 2 166m
monitoring pod/prometheus-k8s-0 2/2 Running 3 127m
monitoring pod/prometheus-adapter-69b8496df6-kwh8s 1/1 Running 1 128m
container-registry pod/registry-9b57d9df8-ntj4t 1/1 Running 2 173m
monitoring pod/kube-state-metrics-78dc55b74b-xk8tm 3/3 Running 3 128m
kube-system pod/kubernetes-dashboard-85fd7f45cb-s29dp 1/1 Running 5 166m
kube-system pod/coredns-7f9c69c78c-vfcqf 1/1 Running 2 166m
monitoring pod/alertmanager-main-0 2/2 Running 2 127m
kube-system pod/hostpath-provisioner-5c65fbdb4f-p9lgs 1/1 Running 2 174m
default pod/httpd 1/1 Running 2 3h3m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 26h
container-registry service/registry NodePort 10.152.183.174 <none> 5000:32000/TCP 173m
kube-system service/metrics-server ClusterIP 10.152.183.71 <none> 443/TCP 168m
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.52 <none> 443/TCP 168m
kube-system service/dashboard-metrics-scraper ClusterIP 10.152.183.242 <none> 8000/TCP 168m
kube-system service/kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 168m
monitoring service/prometheus-operator ClusterIP None <none> 8443/TCP 129m
monitoring service/alertmanager-main ClusterIP 10.152.183.79 <none> 9093/TCP 129m
monitoring service/grafana ClusterIP 10.152.183.147 <none> 3000/TCP 129m
monitoring service/kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 128m
monitoring service/node-exporter ClusterIP None <none> 9100/TCP 128m
monitoring service/prometheus-adapter ClusterIP 10.152.183.211 <none> 443/TCP 128m
monitoring service/prometheus-k8s ClusterIP 10.152.183.23 <none> 9090/TCP 128m
kube-system service/kubelet ClusterIP None <none> 10250/TCP,10255/TCP,4194/TCP 127m
monitoring service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 127m
monitoring service/prometheus-operated ClusterIP None <none> 9090/TCP 127m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
monitoring daemonset.apps/node-exporter 1 1 1 1 1 kubernetes.io/os=linux 128m
kube-system daemonset.apps/calico-node 1 1 1 1 1 kubernetes.io/os=linux 26h
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/metrics-server 1/1 1 1 168m
monitoring deployment.apps/grafana 1/1 1 1 129m
monitoring deployment.apps/prometheus-operator 1/1 1 1 129m
kube-system deployment.apps/calico-kube-controllers 1/1 1 1 26h
kube-system deployment.apps/dashboard-metrics-scraper 1/1 1 1 168m
monitoring deployment.apps/prometheus-adapter 1/1 1 1 128m
container-registry deployment.apps/registry 1/1 1 1 173m
monitoring deployment.apps/kube-state-metrics 1/1 1 1 128m
kube-system deployment.apps/kubernetes-dashboard 1/1 1 1 168m
kube-system deployment.apps/coredns 1/1 1 1 168m
kube-system deployment.apps/hostpath-provisioner 1/1 1 1 174m
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/metrics-server-8bbfb4bdb 1 1 1 168m
monitoring replicaset.apps/grafana-6b8df57c5b 1 1 1 129m
monitoring replicaset.apps/prometheus-operator-7649c7454f 1 1 1 129m
kube-system replicaset.apps/calico-kube-controllers-f7868dd95 1 1 1 26h
kube-system replicaset.apps/dashboard-metrics-scraper-78d7698477 1 1 1 166m
monitoring replicaset.apps/prometheus-adapter-69b8496df6 1 1 1 128m
container-registry replicaset.apps/registry-9b57d9df8 1 1 1 173m
monitoring replicaset.apps/kube-state-metrics-78dc55b74b 1 1 1 128m
kube-system replicaset.apps/kubernetes-dashboard-85fd7f45cb 1 1 1 166m
kube-system replicaset.apps/coredns-7f9c69c78c 1 1 1 166m
kube-system replicaset.apps/hostpath-provisioner-5c65fbdb4f 1 1 1 174m
NAMESPACE NAME READY AGE
monitoring statefulset.apps/prometheus-k8s 1/1 127m
monitoring statefulset.apps/alertmanager-main 1/1 127m
Conclusion
Finally, you’ve installed and configured MicroK8s Kubernetes Cluster on Arch | Manjaro | Garuda Linux. We hope you liked reading this post.
Other Guides: