Kubernetes Production Deployment

A- Building Kubernetes cluster

  • Install Kubeadm Cluster

  • Install Network DaemonSet

  • Install Dashboard

  • Install Rook.io ( ceph )Storage

Install Kubeadm Cluster

Install Master :

wget https://raw.githubusercontent.com/omarabdalhamid/Kubernetes-install/master/kmaster.sh && sh kmaster.sh

After installation finish Copy join Token

Install Nodes :

wget https://raw.githubusercontent.com/omarabdalhamid/Kubernetes-install/master/knode2.sh && sh knode2.sh 

Paste Cluster join Token that Copied from Master Installation

Install Network Daemon-Set

wget https://raw.githubusercontent.com/omarabdalhamid/Kubernetes-install/master/kube-network.yaml && kubectl apply -f kube-network.yaml 

Check Kubernetes Cluster [ CoreDNS / Network /Nodes ]

Check cluster-info

kubectl cluster-info 

Check Nodes Status

kubectl get node -o wide 

Check Cluster ( DNS / Network /Controller / Scheduler / Proxy / API-server / ETCD)

Running & Ready by Command

 kubectl get pods -n kube-system -o wide 

Install Rook.io ( Ceph ) Storage

Ceph Storage

Ceph is a highly scalable distributed storage solution for block storage, object storage, and shared file systems with years of production deployments.

Design

Rook enables Ceph storage systems to run on Kubernetes using Kubernetes primitives. The following image illustrates how Ceph Rook integrates with Kubernetes.

With Ceph running in the Kubernetes cluster, Kubernetes applications can mount block devices and filesystems managed by Rook, or can use the S3/Swift API for object storage. The Rook operator automates configuration of storage components and monitors the cluster to ensure the storage remains available and healthy.

The Rook operator is a simple container that has all that is needed to bootstrap and monitor the storage cluster. The operator will start and monitor Ceph monitor pods, the Ceph OSD daemons to provide RADOS storage, as well as start and manage other Ceph daemons. The operator manages CRDs for pools, object stores (S3/Swift), and file systems by initializing the pods and other artifacts necessary to run the services.

The operator will monitor the storage daemons to ensure the cluster is healthy. Ceph mons will be started or failed over when necessary, and other adjustments are made as the cluster grows or shrinks. The operator will also watch for desired state changes requested by the api service and apply the changes.

The Rook operator also initializes the agents that are needed for consuming the storage. Rook automatically configures the Ceph-CSI driver to mount the storage to your pods. Rook’s flex driver is still also configured automatically, though will soon be deprecated in favor of the CSI driver.

The rook/ceph image includes all necessary tools to manage the cluster – there are no changes to the data path. Rook does not attempt to maintain full fidelity with Ceph. Many of the Ceph concepts like placement groups and crush maps are hidden so you don’t have to worry about them. Instead Rook creates a much simplified UX for admins that is in terms of physical resources, pools, volumes, filesystems, and buckets. At the same time, advanced configuration can be applied when needed with the Ceph tools.

Rook is implemented in golang. Ceph is implemented in C++ where the data path is highly optimized. We believe this combination offers the best of both worlds.

Clone Rook Repository

git clone  https://github.com/rook/rook.git

cd rook/cluster/examples/kubernetes/ceph/ 
 
kubectl create -f operator.yaml 

kubectl create -f cluster.yaml 
 
kubectl -n rook-ceph-system get pod 

kubectl apply -f toolbox.yaml 

Check Rook-ceph Running and ready

Check Ceph HEATH

kubectl exec   -n rook-ceph rook-ceph-tools-856c5bc6b4-7bvf4 ceph status 

Install Dashboard

A Kubernetes dashboard is a web-based Kubernetes user interface which is used to deploy containerized applications to a Kubernetes cluster, troubleshoot the applications, and manage the cluster itself along with its attendant resources.

Uses of Kubernetes Dashboard

  • To get an overview of applications running on your cluster.

  • To create or modify the individual Kubernetes resources for example Deployments, Jobs, etc.

  • It provides the information on the state of Kubernetes resources in your cluster, and on any errors that may have occurred.

wget https://raw.githubusercontent.com/omarabdalhamid/Kubernetes-install/master/dashboard.yaml && kubectl apply -f dashboard.yaml 

Accessing Dashboard

https://matser-ip:31000

Get Access Token

kubectl describe secret admin-user -n kube-system 

Home Page You’ll see the home/welcome page in which you can view which system applications Running

Licenses : Zisoft Awareness Application Generate Licenses

Licenses Arguments : "client- Name , date, users, phishing_end_date, phishing_users"

wget https://raw.githubusercontent.com/omarabdalhamid/zisoft-scripts/master/zisoft-licenses-date.sh && sh zisoft-licenses-date.sh

Last updated