Introduction:
This is the second blog in a series of blogs for setting up Microk8s. Link to part 1
MicroK8s simplifies the deployment of Kubernetes on Linux (Red Hat and Ubuntu). The blog explores how to install MicroK8s on Red Hat and Ubuntu.
Microk8s Linux Setup
Prerequisites:
Update the server with the latest updates and install Snap:
- Run all commands as root
- Clone or download files from GitHub link: https://github.com/arysdev/microk8s.git
Red Hat:
Disable SELinux
When running Microk8s on Red Hat Linux, SELinux can prevent the proper functioning of the Microk8s components by blocking network communications or preventing access to specific files or directories.
Run the below command to disable SELinux.
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0
Run the command below for Microk8s to use full memory resources.
swapoff -a
Firewall Setup for microk8s
Open the ports below if the firewall is running.
sudo firewall-cmd --add-port={16443/tcp,10250/tcp,10255/tcp,25000/tcp,12379/tcp,10257/tcp,10259/tcp,19001/tcp,4789/udp, 10248/tcp,10249/tcp,10251/tcp,10252/tcp,10256/tcp,10257/tcp,10259/tcp,2380/tcp,1338/tcp,80/ tcp,443/tcp,4443/tcp,6443/tcp,7946/tcp,7472/tcp} –permanent
sudo firewall-cmd --reload
sudo systemctl restart firewalld.service
Ubuntu:
You may need to configure your firewall to allow pod-to-pod and pod-to-internet communication:
sudo ufw allow in on cni0 && sudo ufw allow out on cni0 sudo ufw default allow routed
For Red Hat:
Snap installation:
The command below is for Red Hat Linux. This will install snapd in Red Hat Linux. Please refer to the documentation of your Linux flavor and the operating system.
sudo dnf install epel-release -y
sudo dnf update
Add a repo if you are using RHEL9 for Snapd installation.
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm sudo dnf upgrade sudo dnf -y install snapd
Once the package has finished installing, the systemd unit that manages the main snap communication socket needs to be enabled as follows:
sudo systemctl enable --now snapd.socket
Furthermore, to enable classic snap support, enter the following to create a symbolic link between /var/lib/snapd/snap and /snap, then add snap to the PATH variable.
sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/mysnap.sh
For Ubuntu:
Use the below command to update the Ubuntu server before installing microk8s. Once the system is back, install microk8s.
sudo apt update && sudo apt upgrade
sudo reboot
Installation Steps for Installing MicroK8s.
For Red Hat:
sudo snap install microk8s --classic --channel=1.27/stable sudo usermod -aG microk8s $USER sudo chown -f -R $USER ~/.kube
For Ubuntu:
Run the below command.
sudo usermod -aG microk8s $USER sudo chown -f -R $USER ~/.kube sudo snap install microk8s --classic --channel=1.27/stable
Log out and log in from the server.
Check the status by using the below command:
microk8s status
Check nodes by using the below command:
microk8s kubectl get nodes
Check pods by using the below command:
microk8s kubectl get pods -A
Check services by using the below command:
microk8s kubectl get svc -A
Check resource utilization for nodes or pods by using the below command:
microk8s kubectl top nodes -A
microk8s kubectl top pods -A
Kubernetes Dashboard
Enable Dashboard
microk8s enable dashboard
Change the type from ClusterIP to NodePort. Change the last line from type: ClusterIp to NodePort. Run the below in cmd.
microk8s kubectl -n kube-system edit service kubernetes-dashboard
Save and close.
You can get the nodeport from the below command it starts with a higher number port from 30000.
microk8s kubectl get svc -n kube-system
For RedHat
Allow firewall rule to access Microk8s Dashboard.
sudo firewall-cmd --add-port=NodePort/tcp –permanent
sudo firewall-cmd –reload
Check for the Port on which Dashboard is listening. Access it using https://<ipaddress>:<nodeport>.
For Token
microk8s kubectl -n kube-system describe secret $(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
Copy and paste the token into the browser to access the Kubernetes Dashboard.
Add a policy to the metric server. Run the below command.
microk8s kubectl patch deployment metrics-server -n kube-system --patch '{"spec":{"template":{"spec":{"hostNetwork": true}}}}'
Deploy the Nginx pod in microk8s and access it via ingress.
Create a deployment for the nginx webserver. Run the below command.
microk8s kubectl create deployment nginx --image=nginx
Expose service for nginx webserver as nodeport.
microk8s kubectl create service nodeport nginx --tcp=80:80
Go to your Web browser to access http://IPaddress:<nodeport>. You will see the nginx welcome page.
Great! You have successfully installed MicroK8s on your Linux system, deployed the nginx web server, and exposed it via ingress.
Conclusion:
MicroK8s provides a lightweight and simplified way to deploy Kubernetes clusters on Red Hat and Ubuntu distributions, with its ease of installation and convenient management of essential Kubernetes.