Apa itu Kubernetes dan tutorial Kubernetes

Kubernetes adalah platform orkestrasi kontainer sumber terbuka yang dirancang untuk mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi yang dikemas dalam kontainer. Kubernetes dapat digunakan bersama dengan Docker atau runtime kontainer lainnya untuk mengelola aplikasi dalam lingkungan yang terdistribusi dan terukur. Dalam artikel ini, kita akan membahas secara rinci tentang Kubernetes dan bagaimana cara menggunakannya melalui tutorial langkah-demi-langkah.

Apa itu Kubernetes?

Kubernetes, juga dikenal sebagai K8s, adalah sistem sumber terbuka yang dikembangkan oleh Google untuk mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi kontainer. Kubernetes memungkinkan Anda untuk mengelola aplikasi yang terdiri dari beberapa kontainer dan menjalankannya pada kluster mesin fisik atau virtual.

Beberapa fitur utama Kubernetes meliputi:

  • Penyebaran Aplikasi: Kubernetes memungkinkan penyebaran aplikasi kontainer yang mudah dan cepat menggunakan konsep seperti pod, replika, dan layanan.
  • Penskalaan: Kubernetes mendukung penskalaan horizontal dan vertikal aplikasi kontainer untuk menyesuaikan dengan beban kerja yang berubah-ubah.
  • Manajemen Sumber Daya: Kubernetes menyediakan mekanisme untuk mengalokasikan dan mengelola sumber daya seperti CPU, memori, dan penyimpanan untuk aplikasi kontainer.
  • Ketersediaan Tinggi: Kubernetes memastikan ketersediaan dan ketahanan aplikasi kontainer dengan mendeteksi kegagalan dan menggantikan kontainer yang rusak.
  • Layanan dan Jaringan: Kubernetes menyediakan abstraksi jaringan tingkat tinggi untuk menghubungkan aplikasi kontainer, seperti layanan dan ingress.

Kubernetes Tutorial

Dalam tutorial ini, kita akan membahas langkah-demi-langkah cara menggunakan Kubernetes untuk mengelola aplikasi kontainer. Tutorial ini mencakup:

  1. Persiapan
  2. Instalasi Kubernetes
  3. Menggunakan kubectl
  4. Mengelola Pod
  5. Mengelola Layanan
  6. Penskalaan Aplikasi
  7. Menggunakan Label dan Anotasi
  8. Penyebaran
  9. Mengelola Ketersediaan Tinggi
  10. Menggunakan Jaringan

 

  1. Persiapan

Sebelum kita mulai, pastikan Anda memiliki akses ke kluster Kubernetes yang sudah diatur, atau ikuti panduan resmi Kubernetes untuk mengatur kluster sendiri: https://kubernetes.io/docs/setup/

  1. Instalasi Kubernetes

Untuk menginstal Kubernetes pada sistem Anda, ikuti petunjuk resmi Kubernetes untuk menginstal kubectl, CLI Kubernetes, pada sistem operasi Anda: https://kubernetes.io/docs/tasks/tools/install-kubectl/

  1. Menggunakan kubectl

Setelah menginstal kubectl, Anda dapat mulai menggunakannya untuk mengelola kluster Kubernetes Anda. Untuk memulai, coba jalankan perintah berikut untuk memeriksa versi kubectl dan kluster Anda:

kubectl version

Jika Anda melihat versi klien dan server yang dicetak, artinya kubectl telah berhasil diinstal dan dikonfigurasi.

  1. Mengelola Pod

Pod adalah unit dasar dalam Kubernetes yang mengelompokkan satu atau lebih kontainer bersama. Untuk membuat pod baru, Anda dapat menggunakan file konfigurasi YAML yang mendefinisikan pod dan kontainer di dalamnya. Berikut adalah contoh file konfigurasi pod sederhana:

apiVersion: v1

kind: Pod

metadata:

   name: my-nginx-pod

   labels:

      app: nginx

spec:

   containers:

   - name: nginx

     image: nginx:latest

     ports:

     - containerPort: 80

Simpan file ini sebagai my-nginx-pod.yaml dan jalankan perintah berikut untuk membuat pod baru:

kubectl apply -f my-nginx-pod.yaml

Anda dapat melihat pod yang telah dibuat dengan perintah:

kubectl get pods
  1. Mengelola Layanan

Layanan adalah abstraksi tingkat tinggi yang digunakan untuk mengekspos aplikasi yang berjalan dalam pod ke jaringan eksternal atau internal. Untuk membuat layanan baru, Anda dapat menggunakan file konfigurasi YAML yang mendefinisikan layanan dan selektor yang digunakan untuk menargetkan pod. Berikut adalah contoh file konfigurasi layanan sederhana:

apiVersion: v1

kind: Service

metadata:

   name: my-nginx-service

spec:

   selector:

      app: nginx

   ports:

      - protocol: TCP

        port: 80

        targetPort: 80

   type: LoadBalancer

Simpan file ini sebagai my-nginx-service.yaml dan jalankan perintah berikut untuk membuat layanan baru:

kubectl apply -f my-nginx-service.yaml

Anda dapat melihat layanan yang telah dibuat dengan perintah:

kubectl get services
  1. Penskalaan Aplikasi

Kubernetes mendukung penskalaan horizontal aplikasi dengan menggunakan konsep replika. Untuk menskalakan aplikasi Anda, Anda dapat menggunakan file konfigurasi YAML yang mendefinisikan Deployment dengan jumlah replika yang diinginkan. Berikut adalah contoh file konfigurasi Deployment sederhana:

apiVersion: apps/v1

kind: Deployment

metadata:

   name: my-nginx-deployment

spec:

   replicas: 3

   selector:

      matchLabels:

         app: nginx

   template:

      metadata:

         labels:

            app: nginx

      spec:

         containers:

         - name: nginx

           image: nginx:latest

           ports:

           - containerPort: 80

Simpan file ini sebagai my-nginx-deployment.yaml dan jalankan perintah berikut untuk membuat Deployment baru:

kubectl apply -f my-nginx-deployment.yaml

Anda dapat melihat Deployment yang telah dibuat dengan perintah:

kubectl get deployments

Untuk mengubah jumlah replika, Anda dapat mengubah nilai replicas dalam file konfigurasi dan menjalankan kubectl apply lagi, atau Anda dapat menggunakan perintah berikut untuk mengubah jumlah replika secara langsung:

kubectl scale deployment my-nginx-deployment --replicas=5
  1. Menggunakan Label dan Anotasi

Label dan anotasi adalah cara untuk menambahkan metadata ke objek Kubernetes, seperti pod, layanan, dan Deployment. Label adalah pasangan kunci-nilai yang dapat digunakan untuk mengorganisir, mengelompokkan, dan memilih objek, sementara anotasi adalah pasangan kunci-nilai yang dapat digunakan untuk menyimpan informasi tambahan yang tidak digunakan secara langsung oleh Kubernetes.

BACA JUGA:  Penjelasan tentang HTTP, HTTPS, dan perbedaannya

Untuk menambahkan label atau anotasi ke objek, Anda dapat mengedit file konfigurasi YAML dan menambahkannya ke bagian metadata. Berikut adalah contoh bagaimana cara menambahkan label dan anotasi ke pod:

apiVersion: v1

kind: Pod

metadata:

   name: my-nginx-pod

   labels:

      app: nginx

      environment: production

   annotations:

      description: "A sample nginx pod"

spec:

   containers:

   - name: nginx

     image: nginx:latest

     ports:

     - containerPort: 80

Anda dapat menggunakan label untuk memilih objek dengan perintah kubectl, seperti berikut:

kubectl get pods -l app=nginx
  1. Penyebaran

Kubernetes mendukung penyebaran aplikasi dengan menggunakan konsep Deployment, yang memungkinkan Anda untuk mengelola versi aplikasi dan menggulirkan pembaruan tanpa downtime. Untuk menggulirkan pembaruan aplikasi, Anda dapat mengubah file konfigurasi Deployment dengan menggantikan versi kontainer yang digunakan, kemudian menjalankan perintah kubectl apply.

Selain itu, Anda dapat menggunakan perintah berikut untuk melihat riwayat penyebaran dan menggulung kembali ke versi sebelumnya jika diperlukan:

kubectl rollout history deployment my-nginx-deployment

kubectl rollout undo deployment my-nginx-deployment
  1. Mengelola Ketersediaan Tinggi

Kubernetes menyediakan mekanisme untuk memastikan ketersediaan tinggi aplikasi dengan mendeteksi kegagalan dan menggantikan kontainer yang rusak. Untuk mengelola ketersediaan tinggi, Anda dapat menggunakan konsep seperti liveness probe dan readiness probe yang memeriksa kesehatan aplikasi dan menggantikan kontainer yang rusak jika diperlukan.

Berikut adalah contoh cara menambahkan liveness probe ke pod:

apiVersion: v1

kind: Pod

metadata:

   name: my-nginx-pod

   labels:

     app: nginx

spec:

   containers:

   - name: nginx

     image: nginx:latest

     ports:

     - containerPort: 80

     livenessProbe:

       httpGet:

          path: /

          port: 80

       initialDelaySeconds: 5

       periodSeconds: 5
  1. Menggunakan Jaringan

Kubernetes menyediakan abstraksi jaringan tingkat tinggi untuk menghubungkan aplikasi kontainer, seperti layanan dan ingress. Layanan memungkinkan Anda untuk mengekspos aplikasi ke jaringan eksternal atau internal, sementara ingress menyediakan aturan untuk merutekan lalu lintas eksternal ke layanan dalam kluster.

BACA JUGA:  Penjalasan Terraform, fitur, dan contoh konfigurasinya

Berikut adalah contoh cara menambahkan ingress ke layanan:

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

   name: my-nginx-ingress

spec:

   rules:

   - host: my-nginx.example.com

     http:

       paths:

       - path: /

       pathType: Prefix

       backend:

          service:

          name: my-nginx-service

          port:

             number: 80

Simpan file ini sebagai my-nginx-ingress.yaml dan jalankan perintah berikut untuk membuat ingress baru:

kubectl apply -f my-nginx-ingress.yaml

Anda dapat melihat ingress yang telah dibuat dengan perintah:

kubectl get ingress

Dalam contoh ini, kita membuat sebuah Ingress untuk merutekan lalu lintas dari domain my-nginx.example.com ke layanan yang bernama my-nginx-service pada port 80. Ingress ini menggunakan aturan berbasis path dengan tipe Prefix yang berarti semua permintaan dengan path yang diawali dengan / akan diteruskan ke layanan yang ditentukan.

Dengan menggunakan ingress, Anda dapat mengontrol akses ke layanan dalam kluster Kubernetes Anda dan mengoptimalkan pengelolaan lalu lintas jaringan. Selain itu, Anda juga dapat mengintegrasikan fitur tambahan seperti SSL/TLS dan load balancing melalui konfigurasi Ingress yang lebih kompleks atau penggunaan kontroler Ingress pihak ketiga.

Kesimpulan

Dalam artikel ini, kita telah membahas secara rinci tentang Kubernetes dan cara menggunakannya melalui tutorial langkah-demi-langkah. Kubernetes adalah platform orkestrasi kontainer yang sangat kuat yang memungkinkan Anda untuk mengelola aplikasi dalam lingkungan yang terdistribusi dan terukur. Dengan memahami konsep dasar Kubernetes dan cara menggunakannya, Anda akan dapat mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi kontainer dengan mudah. Melalui penggunaan komponen seperti pod, layanan, Deployment, serta Label dan Anotasi, Anda dapat mengelola aplikasi dengan fleksibilitas dan kontrol yang lebih baik. Selain itu, fitur seperti penyebaran, ketersediaan tinggi, dan abstraksi jaringan membantu memastikan aplikasi Anda dapat beradaptasi dengan kebutuhan yang berubah-ubah dan selalu tersedia untuk pengguna.

BACA JUGA:  Apa Itu Jenkins dan Airflow, Apa Persamaan dan Perbedaannya

Tinggalkan komentar