GNU/Linux >> Belajar Linux >  >> Linux

Cara membuat StatefulSet di Kubernetes

StatefulSet berisi sekumpulan Pod dengan identitas unik dan persisten serta hostname yang stabil. Template pod digunakan dalam Statefulset, yang berisi spesifikasi untuk podnya, pod dibuat menggunakan spesifikasi ini. Kita dapat men-deploy aplikasi stateful dan aplikasi cluster menggunakan Statefulsets di Kubernetes. StatefulSet dapat diperbarui dengan membuat perubahan pada spesifikasi Pod-nya, yang mencakup gambar dan volume container-nya.

StatefulSets dapat digunakan saat aplikasi memerlukan salah satu properti berikut.

  • Pengidentifikasi jaringan unik yang stabil.
  • Penyimpanan yang stabil dan persisten.
  • Terurut, penerapan dan penskalaan yang anggun.
  • Pembaruan bergulir yang dipesan dan otomatis.

Untuk StatefulSet dengan N replika, saat Pod di-deploy, Pod akan dibuat secara berurutan, dari {0..N-1}. Saat Pod dihapus, Pod akan dihentikan dalam urutan terbalik, dari {N-1..0}.

Untuk mengetahui lebih lanjut tentang Statefulset, klik di sini.

Dalam artikel ini, kita akan membuat Statefulset dengan replika pod Nginx. Kami akan melakukan operasi pada Pod untuk melihat bagaimana Pod dihapus dan dibuat.

Prasyarat

  1. Cluster Kubernetes dengan setidaknya 1 node pekerja.
    Jika Anda ingin belajar membuat Cluster Kubernetes, klik di sini. Panduan ini akan membantu Anda membuat cluster Kubernetes dengan 1 Master dan 2 Node di Instans AWS Ubuntu 18l04 EC2.

Apa yang akan kita lakukan

  1. Buat Statefulset

Buat Statefulset

Buat file dan tambahkan definisi Statefulset berikut di dalamnya.

vim statefulset.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web

Dalam contoh ini, 

  • Layanan Tanpa Kepala, bernama nginx , digunakan untuk mengontrol jaringan.
  • StatefulSet, bernama web, memiliki 3 replika container nginx yang akan diluncurkan di Pod unik.
  • Gambar nginx dengan versi slim:0.8 digunakan untuk menerapkan Nginx.

Untuk membuat Statefulset, jalankan perintah berikut.

kubectl dapatkan statefulset

kubectl create -f statefulset.yml

Jalankan 2 perintah berikut untuk membuat daftar Statefulset dan Layanan yang dibuat pada langkah di atas.

kubectl dapatkan statefulset

kubectl dapatkan layanan

Dapatkan Pod menggunakan perintah berikut dan lihat Pod memiliki nomor sebagai Suffix dalam nama Pod.

kubectl dapatkan pod

Untuk mendapatkan detail lengkap dari Statefulset, jalankan perintah berikut.

kubectl dapatkan statefulset

kubectl mendeskripsikan web statefulset

Sekarang, mari kita hapus pod dan lihat bagaimana nama dipertahankan bahkan setelah pod baru dibuat.

Kami menghapus 2 pod untuk melihat nama apa yang akan diberikan ke pod baru setelah dibuat.

kubectl dapatkan pod

kubectl menghapus pod web-0 web-2

kubectl get pod

Pada tangkapan layar di atas Anda dapat melihat bahwa, bahkan setelah menghapus pod, pod yang baru dibuat akan mendapatkan nama yang sama.

Kesimpulan

Dalam artikel ini, kami membuat Statefulset dan melakukan operasi untuk memeriksa detailnya. Kami juga menghapus pod untuk melihat bagaimana nama pod dipertahankan dan hal yang sama diberikan ke pod yang baru dibuat setelah menghapusnya.


Linux
  1. Cara membuat Tag Git

  2. Cara membuat subdomain

  3. Cara Menghapus Layanan di Kubernetes

  1. Cara Membuat Subdomain

  2. Cara Menghapus Pod di Kubernetes [Tips Cepat K8s]

  3. Cara membuat tautan ke direktori

  1. Cara men-deploy pod pertama Anda di Cluster Kubernetes

  2. Cara Memulai Ulang Pod di Kubernetes [Kiat Cepat K8s]

  3. Bagaimana cara menjalankan riwayat Pod di Kubernetes Node?