Traffine I/O

Bahasa Indonesia

2022-06-20

Replicas dalam Kubernetes

Apa itu Replicas dalam Kubernetes

Replicas dalam Kubernetes sebenarnya adalah salinan dari Pod. Dengan membuat beberapa salinan dari sebuah Pod, Kubernetes dapat memastikan bahwa jumlah yang ditentukan dari Pod yang identik selalu berjalan pada setiap saat. Hal ini tidak hanya meningkatkan ketersediaan aplikasi Anda, tetapi juga memfasilitasi pembagian beban dan redundansi.

Replikasi Pod

Dalam dunia Kubernetes, tindakan menduplikasi Pod umumnya disebut sebagai replikasi. Fungsi utama dari ReplicaSet adalah menjaga agar set pod replika tetap stabil dan berjalan pada setiap saat.

Kemampuan Pemulihan Otomatis

Salah satu fitur menakjubkan dari Kubernetes adalah mekanisme pemulihan otomatisnya. ReplicaSet memastikan bahwa Pod atau set Pod selalu aktif dan berjalan. Ketika sebuah Pod mati, ReplicaSet secara otomatis menciptakan Pod baru untuk menjaga jumlah replika yang diinginkan tetap konstan. Proses pemulihan otomatis ini meningkatkan kehandalan dan ketahanan aplikasi yang berjalan di Kubernetes.

Penempatan dan Pemeliharaan Otomatis Replicas

Kubernetes mengotomatiskan penempatan dan pemeliharaan replika melalui ReplicaSet, berdasarkan spesifikasi yang ditentukan dalam spesifikasi objek. Spesifikasi tersebut menentukan berapa banyak replika yang harus ada pada setiap saat. Ketika keadaan aktual tidak sesuai dengan keadaan yang diinginkan, Kubernetes bekerja untuk menyelesaikan perbedaannya.

Definisi Dinamis Jumlah Pod

Ekosistem Kubernetes dinamis dan tangguh. Ini memungkinkan Anda untuk menambah atau mengurangi jumlah Pod sesuai kebutuhan. Fitur ini dikenal sebagai Autoscaling Horizontal, dan memungkinkan sistem untuk menangani peningkatan atau penurunan beban dengan menyesuaikan jumlah Pod yang berjalan secara dinamis.

Definisi ReplicaSet dengan YAML

Kubernetes menggunakan YAML untuk definisi objeknya, termasuk ReplicaSets.

Konfigurasi YAML untuk ReplicaSet HelloWorld

Langkah pertama dalam membuat ReplicaSet di Kubernetes adalah mendefinisikan konfigurasi dalam file YAML. Dalam konfigurasi ini, kita menentukan metadata (seperti nama dan label), jumlah replika yang diinginkan, selector yang menentukan cara ReplicaSet mengidentifikasi anggotanya, dan template Pod yang mencakup detail tentang Pod.

Berikut ini contoh sederhana file YAML yang mendefinisikan ReplicaSet dengan nama helloworld:

replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: helloworld
  labels:
    app: helloworld
spec:
  replicas: 2
  selector:
    matchLabels:
      app: helloworld
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - name: helloworld
        image: gcr.io/google-samples/hello-app:1.0

File YAML ini mendefinisikan ReplicaSet dengan dua Pod, masing-masing menjalankan kontainer helloworld.

Memulai Minikube

Sebelum kita dapat mulai mendeploy ReplicaSets kita, kita perlu memastikan bahwa Minikube berjalan. Mulai Minikube menggunakan perintah berikut.

bash
$ minikube start

Meluncurkan Pod sebagai ReplicaSet

Setelah file YAML siap, kita dapat membuat ReplicaSet menggunakan perintah kubectl apply, yang menerapkan konfigurasi ke dalam cluster. Berikut adalah cara meluncurkan ReplicaSet helloworld:

bash
$ kubectl apply -f replicaset.yaml

Mari konfirmasi Pods.

bash
$ kubectl get pods

NAME               READY   STATUS    RESTARTS   AGE
helloworld-4bf2r   1/1     Running   0          42s
helloworld-ssttm   1/1     Running   0          42s

Dua Pods helloworld telah dibuat.

Mencantumkan ReplicaSets

Setelah meluncurkan ReplicaSet, kita dapat mengonfirmasi pembuatannya dengan mencantumkan semua ReplicaSet dalam namespace saat ini:

bash
$ kubectl get replicaset

NAME         DESIRED   CURRENT   READY   AGE
helloworld   2         2         2       3m12s

Perintah ini akan mengembalikan daftar semua ReplicaSet, termasuk ReplicaSet helloworld yang baru saja kita buat.

Menskalakan ReplicaSet

Kubernetes memungkinkan untuk dengan mudah melakukan skalabilitas aplikasi. Untuk meningkatkan jumlah replika dalam ReplicaSet helloworld kita, kita dapat menggunakan perintah kubectl scale:

bash
$ kubectl scale --replicas=5 replicaset/helloworld

replicaset.apps/helloworld scaled

Perintah ini memperbarui ReplicaSet helloworld menjadi memiliki lima replika. Kubernetes akan membuat Pod tambahan untuk mencocokkan keadaan yang diinginkan yang baru.

Menguji Mekanisme Pemulihan Otomatis

Kubernetes dibangun dengan mekanisme pemulihan diri yang tangguh yang merupakan bagian dari desainnya. Fitur penting dari ReplicaSets di Kubernetes adalah kemampuannya untuk memastikan bahwa jumlah tertentu replica Pod selalu berjalan pada setiap saat. Jika sebuah Pod dalam ReplicaSet mati atau dihapus, ReplicaSet akan secara otomatis menciptakan yang baru untuk menggantikannya.

Mengakhiri Sebuah Pod

Untuk menguji ini, mari kita akhiri salah satu Pod dari ReplicaSet helloworld kita dan perhatikan apa yang terjadi. Perintah kubectl delete pod dapat digunakan untuk menghapus Pod tertentu. Gantilah POD_ID dengan ID salah satu Pod dari ReplicaSet helloworld.

bash
$ kubectl delete pod POD_ID # Pada contoh saya, POD_ID adalah helloworld-4bf2r misalnya

pod "helloworld-4bf2r" deleted

Memverifikasi Pembuatan Otomatis Pod Baru

Sekarang, mari periksa keadaan Pods kita. Ketika Kubernetes menyadari bahwa satu Pod hilang dari ReplicaSet, seharusnya secara otomatis menciptakan yang baru untuk menjaga jumlah replika yang diinginkan.

bash
$ kubectl get pods

NAME               READY   STATUS    RESTARTS   AGE
helloworld-55kgl   1/1     Running   0          105s
helloworld-5kkdg   1/1     Running   0          105s
helloworld-drmmv   1/1     Running   0          9s
helloworld-n7sg9   1/1     Running   0          105s
helloworld-ssttm   1/1     Running   0          5m21s

Menjalankan perintah ini seharusnya menunjukkan bahwa Pod baru telah dibuat untuk menggantikan yang telah dihapus. Ini menunjukkan kemampuan pemulihan diri dari Kubernetes, memastikan bahwa layanan Anda tetap tersedia dan tahan terhadap kegagalan. Fitur ini sangat penting, terutama untuk lingkungan produksi di mana ketersediaan tinggi dan kehandalan sangat penting.

Pembersihan

Setelah selesai melakukan pengujian, disarankan untuk membersihkan lingkungan Anda untuk membebaskan resource dan menjaga ruang kerja yang rapi.

Untuk menghapus ReplicaSet helloworld yang telah kita buat sebelumnya, kita dapat menggunakan perintah kubectl delete bersama dengan flag -f diikuti oleh nama file konfigurasi. Ini akan menghapus ReplicaSet beserta semua Pods yang terkait dengannya.

bash
$ kubectl delete -f replicaset.yaml

Menjalankan perintah ini akan menghentikan dan menghapus semua Pods yang dikelola oleh ReplicaSet helloworld. Dengan melakukan pembersihan secara teratur, Anda dapat memastikan bahwa lingkungan Kubernetes Anda selalu siap untuk percobaan atau implementasi berikutnya.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!