Code for my post on Bare-Metal Kubernetes Setup, a setup of Bare Metal Kubernetes using Kubeadm and Metallb on Ubuntu 18.04 master and 3 Ubuntu 18.04 minions.
./setup-master.sh Network/Mask LB-Address-Range
This part does setup setup of:
- Initialize master.
- Setup pod network.
- Setup LoadBalancer.
- Setup LoadBalancer config.
Example
./setup-master.sh 192.168.122.0/24 192.168.122.150-192.168.122.250
Just join the nodes using the token generated in the previous master setup script.
./setup-dashboard.sh
This will setup the Kubernetes UI Dashboard and a service account k8s-admin
.
To start the dashboard in the master.
kubectl proxy --accept-hosts='^*$'
The dashboard is accessible on the Master IP
port 8001
. You can bind your local environment to the master via SSH.
ssh -fNTL localhost:8000:127.0.0.1:8001 user@master-ip-address
Now you can access the dashboard on: http://localhost:8000/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/overview?namespace=default
To setup Longhorn
./setup-longhorn.sh
Longhorn setups up with a LB type service for accessing the dashboard. You should see it using
╭─user@z-server-1 ~/k8s-setup ‹master*›
╰─➤ k get services -n longhorn-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
compatible-csi-attacher ClusterIP 10.96.66.245 <none> 12345/TCP 3d15h
csi-attacher ClusterIP 10.96.23.111 <none> 12345/TCP 3d15h
csi-provisioner ClusterIP 10.96.6.171 <none> 12345/TCP 3d15h
longhorn-backend ClusterIP 10.96.24.184 <none> 9500/TCP 3d15h
longhorn-frontend LoadBalancer 10.96.191.83 192.168.122.150 80:31082/TCP 3d15h
╭─user@z-server-1 ~/k8s-setup ‹master*›
╰─➤
To setup StorageOS.
Install StorageOS operator
./setup-storage-os.sh
To access the Storage OS dashboard:
kubectl --namespace storageos port-forward svc/storageos 5705
To access the dashboard, bind your local machine to the master ip port 5705
ssh -fNTL localhost:5700:127.0.0.1:5705 user@MASTER-IP-ADDRESS
The access http://localhost:5700/
To setup Nginx Ingress Controller.
./setup-nginx-ingress-ctl.sh
To setup cert manager.
./setup-cert-manager.sh
If you need cluster monitoring out of the box try Kube-Promatheus