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
:
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.
$ 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
:
$ kubectl apply -f replicaset.yaml
Mari konfirmasi Pods.
$ 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:
$ 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
:
$ 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
.
$ 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.
$ 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.
$ 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.