Friday, March 27, 2020

Catatan Kasar Belajar Kubernetes

Berikut adalah catatan belajar kubernetes secara kasar. Saking kasarnya, saya catet bab ato  bagian yang esensi ketika deploy kubernetes di Server AWS.
panduan cepat bisa lihat disini https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#limitations



pastikan posisi swap off, dan tidak menyala ketika booting/restart dengan remark /etc/fstab
alasan bisa dilihat disini https://serverfault.com/questions/881517/why-disable-swap-on-kubernetes



tentukan ip address, di aws private IP bsa di associate,
jadi ketika di deploy bisa di akes via publik,
agar lebih mudah, masukkan ke /etc/hosts

172.31.53.121 kube-master
172.31.59.163 kube-node-2
172.31.62.61 kube-node-1



first thing to know, kubernetes adalah tool orchestration.
runtime bsa menggunakan beberapa opsi container, salah satunya docker,
jika menggunakan docker, maka perlu di optimasi
lihat https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker



untuk installasi kubernetes, yang digunakan adalah kubeadm. dan lakukan di semua node
baik itu node master maupun node worker, semua membutuhkan kubeadm.
tutorial nya bisa dilihat disini, OS yang digunakan debian buster.
works dengan mengikuti config yang ada disini https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu/



saat init cluster kubernetes, pastikan ip api advertise adalah ip milik node master
untuk IP pod network, di sesuaikan dengan plugin network yang digunakan. pada catatan ini menggunakan flannel
cek disini, untuk pod network cidr sesuaikan dengan docs https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=PRIVATE_IP --kubernetes-version "1.18.0"

bagi yang menggunakan floating IP (seperti Elastic IP AWS atau floating IP openstack) tambahkan floating IP ke dalam command ke command sehingga menjadi
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=PRIVATE_IP --kubernetes-version "1.18.0" --apiserver-cert-extra-sans=FLOATING_IP




kemudian lakukan config (jika cluster di reset, dan di init ulang, ulangi tahap ini lagi)
mkdir -vp $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config



setelah itu, inisialisasi network untuk pod. jika connection refuse, bisa ditunggu terlebih dahulu,
mungkin sekitar 10 setelah di init. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/concepts/cluster-administration/addons/



setelah cluster siap, cek cluster dengan beberapa command berikut:
kubectl get node
kubectl get pod (--all-namespaces)
kubectl get deployment (--all-namespaces)
kubectl get service (--all-namespaces)
kubectl get namespace
kubectl get secret
kubectl get serviceaccount

untuk menambah node, bisa menggunakan perintah dengan template berikut :
kubeadm join 172.31.53.121:6443 --token xdrh4p.owk9pi9x6r1l7aky \
    --discovery-token-ca-cert-hash sha256:600368886d02e164e41843a2e9d57f78cd96195cfc896e771a6a18d51b572f30
atau apabila catatan kita hilang, kita bisa meng-generate, lihat lengkapnya disini

Memasang Dashboard Kubernetes
Bisa dilihat selengkapnya disini

Menghapus Service
menghapus namespaces, artinya menghapus semua resource yang ada di dalam namespaces
lihat https://stackoverflow.com/a/52363990

issues :
- Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes") [fixed by run "export KUBECONFIG=/etc/kubernetes/kubelet.conf"]
- connection refuse, tunggu beberapa menit, ada kemungkinan kubernetes cluster belum ready



Referensi :
  • https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#limitations
  • http://kubernetes.io/docs/concepts/cluster-administration/addons/ 
  • https://kubernetes.io/docs/reference/access-authn-authz/rbac/ 
  • https://stackoverflow.com/a/46360852 
  • https://stackoverflow.com/questions/52449797/setting-up-clusters-and-work-nodes-how-do-i-set-kubeconfig-variable-in-windows 
  • https://github.com/kubernetes/kubernetes/issues/48378

No comments:

Post a Comment