Kubernetes adalah perangkat lunak terkemuka dalam orkestrasi container. Kubernetes bekerja dengan mengelola cluster, yang merupakan kumpulan host yang dimaksudkan untuk menjalankan aplikasi dalam container. Untuk memiliki cluster Kubernetes, Anda memerlukan minimal dua node – master node dan simpul pekerja . Tentu saja, Anda dapat memperluas cluster dengan menambahkan node pekerja sebanyak yang Anda butuhkan.
Dalam panduan ini, kita akan menerapkan cluster Kubernetes yang terdiri dari dua node, keduanya menjalankan Ubuntu 20.04 Focal Fossa. Memiliki dua node di cluster kami adalah konfigurasi paling dasar yang mungkin, tetapi Anda dapat menskalakan konfigurasi tersebut dan menambahkan lebih banyak node jika diinginkan.
Dalam tutorial ini Anda akan mempelajari:
- Cara menginstal Docker
- Cara menginstal Kubernetes
- Cara mengonfigurasi node master dan pekerja
- Cara menggabungkan node pekerja ke cluster Kubernetes
- Cara men-deploy Nginx (atau aplikasi dalam container apa pun) di cluster Kubernetes
Menerapkan Kubernetes di Ubuntu 20.04 Focal Fossa
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Menginstal Ubuntu 20.04 atau memutakhirkan Ubuntu 20.04 Focal Fossa |
Perangkat Lunak | Kubernetes |
Lainnya | Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah. |
Konvensi | # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Skenario
Sebelum kita menyelami, mari kita tentukan rincian skenario kita. Seperti disebutkan di atas, cluster kami akan memiliki dua node, dan kedua node tersebut menjalankan Ubuntu 20.04 Focal Fossa. Salah satunya adalah node master dan dapat dengan mudah diidentifikasi dengan nama host kubernetes-master
. Simpul kedua akan menjadi simpul pekerja dan memiliki nama host kubernetes-worker
.
Node master akan menerapkan cluster Kubernetes dan node pekerja hanya akan bergabung dengannya. Karena cluster Kubernetes dirancang untuk menjalankan perangkat lunak dalam container, setelah cluster kami aktif dan berjalan, kami akan menerapkan container server Nginx sebagai bukti konsep.
Instal Docker
Kedua node perlu menginstal Docker, karena Kubernetes bergantung padanya. Buka terminal dan ketik perintah berikut pada master dan node pekerja untuk menginstal Docker:
$ sudo apt update$ sudo apt install docker.io
Setelah Docker selesai menginstal, gunakan perintah berikut untuk memulai layanan dan untuk memastikan layanan dimulai secara otomatis setelah setiap reboot:
$ sudo systemctl start docker$ sudo systemctl enable docker
Instal Kubernetes
Sekarang kita siap untuk menginstal Kubernetes. Sama seperti semua perintah lain hingga saat ini, pastikan Anda melakukan ini di kedua node. Pada master dan pekerja Kubernetes Anda, instal terlebih dahulu apt-transport-https
package, yang memungkinkan kita menggunakan http dan https di repositori Ubuntu. Sekarang juga saat yang tepat untuk memasang curl
karena kita akan membutuhkannya sebentar lagi:
$ sudo apt install apt-transport-https curl
Selanjutnya, tambahkan kunci penandatanganan Kubernetes ke kedua sistem:
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
Selanjutnya, kita akan menambahkan repositori paket Kubernetes. Perhatikan bahwa pada saat penulisan ini, Ubuntu 16.04 Xenial Xerus adalah repositori Kubernetes terbaru yang tersedia. Ini pada akhirnya harus digantikan oleh Ubuntu 20.04 Focal Fossa, dan perintah berikut kemudian dapat diperbarui dari xenial
untuk focal
.
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Sekarang kita dapat menginstal Kubernetes:
$ sudo apt install kubeadm kubelet kubectl kubernetes-cni
Nonaktifkan memori swap
Kubernetes akan menolak untuk berfungsi jika sistem Anda menggunakan memori swap. Sebelum melanjutkan lebih jauh, pastikan node master dan pekerja telah menonaktifkan memori swap dengan perintah ini:
$ sudo swapoff -a
Perintah itu akan menonaktifkan memori swap hingga sistem Anda reboot, jadi untuk membuat perubahan ini tetap ada, gunakan nano atau editor teks favorit Anda untuk membuka file ini:
$ sudo nano /etc/fstab
Di dalam file ini, beri komentar pada /swapfile
baris dengan mengawalinya dengan #
simbol, seperti yang terlihat di bawah ini. Kemudian, tutup file ini dan simpan perubahannya.
Setel nama host
Selanjutnya, pastikan bahwa semua node Anda memiliki nama host yang unik. Dalam skenario kami, kami menggunakan nama host kubernetes-master
dan kubernetes-worker
untuk membedakan host kami dengan mudah dan mengidentifikasi peran mereka. Gunakan perintah berikut jika Anda perlu mengubah nama host Anda:
$ sudo hostnameectl set-hostname kubernetes-master
Dan pada simpul pekerja:
$ sudo hostnameectl set-hostname kubernetes-worker
Anda tidak akan melihat perubahan nama host di terminal sampai Anda membuka yang baru. Terakhir, pastikan bahwa semua node Anda memiliki waktu dan tanggal yang akurat, jika tidak, Anda akan mengalami masalah dengan sertifikat TLS yang tidak valid.
Inisialisasi server master Kubernetes
Sekarang kita siap untuk menginisialisasi node master Kubernetes. Untuk melakukannya, masukkan perintah berikut pada master node Anda:
kubernetes-master:~$ sudo kubeadm initKubernetes di node master Ubuntu 20.04 sekarang diinisialisasi
Node master Kubernetes sekarang telah diinisialisasi. Outputnya memberi kita kubeadm join
perintah yang perlu kita gunakan nanti untuk menggabungkan node pekerja kita ke node master. Jadi, perhatikan perintah ini untuk nanti.
Output dari atas juga menyarankan kita untuk menjalankan beberapa perintah sebagai pengguna biasa untuk mulai menggunakan cluster Kubernetes. Jalankan ketiga perintah tersebut pada master node:
kubernetes-master:~$ mkdir -p $HOME/.kubekubernetes-master:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configkubernetes-master:~$ sudo chown $( id -u):$(id -g) $HOME/.kube/config
Menyebarkan jaringan pod
Langkah selanjutnya adalah men-deploy jaringan pod. Jaringan pod digunakan untuk komunikasi antar host dan diperlukan agar cluster Kubernetes berfungsi dengan baik. Untuk ini kita akan menggunakan jaringan pod Flanel. Keluarkan dua perintah berikut pada master node:
kubernetes-master:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubernetes-master:~$ kubectl apply -f https://raw .githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
Tergantung pada lingkungan Anda, mungkin hanya perlu beberapa detik atau satu menit untuk mengaktifkan seluruh jaringan flanel. Anda dapat menggunakan kubectl
perintah untuk mengonfirmasi bahwa semuanya sudah siap dan siap:
kubernetes-master:~$ kubectl get pod --all-namespacesJaringan Pod berhasil di-deploy
Saat semua kolom STATUS menunjukkan 'Berjalan', ini merupakan indikasi bahwa semuanya telah selesai diterapkan dan siap digunakan.
Bergabung dengan cluster Kubernetes
Sekarang cluster kami siap untuk bergabung dengan node pekerja. Gunakan kubeadm join
perintah yang diambil sebelumnya dari output inisialisasi node master Kubernetes untuk bergabung dengan cluster Kubernetes Anda:
kubernetes-worker:~$ sudo kubeadm join 192.168.1.220:6443 --token 1exb8s.2t4k3b5syfc3jfmo --discovery-token-ca-cert-hash sha256:72ad481cee4918cf2314738419356c9a402fb6013763402fb Bergabung dengan node pekerja ke cluster KubernetesKembali ke master node Kubernetes Anda, konfirmasikan bahwa
kubernetes-worker
sekarang menjadi bagian dari cluster Kubernetes kami dengan perintah ini:kubernetes-master:~$ kubectl dapatkan nodeMenampilkan node apa yang saat ini ada di cluster KubernetesMen-deploy layanan di cluster Kubernetes
Sekarang kami siap untuk men-deploy layanan ke dalam cluster Kubernetes. Dalam contoh kami, kami akan menyebarkan server Nginx ke dalam cluster baru kami sebagai bukti konsep. Jalankan dua perintah berikut pada master node Anda:
kubernetes-master:~$ kubectl run --image=nginx nginx-server --port=80 --env="DOMAIN=cluster"kubernetes-master:~$ kubectl mengekspos penerapan nginx-server --port=80 --name=nginx-httpAnda sekarang akan melihat wadah buruh pelabuhan nginx baru yang diterapkan pada simpul pekerja Anda:
kubernetes-worker:~$ sudo docker psKontainer Nginx buruh pelabuhan baru sudah aktif dan berjalan di node pekerja KubernetesAnda dapat melihat daftar berjalan dari semua layanan yang tersedia yang berjalan di cluster Anda dengan perintah berikut, yang dikeluarkan dari node maser Kubernetes:
kubernetes-master:~$ kubectl get svcMenampilkan layanan dalam container yang berjalan di cluster KubernetesKesimpulan
Pada artikel ini, kita mempelajari cara menyiapkan Kubernetes untuk menerapkan aplikasi dalam container di Ubuntu 20.04 Focal Fossa. Kami menyiapkan cluster dasar yang terdiri dari dua host, master dan pekerja, meskipun ini dapat diskalakan ke lebih banyak node pekerja jika perlu.
Kami melihat cara mengonfigurasi Docker dan prasyarat lainnya, serta menerapkan server Nginx di cluster baru kami sebagai bukti konsep. Tentu saja, konfigurasi yang sama ini dapat digunakan untuk menerapkan sejumlah aplikasi dalam container.