Update README.md

This commit is contained in:
jprdonnelly
2018-11-13 12:52:22 -05:00
committed by GitHub
parent f149c4fc78
commit a77eab3cbb

View File

@@ -1,23 +1,20 @@
# Kubernetes cluster # Kubernetes cluster
A vagrant script for setting up a Kubernetes cluster with a load-balancer and dynamic provisioner using Kubeadm A vagrant script for setting up a Kubernetes cluster with a load-balancer and dynamic provisioner using Kubeadm
## Pre-requisites ### Pre-requisites
* **[Vagrant 2.1.4+](https://www.vagrantup.com)** * **[Vagrant 2.1.4+](https://www.vagrantup.com)**
* **[Virtualbox 5.2.18+](https://www.virtualbox.org)** * **[Virtualbox 5.2.18+](https://www.virtualbox.org)**
## How to Run ### Start the Base Cluster
Execute the following vagrant command to start a new Kubernetes cluster, this will start one master and three nodes: Run the following command using CMD/Powershell in the dir where your [Vagrantfile](https://github.com/jprdonnelly/kubernetes-cluster/blob/master/Vagrantfile "Vagrantfile") lives.
``` ```
vagrant up vagrant up
``` ```
* *When this command finishes you will have (4) running VMs joined together as a K8s cluster.*
You can also start invidual machines by vagrant up k8s-head, vagrant up k8s-node-1 and vagrant up k8s-node-2 * If more than three nodes are required, you can edit the servers array in the Vagrantfile
If more than three nodes are required, you can edit the servers array in the Vagrantfile
``` ```
servers = [ servers = [
{ {
@@ -31,10 +28,66 @@ servers = [
} }
] ]
``` ```
* As you can see above, you can also configure a static IP address, memory and CPU in the servers array.
As you can see above, you can also configure IP address, memory and CPU in the servers array. ### Check Cluster Health and Update Admin Service Account
```
PS C:\users\djx\Documents\GitHub\kubernetes-cluster> vagrant ssh k8s-head
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-38-generic x86_64)
<snip output>
vagrant@k8s-head:~$ kubectl cluster-info
Kubernetes master is running at https://192.168.205.10:6443
KubeDNS is running at https://192.168.205.10:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
vagrant@k8s-head:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-head Ready master 14m v1.12.2
k8s-node-1 Ready <none> 10m v1.12.2
k8s-node-2 Ready <none> 5m v1.12.2
k8s-node-3 Ready <none> 34s v1.12.2
vagrant@k8s-head:~$ kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=default:default
clusterrolebinding.rbac.authorization.k8s.io/default-admin created
```
### Install MetalLB Load Balancer
You can also use the included YAML files to pull and deploy [MetalLB](https://metallb.universe.tf "MetalLB"), a load balancer that will distribute IPs in a given range. This has a lot more functionality than we are using, and you can see the other examples at the [project page](https://metallb.universe.tf).
## Clean-up ### Install NFS Provisioner
```
vagrant@k8s-head:~$ kubectl label nodes k8s-node-1 role=nfs
node/k8s-node-1 labeled
vagrant@k8s-head:~$ kubectl apply -f https://raw.githubusercontent.com/jprdonnelly/kubernetes-cluster/master/nfs-provisioner/nfs-deployment.yaml
service/nfs-provisioner created
deployment.apps/nfs-provisioner created
vagrant@k8s-head:~$ kubectl apply -f https://raw.githubusercontent.com/jprdonnelly/kubernetes-cluster/master/nfs-provisioner/nfs-class.yaml
storageclass.storage.k8s.io/nfs-dynamic created
vagrant@k8s-head:~$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18m
nfs-provisioner ClusterIP 10.109.234.184 <none> 2049/TCP,20048/TCP,111/TCP,111/UDP 11s
vagrant@k8s-head:~$ kubectl patch storageclass nfs-dynamic -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/nfs-dynamic patched
vagrant@k8s-head:~$ kubectl apply -f https://raw.githubusercontent.com/jprdonnelly/kubernetes-cluster/master/qsefe/nfs-vol-pvc.yaml
persistentvolumeclaim/qsefe-vol created
vagrant@k8s-head:~$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
qsefe-vol Bound pvc-60cd4de4-e372-11e8-84e2-02c44c503abe 5Gi RWX nfs-dynamic 38s
vagrant@k8s-head:~$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-60cd4de4-e372-11e8-84e2-02c44c503abe 5Gi RWX Delete Bound default/qsefe-vol nfs-dynamic
```
### Clean-up
Execute the following command to remove the virtual machines created for the Kubernetes cluster. Execute the following command to remove the virtual machines created for the Kubernetes cluster.
``` ```
@@ -43,6 +96,6 @@ vagrant destroy -f
You can destroy individual machines by vagrant destroy k8s-node-1 -f You can destroy individual machines by vagrant destroy k8s-node-1 -f
## Licensing ##### Licensing
[Apache License, Version 2.0](http://opensource.org/licenses/Apache-2.0). [Apache License, Version 2.0](http://opensource.org/licenses/Apache-2.0).