Kubernetes, an open-source container orchestration platform, has become the go-to solution for managing and scaling containerized applications. In this tutorial, we’ll walk you through the process of how to install Kubernetes on Arch Linux. By the end, you’ll have a fully-functioning Kubernetes cluster up and running on your Arch Linux system.
How to Install Kubernetes on Arch Linux
Prerequisites
Before we begin, ensure that you have the following:
- An Arch Linux system with root access
- A stable internet connection
- Familiarity with the terminal and basic Linux commands
Note: It’s essential to keep your Arch Linux system up-to-date. You can do this by running the following command:
sudo pacman -Syu
Install Docker on Arch Linux
Kubernetes requires a container runtime to run containers. In this tutorial, we’ll use Docker. To install Docker on Arch Linux, follow our guide on how to install Docker on Arch Linux.
Install Kubernetes on Arch Linux
To install Kubernetes on Arch Linux, we’ll use the official kubernetes
package from the Arch User Repository (AUR). First, install the AUR helper Yay. Then, run the following command to install the kubernetes
package:
yay -S kubernetes
Note: During the installation process, you might be prompted to import PGP keys. Make sure to accept and import them.
Configure Kubernetes on Arch Linux
After installing Kubernetes, we need to configure it. First, disable the swap on your system:
sudo swapoff -a
To make this change persistent across reboots, edit the /etc/fstab
file and comment out the swap entry:
sudo nano /etc/fstab
Next, enable the necessary kernel modules by appending the following lines to /etc/modules-load.d/kubernetes.conf
:
br_netfilter
overlay
Load the new kernel modules:
sudo modprobe overlay
sudo modprobe br_netfilter
Now, configure the kernel parameters by adding the following lines to /etc/sysctl.d/99-kubernetes-cri.conf
:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
Apply the new sysctl settings:
sudo sysctl --system
Initialize the Kubernetes Master Node
To initialize the Kubernetes master node, run the following command:
sudo kubeadm init
This command will generate a join token and print instructions for joining worker nodes to the cluster. Take note of the token and command, as you’ll need them later.
After the initialization process is complete, configure your user account to use the Kubernetes cluster by running the following commands:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Install a Pod Network on Arch Linux
Kubernetes uses a pod network to facilitate communication between nodes. In this tutorial, we’ll install the Calico pod network. To install Calico, run the following command:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Join Worker Nodes to the Cluster
To join worker nodes to the cluster, follow the instructions printed during the master node initialization. It should look similar to this:
kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Replace <control-plane-host>
, <control-plane-port>
, <token>
, and <hash>
with the appropriate values from the output of the kubeadm init
command.
Run the join command on each worker node to add them to the cluster. Once you have joined all the worker nodes, return to the master node and verify the status of the nodes by running the following command:
kubectl get nodes
You should see the status of all nodes in the cluster, including the master and worker nodes.
Deploying Applications on the Cluster
With your Kubernetes cluster up and running, you can now deploy applications using Kubernetes manifests. To deploy a sample application, create a file named nginx-deployment.yaml
with the following content:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Deploy the application by running the following command:
kubectl apply -f nginx-deployment.yaml
Check the status of the deployment:
kubectl get deployments
You should see the nginx-deployment
with two replicas running.
Conclusion
Congratulations! You have successfully installed Kubernetes on Arch Linux and deployed a sample application. Now that you have a working Kubernetes cluster, you can explore other aspects of Kubernetes, such as configuring persistent storage and using Helm to manage applications.
If you want to learn more about Arch Linux, check out our other guides: