## Installation Methods
### Kubeadm
*Kubeadm* is a tool used to install a Kubernetes cluster, add/remove node to an existing cluster and update each part of its componants.
#### Prerequisites
1. 2 GiB RAM, 2 Core
2. Disable Swap
3. Enable IP bridge traffic
4. Install a [[CRI#CNI & CSI|container runtime]] (preferably `containerd`)
5. Install `kubectl`
6. Configure `cgroup-drivers`
### Kubespray
A production-ready automation for installing a Kubernetes cluster. *Kubespray* is a set of Ansible play-books to automate installation of Kubernetes cluster.
### kops
Another installation software for production cluster installation.
## Cordon/Drain
When updating a Node in Kubernetes, in highly-available apps we want to make sure that there is not downtimes.
By doing *cordon* on a Node, we stop the scheduler to work on the selected Node.
By doing *drain* we take down its Pods one by one.
## Add-ons
### Metrics Server
![[Pasted image 20250214060726.png]]
By adding a metrics server, you can also see `top pods` or `top nodes`.
### Ingress
![[Pasted image 20250214060843.png]]
### Cert-Manager
![[Pasted image 20250214060956.png]]
### Kube Prometheus Stack
![[Pasted image 20250214061022.png]]
Also can be used alongside with `kubernetes-mixin` for a set of Grafana dashboards and Prometheus alerts for Kubernetes.
### Trivy
![[Pasted image 20250214061723.png]]
### Kiosk
For permission manager on RBACs .
### Velero
Velero is used for backup automation. It can save the backup on object storages.
![[Pasted image 20250214061901.png]]
### ArgoCD
It enables GitOps for a Kubernetes cluster
### Rook
Storage orchestration for Kubernetes cluster.
> [!note]
> It is a good practice not to save the cluster data on itself!