KubeSphere offers a user-friendly web-based UI for managing your Kubernetes cluster, and even offers CI/CD tools like Jenkins and provides automated building of container images from source code.
If you’re looking for a Kubernetes platform that is tailored for hybrid multicloud, KubeSphere might be just the tool you need.
KubeSphere can help with full-stack, automated IT operations and even streamline your DevOps workflows with a developer-friendly web UI. KubeSphere offers a plug-and-play platform and allows seamless integration of third-party applications.
Most importantly, KubeSphere offers a user-friendly web-based UI for managing your Kubernetes cluster, and even offers CI/CD tools like Jenkins and provides automated building of container images from source code.
KubeSphere is powerful but not exactly easy to deploy. Let me see if I can help you out with that process.
What You’ll Need
I’m going to demonstrate with Ubuntu Server 22.04. You’ll need three instances, one for the master and two for nodes. You’ll also need a user (on each machine) with sudo privileges.
That’s it. Let’s get to work…
Configure Your Servers
With your three servers up and running, there are some configuration steps you need to take on each. The first is to set the hostnames. We’ll call them:
kubesphere1
kubesphere2
kubesphere3
For the purpose of this article, the IP addresses associated with each will be:
kubesphere1 – 192.168.1.40
kubesphere2 – 192.168.1.41
kubesphere3 – 192.168.1.41
Make sure to change the IP address to meet your needs.
Log into your first server and set the hostname with:
sudo hostnamectl set-hostname kubesphere1
Log into the next server and set the hostname with:
sudo hostnamectl set-hostname kubesphere2
Finally, log into the third server and set the hostname with:
sudo hostnamectl set-hostname kubesphere3
Next, we need to configure the hosts file. On all three machines, open the file for editing with the command:
sudo nano /etc/hosts
At the bottom of those files, paste the following (adjusting for your IP address scheme):
192.168.1.40 kubesphere1
192.168.1.41 kubesphere2
192.168.1.42 kubesphere3
Save and close the file.
Now, we need to create a new user on each machine. We’ll call that user ubuntu. Remember, this has to be done on all three machines. The command for this is:
sudo useradd -m -s /bin/bash ubuntu
Next, create a password for the user with:
sudo passwd ubuntu
Make sure to give the user a strong/unique password.
We now have to allow the new user (on all three machines) to execute sudo commands without a password. To do that, issue the following command on each server:
cat <<EOF | sudo tee /etc/sudoers.d/ubuntu
Defaults:ubuntu !fqdn
Defaults:ubuntu !requiretty
ubuntu ALL=(ALL) NOPASSWD: ALL
EOF
SSH Key Authentication
We’ll now set up SSH authentication. On the master node (kubesphere1) change to the new ubuntu user with the command:
su - ubuntu
Create the new key with the command:
ssh-keygen -t ed25519
It’s important to make sure to not set a password for this key. So, when prompted for a password, just hit Enter on your keyboard.
Once the key is generated, you must copy it to all three servers with the commands:
ssh-copy-id ubuntu@kubesphere1
ssh-copy-id ubuntu@kubesphere2
ssh-copy-id ubuntu@kubesphere3
You will be prompted for the ubuntu user password each time.
Install the Necessary Dependencies
We now must install the necessary dependencies on all three servers. On all three servers, issue the command:
sudo apt install curl socat conntrack ebtables ipset -y
Download the KubeKey Binary
This is done only on the master server. Download the KubeKey binary file with the command:
curl-sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -
Give that file executable permission with:
chmod +x kk
Generate the Required Configuration
Next, we must generate a configuration file on the master server with the command:
./kk create config -f deployment-kubesphre.yml --with-kubernetes v1.24.2 --with-kubesphere v3.3.1
Once the configuration file is generated, open it for editing with the command:
nano deployment-kubesphre.yml
You must edit this file so that the hosts section looks like this:
hosts:
- {name: kubesphere1, address: 192.168.1.40, internalAddress: 192.168.1.40, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
- {name: kubesphere2, address: 192.168.1.41, internalAddress: 192.168.1.41, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}"
- {name: kubesphere3, address: 192.168.1.42, internalAddress: 192.168.1.42, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
roleGroups:
etcd:
- kubesphere1
control-plane:
- kubesphere1
worker:
- kubesphere2
- kubesphere3
Make sure to edit the IP addresses to conform to your scheme.
Save and close the file.
Deploy Everything
We now need to deploy both Kubernetes and KubeSphere, which is done with a single command:
/kk create cluster -f deployment-kubesphre.yml
This will take anywhere from 10-30 minutes to complete (depending on the speed of your network connection and servers). During the initial run, you’ll be prompted to OK the installation, so type yes and hit Enter on your keyboard.
At the end of this lengthy process, you’ll be presented with the address to access KubeSphere, along with the default admin credentials. You can then open a web browser to the indicated address and log in with the supplied credentials (Figure 1).
You’ll be prompted to immediately change the admin password. Once you do that, you’ll find yourself on the KubeSphere dashboard, where you can start working with your cluster (Figure 2).
Click Platform in the upper left corner and then click Cluster Management, to reveal the management dashboard (Figure 3).
Congratulations, you now have a very powerful Kubernetes management platform that can help you take control of your cluster and deployments.
Comments