Skip to content

Instantly share code, notes, and snippets.

@gai00
Created January 25, 2019 09:48
Show Gist options
  • Select an option

  • Save gai00/48bbfd53ed086dc768267b3a6d4fdf81 to your computer and use it in GitHub Desktop.

Select an option

Save gai00/48bbfd53ed086dc768267b3a6d4fdf81 to your computer and use it in GitHub Desktop.
k8s_practice
#!/bin/bash
# aws ubuntu 16.04/18.04 tested
# install
# Ref: https://kubernetes.io/docs/setup/independent/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl
sudo -s
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
# init (CNI: Net Weave)
sysctl net.bridge.bridge-nf-call-iptables=1
kubeadm init
exit
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo -s
export KUBECONFIG=/etc/kubernetes/admin.conf
# enable master to deploy
kubectl taint nodes --all node-role.kubernetes.io/master-
# CNI - Net Weave
# Ref: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network
# Ref: https://chrislovecnm.com/kubernetes/cni/choosing-a-cni-provider/
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
# Dashboard
# Ref: https://github.com/kubernetes/dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
# Dashboard user
# Ref: https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
echo -e "apiVersion: v1\r\nkind: ServiceAccount\r\nmetadata:\r\n name: admin-user\r\n namespace: kube-system" > admin-user.yaml
kubectl apply -f admin-user.yaml
echo -e "apiVersion: rbac.authorization.k8s.io/v1\r\nkind: ClusterRoleBinding\r\nmetadata:\r\n name: admin-user\r\nroleRef:\r\n apiGroup: rbac.authorization.k8s.io\r\n kind: ClusterRole\r\n name: cluster-admin\r\nsubjects:\r\n- kind: ServiceAccount\r\n name: admin-user\r\n namespace: kube-system\r\n" > role-binding.yaml
kubectl apply -f role-binding.yaml
# my IP
export IP=$(curl https://ipinfo.io/ip)
# get dashboard url & token
echo "https://${IP}:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/"
export TOKEN=$(kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') | grep token: | awk '{print $2}')
echo $TOKEN
# remember to access by Chrome Plugin: Modify Headers
# set header -> Authorization: Bearer $TOKEN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment