GNU/Linux >> Belajar Linux >  >> Linux

Cara Membuat Dan Mengelola Pod Kubernetes Di Linux

Dalam tutorial ini, kita akan mempelajari cara membuat dan mengelola Pod Kubernetes. Pertama, kita akan mulai dengan apa itu Pod di Kubernetes dan bagaimana cara kerja Pod. Selanjutnya, kita akan melihat sekilas jenis-jenis Pod. Dan kemudian kita akan melihat cara membuat Pod baru dan cara melihat informasi Pod dari baris perintah. Terakhir, kita akan mempelajari cara menghapus Pod saat tidak diperlukan lagi.

Apa itu Pod di Kubernetes?

Di Kubernetes , Pod adalah unit komputasi terkecil yang dapat digunakan yang dapat Anda bangun dan kendalikan. Pod adalah kumpulan dari satu atau lebih container dengan penyimpanan bersama dan sumber daya jaringan, serta seperangkat aturan tentang bagaimana container harus dijalankan.

Isi sebuah Pod selalu ditempatkan bersama, dijadwalkan bersama, dan dieksekusi di lingkungan yang sama. Sebuah Pod mewakili "host logis" khusus aplikasi:Pod mencakup satu atau lebih container aplikasi yang terhubung erat.

Dalam perspektif Docker, Pod setara dengan satu set kontainer Docker dengan ruang nama dan volume sistem file yang sama.

Jenis Pod Kubernetes

Dalam cluster Kubernetes, ada dua jenis Pod.

  • POD Kontainer Tunggal: Kasus penggunaan Kubernetes yang paling sering adalah pendekatan "satu wadah-per-Pod"; dalam skenario ini, pertimbangkan sebuah Pod sebagai pembungkus di atas satu kontainer; Kubernetes mengelola Pod, bukan container secara langsung.
  • POD Beberapa Kontainer: Sebuah Pod dapat mengenkapsulasi aplikasi yang terdiri dari banyak container yang terhubung erat yang perlu berbagi sumber daya. Kontainer ini dikelompokkan bersama untuk membentuk satu unit layanan dan kontainer ini akan berkomunikasi satu sama lain.

Bagaimana cara kerja POD?

Setiap Pod dirancang untuk mengeksekusi satu instance aplikasi. Anda dapat menggunakan beberapa Pod, satu untuk setiap instance, jika Anda perlu memperluas aplikasi Anda secara horizontal. Ini biasanya disebut sebagai replikasi di Kubernetes . Resource beban kerja dan pengontrolnya biasanya memproduksi dan mengelola Pod yang direplikasi dalam sebuah grup.

Tujuan akhir dari Kubernetes adalah untuk menyebarkan aplikasi dalam bentuk wadah dalam satu set mesin yang disebut sebagai node pekerja di Kluster Kubernetes.

Kubernetes tidak meluncurkan container secara langsung di dalam node, melainkan container tersebut dienkapsulasi sebagai Pod yang merupakan instance tunggal dari sebuah aplikasi.

Dalam Cluster Kubernetes, sebuah node terdiri dari Pod dan Pod terdiri dari Container. Misalnya, Anda memiliki satu instance aplikasi yang berjalan dalam satu wadah yang dienkapsulasi oleh sebuah Pod.

Jika jumlah pengguna meningkat mengakses aplikasi, Anda perlu meningkatkan aplikasi Anda. Dalam hal ini, Anda mungkin perlu menjalankan instance tambahan untuk berbagi beban.

Untuk meningkatkan skala aplikasi, Anda perlu memutar Pod baru tambahan di node dengan aplikasi yang sama. Jika beban semakin meningkat dan node saat ini tidak memiliki kapasitas, maka Anda perlu memiliki node tambahan untuk menjalankan Pod dengan container aplikasi yang sama.

Demikian pula, untuk scaling down, Anda perlu menghapus Pod yang ada.

Semoga Anda mendapatkan ide dasar tentang Kubernetes Pods. Sekarang mari kita lihat cara membuat dan mengelola Pod di Kubernetes.

Sebelum memulai, pastikan Anda telah menginstal Kubernetes di sistem Anda. Tautan berikut berisi petunjuk tentang cara menyiapkan penyebaran cluster Kubernetes node tunggal dan multinode di Linux.

  • Cara Menginstal Kubernetes Menggunakan Minikube Di CentOS Linux
  • Instal Cluster Kubernetes Menggunakan Kubeadm Di RHEL, CentOS, AlmaLinux, Rocky Linux

Setelah Kubernetes terinstal, Anda dapat mulai membuat Pod.

Biasanya, Anda tidak perlu membuat Pod secara langsung, bahkan Pod tunggal. Sebagai gantinya, buat mereka menggunakan sumber daya beban kerja seperti Deployment atau Pekerjaan . Deployment menyediakan pembaruan deklaratif untuk Pod dan ReplicaSet.

Buat Penerapan

Buat penerapan sampel menggunakan gambar yang ada "echoserver" . Ini adalah server HTTP sederhana dan kami dapat mengeksposnya di port 8080 menggunakan --port pilihan.

Gambar kontainer adalah file yang membungkus program dan semua dependensi perangkat lunaknya dalam data biner. Gambar kontainer adalah paket perangkat lunak independen yang dapat dieksekusi yang membuat asumsi yang sangat spesifik tentang lingkungan eksekusinya.

Dalam artikel ini, kita akan membahas semua demonstrasi dalam kluster node tunggal .

Anda dapat mengetahui detail node dengan menjalankan perintah di bawah ini sebagai root pengguna

# kubectl get nodes

Contoh keluaran:

NAME        STATUS   ROLES    AGE   VERSION
ostechnix   Ready    Master   25h   v1.22.3

Sekarang, terapkan aplikasi sampel bernama "hello-ostechnix" menggunakan perintah di bawah ini. Anda dapat memberi nama sesuai dengan kenyamanan Anda.

# kubectl create deployment hello-ostechnix --image=k8s.gcr.io/echoserver:1.10

Contoh keluaran:

deployment.apps/hello-ostechnix created
[[email protected] ~]#

Penerapan dibuat, verifikasi penerapan menggunakan perintah di bawah ini.

# kubectl get deployments

Contoh keluaran:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
hello-ostechnix   1/1     1            1           85s

Penerapan Akses

Untuk mengakses penerapan ini sebagai layanan, Anda perlu mengeksposnya sebagai layanan. Gunakan perintah di bawah ini untuk mengekspos penerapan pada port 8080 .

# kubectl expose deployment hello-ostechnix --type=NodePort --port=8080

Contoh keluaran:

service/hello-ostechnix exposed

Gunakan perintah di bawah ini untuk mendapatkan URL layanan yang terbuka.

# minikube service hello-ostechnix --url

Contoh keluaran:

http://192.168.181.131:30525

Salin URL dan tempel di browser Anda, itu akan mencantumkan detail aplikasi yang digunakan.

Pastikan port 30525 diperbolehkan di router atau firewall Anda. Jika port ini diblokir, Anda tidak dapat melihat informasi Pod di browser.

Hapus Penerapan

Pertama, hapus layanan "hello-ostechnix" menggunakan perintah:

# kubectl delete services hello-ostechnix

Contoh keluaran:

service "hello-ostechnix" deleted

Selanjutnya, hapus penerapan "hello-ostechnix":

# kubectl delete deployment hello-ostechnix

Contoh keluaran:

deployment.apps "hello-ostechnix" deleted

Setelah Anda menghapus penerapan, Pod yang terkait dengan aplikasi akan dihentikan. Diperlukan beberapa detik untuk menyelesaikan penghentian.

# kubectl get pods

Contoh keluaran:

NAME                               READY   STATUS        RESTARTS   AGE
hello-ostechnix-5d4cf4df75-jlwff   1/1     Terminating   0          57m

Setelah menghentikan penerapan, aplikasi tidak akan dapat diakses lagi.

# kubectl get pods

Contoh Keluaran:

No resources found in default namespace.

Jalankan Pod Dengan Gambar

Kita dapat menggunakan 'kubectl run ' perintah untuk membuat dan menjalankan aplikasi dalam sebuah Pod.

$ kubectl run <POD name> --image=<image name>

Di sini, nama Pod bisa apa saja dan nama image harus spesifik yang akan tersedia di Docker Hub atau repositori lokal mana pun.

Mari kita buat Pod dengan gambar Nginx.

# kubectl run ostechnix-nginx --image=nginx

Contoh keluaran:

pod/ostechnix-nginx created

Sebuah Pod bernama 'ostechnix-nginx' telah dibuat. Anda dapat memverifikasi status Pod dengan perintah di bawah ini.

# kubectl get pods

Contoh keluaran:

NAME              READY   STATUS    RESTARTS   AGE
ostechnix-nginx   1/1     Running   0          4m20s

Anda bisa mendapatkan informasi tambahan seperti di mana Pod berjalan dan IP Pod dengan menggunakan 'wide ' pilihan.

# kubectl get pods -o wide

Contoh keluaran:

NAME              READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
ostechnix-nginx   1/1     Running   0          38m   172.17.0.6   ostechnix   <none>           <none>

Anda bisa mendapatkan informasi lengkap tentang POD dengan menggunakan 'kubectl describe ' perintah.

# kubectl describe pod ostechnix-nginx

Perintah ini akan memberi Anda detail lengkap POD seperti detail container dan statusnya, detail Event yang terjadi sejak Pod dibuat.

Name:         ostechnix-nginx
Namespace:    default
Priority:     0
Node:         ostechnix/192.168.181.131
Start Time:   Thu, 03 Feb 2022 01:40:48 -0800
Labels:       run=ostechnix-nginx
Annotations:  <none>
Status:       Running
IP:           172.17.0.6
IPs:
  IP:  172.17.0.6
Containers:
  ostechnix-nginx:
    Container ID:   docker://29eeb0392247aef193d6dff0138f8ef132dfb6359d8e67c3a5e4a21d7e259989
    Image:          nginx
    Image ID:       docker-pullable://[email protected]:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 03 Feb 2022 01:40:54 -0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ggvk6 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  kube-api-access-ggvk6:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  7m26s  default-scheduler  Successfully assigned default/ostechnix-nginx to ostechnix
  Normal  Pulling    7m24s  kubelet            Pulling image "nginx"
  Normal  Pulled     7m20s  kubelet            Successfully pulled image "nginx" in 4.114836826s
  Normal  Created    7m20s  kubelet            Created container ostechnix-nginx
  Normal  Started    7m20s  kubelet            Started container ostechnix-nginx
[[email protected] ~]#

Setelah selesai, Anda dapat menghapus Pod dengan menggunakan 'kubectl delete ' perintah.

# kubectl delete pod ostechnix-nginx

Contoh keluaran:

pod "ostechnix-nginx" deleted

Verifikasi apakah Pod dihapus dengan mencantumkan Pod yang tersedia:

# kubectl get pods
No resources found in default namespace.

Kesimpulan

Dalam tutorial ini, kita telah mempelajari konsep Pod di Kubernetes, penerapan aplikasi sederhana dan cara menjalankan Pod. Kami akan memiliki detail lebih lanjut tentang membuat Pod dengan YAML file definisi dalam detail kami yang akan datang.


Linux
  1. Cara Membuat Tautan Keras dan Simbolik di Linux

  2. Cara Mengelola Kedaluwarsa dan Penuaan Kata Sandi Pengguna di Linux

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

  1. Cara Mengelola dan Mendaftar Layanan di Linux

  2. Cara Membuat Alias ​​​​dan Menggunakan Perintah Alias ​​​​di Linux

  3. Cara membuat dan menghapus grup pengguna di Linux

  1. Cara Memulai Ulang Pod Kubernetes

  2. Cara Mengatur/Membuat Variabel Lingkungan dan Shell di Linux

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