2 minute read

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم


Lab ini kita akan ngoprek Kubernetes. Saya disini menggunakan public cloud Azure untuk membangun node yang saya butuhkan untuk ngoprek lab ini.

berikut list node yang saya gunakan :

pod-master

  • Interface: eth0
  • IP Address: 10.0.0.4/24
  • Gateway: 10.0.0.1
  • DNS Resolver: 10.0.0.1

pod-worker

  • Interface: eth0
  • IP Address: 10.0.0.5/24
  • Gateway: 10.0.0.1
  • DNS Resolver: 10.0.0.1

pod-storage

  • Interface: eth0
  • IP Address: 10.0.0.6/24
  • Gateway: 10.0.0.1
  • DNS Resolver: 10.0.0.1

Kubernetes Clustring Provisioning

Eksekusi di semua pod

Upgrade paket, instal docker dan k8s Versi (v1.15.4)

sudo apt update; sudo apt upgrade -y; sudo apt autoremove -y
sudo apt install -y docker.io; sudo docker version

Instal kubectl, kubelet & kubeadm

sudo apt install -y apt-transport-https; curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
nano kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main

Copy kubernetes.list ke repo list

sudo mv kubernetes.list /etc/apt/sources.list.d/kubernetes.list
sudo apt update; sudo apt install -y kubectl=1.15.4-00 kubelet=1.15.4-00 kubeadm=1.15.4-00
sudo apt-mark hold kubelet kubeadm kubectl

Cek versi

root@pod-master:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"15", GitVersion
:"v1.15.4", GitCommit:"67d2fcf276fcd9cf743ad4be9a9ef5828adc082f", GitTreeState:"clean", BuildDate:"2019-09-18T14:48:18Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

Eksekusi di pod master

Inisialisasi Master (verifikasi dan matikan swap lebih dulu)

swapon -s
sudo swapoff -a
sudo kubeadm init --pod-network-cidr=10.244.3.0/16
Membuat secret sebelum itu kita harus menyalakan docker swarm

Salin konfigurasi admin kubernetes

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Instal POD Network Flannel

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f kube-flannel.yml
kubectl get pods --all-namespaces --watch
root@pod-master :~# kubectl get pods --all-namespaces --watch
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-5c98db65d4-ncfbn             1/1     Running   0          5m45s
kube-system   coredns-5c98db65d4-xfzmg             1/1     Running   0          5m45s
kube-system   etcd-pod-master                      1/1     Running   0          4m47s
kube-system   kube-apiserver-pod-master            1/1     Running   0          4m58s
kube-system   kube-controller-manager-pod-master   1/1     Running   0          4m58s
kube-system   kube-flannel-ds-amd64-jdf4f          1/1     Running   0          3m55s
kube-system   kube-proxy-kjpwz                     1/1     Running   0          5m45s
kube-system   kube-scheduler-pod-master            1/1     Running   0          4m59s

Verifikasi config dan cluster

kubectl config view
kubectl cluster-info
root@pod-master :~# kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://10.0.0.4:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

root@pod-master :~# kubectl cluster-info
Kubernetes master is running at https://10.0.0.4:6443
KubeDNS is running at https://10.0.0.4:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Tampilkan Token dan token-ca-cert-hash

sudo kubeadm token list
sudo openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl  rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
root@pod-master :~# kubeadm token list

TOKEN                     TTL       EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS
ihk6ha.vlih4iuykm0y68i3   23h       2019-10-11T12:51:38Z   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

root@pod-master :~# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
de9c723b4b3d10e54cbb4cbc55d9abd007fa9edaf0076577827b5d33b59e79c4
  • token master ihk6ha.vlih4iuykm0y68i3
  • TOKEN-CA-CERT-HASH de9c723b4b3d10e54cbb4cbc55d9abd007fa9edaf0076577827b5d33b59e79c4

Ekseskusi di pod-worker

Join Node Worker ke Master (verifikasi dan matikan swap lebih dulu)

swapon -s
sudo swapoff -a
sudo kubeadm join --token [TOKEN] [NODE-MASTER]:6443 --discovery-token-ca-cert-hash sha256:[TOKEN-CA-CERT-HASH]
root@pod-worker:~# sudo kubeadm join --token ihk6ha.v
lih4iuykm0y68i3 pod-master:6443 --discovery-token-ca-cert-hash sha256:de9c723b4b3d10e54cbb4cbc55d9abd007fa9edaf0076577827b5d33b59e79c

Eksekusi di pod master

verifikasi nodes

kubectl get nodes
root@pod-master :~# kubectl get nodes 
NAME          STATUS   ROLES    AGE   VERSION
pod-master    Ready    master   31m   v1.15.4
pod-worker    Ready    <none>   15m   v1.15.4

Happy, Enjoy Ngoprek ~

Comments