Install Kubernetes dan Minikube di Server Ubuntu 18.04

Sabtu, 19 Desember 2020

Install Kubernetes dan Minikube di Server Ubuntu 18.04. Oke saya sendiri baru belajar mengenai Kubernetes dan emang dari nol banget jadi artikel yang saya tulis disini saya jadikan sebagai catatan pribadi saya, dan mungkin ada beberapa step yang perlu dikoreksi karena semua yang saya tulis disini saya pelajari di internet.

Di tutorial ini saya melakukan instalasi Kubernetes di server Ubuntu 18.04. Disini saya juga menggunakan Minikube karena tool ini memungkinkan kita untuk mendeploy Kubernetes dengan single node saja. Namun perlu dicatat juga bahwa Minikube digunakan untuk mendeploy Kubernetes di lokal server, alias lebih cocok dipakai jika kalian baru belajar atau ingin mengenal Kubernetes.


Sebelum memulai instalasi Kubernetes, kalian harus menginstall Docker terlebih dahulu. Saya sudah pernah membahas bagaimana cara install docker di Ubuntu, jadi di tutorial ini saya tidak akan menjelaskan satu per satu command yang saya eksekusi untuk menginstall Docker.

Install Docker

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo usermod -aG docker $(whoami)

Install Kubectl

Yang kita butuhkan disini hanyalah kubectl karena nantinya manajemen Kubernetes akan dilakukan melalui kubectl dan minikube.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get install -y kubectl

Ya, disitu kalian mungkin bertanya kenapa kita menggunakan repository xenial? Perlu diketahui bahwa repository terbaru untuk apt di kubernetes adalah kubernetes-xenial, dan itu masih up-to-date sampai sekarang.

Install Minikube

Instalasi Minikube cukup mudah karena kita tinggal mengunduh binary dan pasang di sistem.

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

sudo mv minikube /usr/local/bin/

sudo chmod +x /usr/local/bin/minikube

Menjalankan Minikube

Selanjutnya kita akan membuat node baru. Dan seperti yang saya bilang di awal bahwa tutorial ini menggunakan single node saja maka disinilah minikube diperlukan. Kita buat node dengan nama master-node dengan driver docker.

minikube start -p master-node --driver=docker

Untuk melihat list node gunakan perintah

kubectl get nodes

Untuk melihat informasi detail node, gunakan command

kubectl describe node nama-node

Contoh:

Deploy Aplikasi

Sebuah Pod adalah unit dasar di Kubernetes, unit terkecil dan paling sederhana di dalam objek model Kubernetes yang dapat dibuat dan di deploy. Sebuah Pod merepresentasikan suatu proses yang berjalan di dalam klaster. Pods membungkus satu atau lebih container didalamnya. Nah, disini saya akan coba deploy service Nginx.

Kita akan membuat konfigurasi yaml dengan kebutuhan paling minimum. Buat file dengan nama nginx-simple.yaml, dan isinya sebagai berikut:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      name: nginx
  template:
    metadata:
      name: nginx
      labels:
        name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
Penjelasan nilai tiap barisnya bisa dicek di halaman ini:

Lalu jalankan perintah
kubectl apply -f nginx-simple.yaml
Oke, aplikasi Nginx kita disini sudah berjalan, namun belum terekspos jadi belum bisa diakses dari luar.

Mengekspos Service
Untuk mengekspos service keluar sendiri kita menggunakan Kubernetes Services, dan ada bermacam macam jenisnya. Namun untuk artikel pengenalan ini kita akan menggunakan Ingress untuk mengekspos service yang kita deploy.

Memasang Addons Ingress
Di Minikube kalian bisa mengaktifkan Ingress dengan perintah
minikube addons enable ingress
Selanjutnya cek dengan perintah kubectl apakah ingress sudah terpasang.
kubectl get pods -n kube-system | grep -i ingress

Jika semuanya sudah oke, kita lanjut ke expose service agar service bisa diakses dari luar cluster.

Pertama, kita buat konfigurasi file baru dengan nama nginx-service.yaml. Isinya:
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    name: nginx
  ports:
    - port: 80
      targetPort: 80
Oke jangan lupa apply dengan command
kubectl apply -f nginx-service.yaml
Selanjutnya buat file konfigurasi baru dengan nama nginx-ingress.yaml. Isinya:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  rules:

  - host: nginx.local
    http:
      paths:
      - backend:
          serviceName: nginx-service
          servicePort: 80
Apply dengan perintah:
kubectl apply -f nginx-ingress.yaml
Untuk memeriksa ingress nya jalankan perintah
kubectl get ingress

192.168.49.2
adalah ip node dari minikube. Tinggal tambahkan saja ip dan hostnya ke /etc/hosts.

Seharusnya sekarang kalian bisa mengakses service Nginx di domain nginx.local

Artikel Terkait Kubernetes