Summary
This setup is supposedly to install the kubernetes on ubuntu machine with version 16.04 (64bit). I did this in the cloud and have worked perfectly.
# whoami && pwd root /root # apt-get update # apt-get install -y apt-transport-https # curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - # echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
# apt-get update -y # apt install docker.io # apt-get install -y kubelet kubeadm kubernetes-cni
Check the swaps, if there any, swith them off
# /proc/swaps
Init kubernetes for the first time using kubeadm:
# kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<private IP>
*Note: Change <private IP> to <public IP>, if you run the kubernetes master on single node and wish to publicly open.
# cp /etc/kubernetes/admin.conf $HOME/ # export KUBECONFIG=$HOME/admin.conf # echo "export KUBECONFIG=$HOME/admin.conf" | tee -a ~/.bashrc
Check pods status, wait until all running
# kubectl get pods --all-namespaces
When their status are RUNNING, moving forward install the network/flannel. Please choose between these two below, I prefer to use the calico one (the second).
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml # or # kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
Continue to taint the nodes:
# kubectl taint nodes --all node-role.kubernetes.io/master-
Install kubernetes dashboard
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Create user dashboard
create-user.yml
apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system
create-role.yml
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system
# kubectl create -f create-user.yml # kubectl create -f create-role.yml
# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
How to set the kubernetes dashboard to publicly accessible with public IP
Read this : https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard—1.7.X-and-above