GNU/Linux >> Belajar Linux >  >> Cent OS

Deploy Pod, Pengontrol Replikasi, dan Layanan di Kubernetes pada CentOS 7

Halo Teknisi, Dalam tutorial kami sebelumnya, kami telah membahas langkah-langkah instalasi Kubernetes di CentOS 7 / RHEL 7. Dalam tutorial ini kita akan membahas bagaimana kita dapat men-deploy pod, pengontrol replikasi, dan layanan.

Saya berasumsi penyiapan Kubernetes sudah aktif dan berjalan. Jika tidak, lihat panduan berikut:

  • Cara Menginstal Kubernetes (k8s) 1.7 di CentOS 7 / RHEL 7

Sekarang Mari kita masuk ke penerapan Pod. Pod adalah multi-tier atau grup container yang diluncurkan pada salah satu node Worker atau Minion. Untuk men-deploy pod, pertama-tama kita harus membuat file yml atau json di master node atau di sistem tempat kubectl tool diinstal. Kubectl akan menggunakan file yml dan akan terhubung ke kube-apiserver pada port 6443 kemudian kube-apiserver akan terhubung ke kube-controller-manager dan Kube-controller-manager selanjutnya akan terhubung ke Kube-Scheduler dan program penjadwal terhubung ke node pekerja menggunakan kubelet agent dan kemudian kubelet agent terhubung ke daemon docker pada node dan meluncurkan container berdasarkan definisi Pod.

Sebelum mulai membuat file pod yml, pertama-tama pastikan Anda telah menguji image docker di hub docker. Dalam kasus saya, saya telah mendorong satu gambar buruh pelabuhan (linuxtechi/web-server-php) di hub buruh pelabuhan.

Sekarang mari kita buat file pod.yml di server master.

[[email protected] ~]# mkdir /techcode[[email protected] ~]# cd /techcode/[[email protected] techcode]# vi pod.ymlapiVersion:v1kind:Podmetadata:  name:web-server-pod labels:   app:webserver-app1   region:IN   rack:r1   version:"1.1"spec:  containers:    - name:web-server-test-container      image:linuxtechi/web-server-php:testversion      ports:      - containerPort:80 

Simpan dan keluar dari file.

Dalam file yang telah kami tentukan apiversion sebagai v1 , Anda dapat memverifikasi silang apiversion dari file “/root/.kube/config”, Tentukan Jenis sebagai ‘Pod ' saat kami menerapkan pod menggunakan file yml ini. Tentukan meta-data dan label untuk pod.

Selain itu, kami telah menyebutkan spesifikasi untuk wadah seperti "Nama Gambar" dan port yang terbuka dari wadah dll.

Gunakan di bawah ‘kubectl ' perintah untuk menyebarkan pod.

[[email protected] techcode]# kubectl create -f pod.ymlpod "web-server-pod" create[[email protected] techcode]#

Verifikasi status pod dari master node menggunakan perintah berikut

[[email protected] ~]# kubectl get podsNAME            READY     STATUS    MULAI ULANG   AGEweb-server-pod   1/1      Berjalan   0         4m[[email protected] ~ protected] ~ protected] SIAP     STATUS    MULAI ULANG   USIA       IP         NODEweb-server-pod   1/1      Berjalan   0        4m       10.32.0.2   worker-node2[[email#] ~] 

Sesuai output di atas, pod telah di-deploy pada node pekerja 2. Kami tidak dapat mengakses aplikasi yang berjalan di dalam pod karena sampai sekarang kami belum menetapkan aturan tepuk atau natting untuk pod.

Mari kita buat aturan sedemikian rupa sehingga jika ada permintaan yang datang pada alamat ip node pekerja 2 pada port tertentu maka harus diarahkan ke pod (web-server-pod) pada port 80. Hal ini dapat dicapai dengan service. Sebuah layanan dapat didefinisikan baik dari perintah atau melalui file yml.

Membuat Service dari Command Line menggunakan “kubectl expose”

[[email protected] ~]# kubectl expose pods web-server-pod  --name=webpod-service --target-port=80  --type=NodePortservice "webpod-service" terkena[[email protected] ~ ]#

Perintah di atas akan mengekspos pod atau wadah ke dunia luar. Ini akan menghasilkan port acak pada node tempat pod dibuat dan kita dapat mengatakan bahwa perintah di atas akan melakukan tugas menepuk untuk kita, Pengguna eksternal dapat menjangkau server web saya yang berjalan di dalam pod dengan ip node bersama dengan port acak.

Verifikasi status Layanan menggunakan perintah berikut

 [[lindungi email] ~] # KUBECTL mendapatkan svcname cluster-ip eksternal-ip port alukubernetes 10.96.0.1  443 / tcp 2hwebpod-layanan 10.101.51.190  80:30108 / tcp 2m [ [Email dilindungi] ~] # [[Dilindungi Email] ~] # KUBECTL Dapatkan SVC -O widename cluster-ip eksternal-ip port (s) Umur SelecturchuberNetes 10.96.0.1  443 / tcp 2h  webpod-layanan 10.101 .51.190          80:30108/TCP   3m       app=webserver-app1,rack=r1,region=IN,version=1.1[[email protected] ~]#

Sekarang coba akses Server Web

~]# curl 192.168.1.5:30108

Kami dapat menghapus layanan yang dibuat di atas menggunakan perintah berikut

[[email protected] ~]# kubectl delete svc webpod-serviceservice "webpod-service" dihapus[[email protected] ~]#

Membuat layanan menggunakan file yml

Buat file yml baru dengan nama ‘service.yml ' dengan konten berikut. Nilai parameter Kind kali ini adalah 'Layanan'. Di bawah bidang Spesifikasi disebutkan port tempat server web atau aplikasi berjalan di dalam wadah dan NodePort adalah port acak pada node Kerja. Selector menunjukkan bahwa layanan ini akan berlaku untuk pod yang parameter versinya adalah ‘1.1’, Jadi dalam kasus kami layanan ini akan berlaku untuk pod “web-server-pod”

[[email protected] techcode]# vi service.ymlapiVersion:v1kind:Servicemetadata: name:webpod-service labels:   app:webpod-service-labelspec: type:NodePort ports: - port:80   nodePort:30001   protokol:TCP pemilih:   versi:"1.1"

Sekarang buat layanan dengan menjalankan perintah berikut

[[email protected] techcode]# kubectl create -f service.ymlservice "webpod-service" create[[email protected] techcode]#

Mari kita verifikasi status Layanan dengan menggunakan perintah di bawah

 [[lindung email] TechCode] # KubectL Dapatkan svcname cluster-ip eksternal-ip port aluknetnetes 10.96.0.1  443 / tcp 2hwebpod-layanan 10.102.18.35  80:30001 / tcp 1m [ [Email dilindungi] TechCode] # [[email terlindungi] TechCode] # KubectL Dapatkan svc -o widename cluster-ip eksternal-ip port (s) Umur Selectorkuberes 10.96.0.1  443 / tcp 2h  webpod-service 10.102 .18.35          80:30001/TCP   2m       version=1.1[[email protected] techcode]#

Sekarang akses aplikasi Anda menggunakan perintah curl:

[[email protected] ~]# curl http://192.168.1.50:30001

Outputnya akan seperti di bawah ini

Sampai sekarang kami telah menerapkan satu pod dan layanannya. Anggap saja saya ingin men-deploy 5 pod dengan jenis yang sama, kemudian dapat di-deploy menggunakan pengontrol replikasi. Singkatnya itu disebut sebagai 'rc '. Setiap kali kita menyediakan pod menggunakan rc maka pod akan berada dalam ketersediaan tinggi dan toleransi kesalahan, artinya jika ada yang salah dengan pod maka pod dengan jenis yang sama akan di-deploy secara otomatis oleh cluster.

Menerapkan Pengontrol Replikasi

Pengontrol replikasi juga digunakan dengan file yml menggunakan perintah kubectl. Mari kita buat file yml untuk rc.

[[email protected] techcode]# vi replica-controller.ymlapiVersion:v1kind:ReplicationControllermetadata: name:webserver-rcspec: replicas:5 selector:   app:  lamp-app1 template:    metadata:     labels:           wilayah aplikasi :IN       rack:r1       version:"1.1"    spec:       containers:       - name:webserver-php-con1        image:linuxtechi/web-server-php:testversion        port:        > containerPort:

Nilai parameter jenis waktu ini adalah “ReplicationController ” dan di bawah spesifikasi kami memiliki ‘replika=5 ‘, artinya 5 pod akan di-deploy di seluruh node pekerja menggunakan gambar buruh pelabuhan “linuxtechi/web-server-php:testversion”

Jalankan perintah berikut untuk menerapkan pengontrol replikasi

[[email protected] techcode]# kubectl create -f replica-controller.ymlreplicationcontroller "webserver-rc" create[[email protected] techcode]#

Verifikasi status pod dan lihat di mana mereka telah disediakan

[[email protected] techcode]# kubectl get pods[[email protected] techcode]# kubectl get pods -o wide

Verifikasi status pengontrol replikasi menggunakan perintah kubectl di bawah

 [[lindung email] TECHCODE] # KubectL Dapatkan RCNAME yang diinginkan arus ready agewebserver-rc 5 5 5 5m [[email lindung] TechCode] # KubectL Dapatkan RC -O widename yang diinginkan Gambar wadah usia siap pakai saat ini SELECTORwebserver-rc   5         5        5        5m        webserver-php-con1   linuxtechi/web-server-php:testversion   app=lamp-app1[[email protected] techcode]#

Mari kita definisikan layanan untuk pengontrol replikasi yang dibuat di atas.

[[email protected] techcode]# vi rc-service.ymlapiVersion:v1kind:Servicemetadata: name:webserver-service labels:   app:webserver-service-labelspec: type:NodePort ports: - port:80   nodePort:30002   protocol :pemilih TCP:   versi:"1.1"

Buat layanan menggunakan perintah kubectl

[[email protected] techcode]# kubectl create -f rc-service.ymlservice "webserver-service" create[[email protected] techcode]#

Dapatkan status Layanan menggunakan perintah kubectl di bawah ini

 [[Email Protected] TechCode] # Kubectl Dapatkan SVC -O widename cluster-ip eksternal-ip port (s) selectorkubernetes 10.96.0.1  443 / tcp  server web 10.111.34.34        80:30002/TCP   1m        version=1.1[[email protected] techcode]#

Sekarang coba akses server web dari kedua node

[[email protected] ~]# curl http://192.168.1.40:30002

[[email protected] ~]# curl http://192.168.1.50:30002

Sesuai output di atas, kami dapat mengakses server web kami menggunakan alamat ip dari kedua node pekerja. Setiap kali kita mengakses server web menggunakan ip node pekerja, maka permintaan akan diseimbangkan secara otomatis di antara pod pada node.

Ini menyimpulkan artikel. Silakan bagikan umpan balik dan komentar Anda jika artikel ini membantu untuk menerapkan dan memahami Pod, layanan, dan pengontrol Replikasi.


Cent OS
  1. Cara Menginstal dan Mengonfigurasi Fail2Ban di CentOS 8 dan Fedora 33

  2. Hentikan dan Nonaktifkan Firewalld pada CentOS 7 - Proses Langkah demi Langkah?

  3. Systemctl menggantikan perintah Chkconfig dan Service di CentOS 7

  1. Cara Menghentikan dan Menonaktifkan Firewalld di CentOS 7

  2. Cara Menonaktifkan Layanan rpc.quotad di CentOS/RHEL 6 dan 7

  3. Cara Menutupi atau Membuka Kedok Layanan di CentOS/RHEL 7 dan 8

  1. Instal KVM Hypervisor di CentOS 7.x dan RHEL 7.x

  2. Cara Menginstal dan Mengonfigurasi Foreman di CentOS 7

  3. Cara Menginstal dan Mengkonfigurasi Jenkins di CentOS 7 dan RHEL 7