GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Install Kubernetes (k8s) di Ubuntu 20.04 LTS Server

Kubernetes (k8s) adalah alat orkestrasi wadah sumber terbuka dan gratis. Ini digunakan untuk menyebarkan, menskalakan, dan mengelola aplikasi berbasis kemas. Pada artikel ini kami akan mendemonstrasikan cara menginstal Kubernetes Cluster di Ubuntu 20.04 LTS Server (Focal Fossa) menggunakan kubeadm . Dalam pengaturan lab saya, saya telah menggunakan tiga mesin server Ubuntu 20.04 LTS. Berikut adalah persyaratan sistem pada setiap sistem Ubuntu.

  • Minimal RAM 2 GB
  • 2 Inti (2 vCPU)
  • Ruang Kosong 15 GB di /var
  • Pengguna istimewa dengan hak sudo
  • Koneksi Internet Stabil

Berikut adalah detail penyiapan lab saya:

  • Mesin 1 (Server Ubuntu 20.04 LTS) – K8s-master – 192.168.1.40
  • Mesin 2 (Server Ubuntu 20.04 LTS) – K8s-node-0 – 192.168.1.41
  • Mesin 3 (Server Ubuntu 20.04 LTS) – K8s-node-1 – 192.168.1.42

Sekarang mari kita masuk ke langkah-langkah instalasi Kubernetes

Langkah1) Tetapkan nama host dan tambahkan entri di file /etc/hosts

Gunakan perintah hostnamectl untuk mengatur nama host pada setiap node, contoh ditunjukkan di bawah ini:

$ sudo hostnamectl set-hostname "k8s-master"     // Jalankan perintah ini pada master node$ sudo hostnamectl set-hostname "k8s-node-0"     // Jalankan perintah ini pada node-0$ sudo hostnameectl set-hostname "k8s-node-1"     // Jalankan perintah ini di node-1

Tambahkan entri berikut di file /etc/hosts di setiap node,

192.168.1.40    k8s-master192.168.1.41    k8s-node-0192.168.1.42    k8s-node-1

Langkah 2) Instal Docker (Container Runtime) di ketiga node

Login ke setiap node dan jalankan perintah berikut untuk menginstal docker,

$ sudo apt update$ sudo apt install -y docker.io

Sekarang mulai dan aktifkan layanan buruh pelabuhan pada setiap node menggunakan perintah systemctl di bawah,

$ sudo systemctl aktifkan docker.service --now

Jalankan perintah berikut untuk memverifikasi status layanan buruh pelabuhan dan versinya,

$ systemctl status docker$ docker --version

Langkah 3) Nonaktifkan swap dan aktifkan penerusan IP di semua node

Untuk menonaktifkan swap, edit file /etc/fstab dan beri komentar pada baris yang menyertakan entri baik partisi swap atau file swap.

$ sudo vi /etc/fstab

Simpan &keluar dari file

Jalankan perintah swapoff untuk menonaktifkan swap dengan cepat

$ sudo swapoff -a

Untuk mengaktifkan penerusan ip secara permanen, edit file “/etc/sysctl.conf” dan cari baris “net.ipv4.ip_forward=1 ” dan batalkan komentarnya. Setelah membuat perubahan pada file, jalankan perintah berikut

$ sudo sysctl -pnet.ipv4.ip_forward =1$

Langkah 4) Instal Kubectl, kubelet dan kubeadm di semua node

Jalankan perintah berikut pada ketiga node untuk menginstal utilitas kubectl , kubelet dan kubeadm

$ sudo apt install -y apt-transport-https curl$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"$ sudo apt update$ sudo apt install -y kubelet kubeadm kubectl

Catatan : Pada saat penulisan artikel ini , repositori Kubernetes Ubuntu 16.04 (Xenial Xerus ) telah tersedia tetapi di masa depan, ketika repositori kubernetes tersedia untuk Ubuntu 20.04 maka ganti xenial dengan kata fokus di atas perintah 'apt-add-repository'.

Langkah 4) Inisialisasi Cluster Kubernetes menggunakan kubeadm (dari master node)

Login ke master node Anda (k8s-master) dan jalankan di bawah perintah ‘kubeadm init‘ untuk menginisialisasi cluster Kubernetes,

$ sudo kubeadm init

Setelah cluster berhasil diinisialisasi, kita akan mendapatkan output berikut

Untuk mulai menggunakan cluster sebagai pengguna biasa, mari kita jalankan perintah berikut, perintah sudah ada di output cukup salin tempel.

[email protected]:~$  mkdir -p $HOME/.kube[email protected]:~$  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[email protected]:~ $  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Sekarang Join node pekerja (k8s-node-0/1) ke cluster, perintah untuk bergabung dengan cluster sudah ada di output. Copy perintah “kubeadm join” dan paste di kedua node (worker node).

Login ke Node-0 dan jalankan perintah berikut,

[email protected]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa986f82973>preaed458dc22973>preaed458d82973>preaed458d82973 

Login ke Node-1 dan jalankan perintah berikut untuk bergabung dengan cluster,

[email protected]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa986f82973>preaed458dc22973>preaed458d82973>preaed458d82973 

Dari master node jalankan perintah “kubectl get nodes” untuk memverifikasi status node

[email protected]:~$ kubectl get nodesNAME        STATUS     PERAN    USIA     VERSIONk8s-master   NotReady   master   27m     v1.18.3k8s-node-0   NotReady       8mnde. 18.3[dilindungi email]:~$

Seperti yang kita lihat, node pekerja dan node master telah bergabung dengan cluster, tetapi status setiap node adalah “Tidak Siap ”. Untuk membuat status “Siap ” kita harus menerapkan add-on jaringan Pod berbasis Container Network Interface (CNI) seperti calico , kube-router dan weave-net . Seperti namanya, add-on jaringan pod memungkinkan pod untuk saling berkomunikasi.

Langkah 5) Terapkan Add-on Jaringan Calico Pod (Master Node)

Dari master node, jalankan perintah berikut untuk menginstal add-on jaringan Calico pod,

[email protected]:~$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Setelah berhasil di-deploy maka status node akan siap, mari kita jalankan kembali perintah kubectl untuk memverifikasi status node

[email protected]:~$ kubectl get nodesNAME        STATUS   PERAN    USIA   VERSIONk8s-master   Siap    master   39m   v1.18.3k8s-node-0   Siap      19m    v1.18 
[email protected]:18.3[dilindungi email]:~$

Jalankan perintah di bawah ini untuk memverifikasi status pod dari semua namespace

Sempurna, di atas menegaskan bahwa semua pod berjalan dan dalam keadaan sehat. Mari kita coba men-deploy pod, layanan, dan penerapan untuk melihat apakah cluster Kubernetes kita berfungsi dengan baik atau tidak.

Catatan: Untuk mengaktifkan fitur penyelesaian bash pada node master Anda, jalankan yang berikut

[email protected]:~$ echo 'source <(kubectl completion bash)'>>~/.bashrc[email protected]:~$ source .bashrc

Langkah 6) Uji dan Verifikasi Cluster Kubernetes

Mari kita buat deployment bernama nginx-web dengan image container nginx di namespace default, jalankan perintah kubectl berikut dari node master,

[email protected]:~$ kubectl create deployment nginx-web --image=nginxdeployment.apps/nginx-web created[email protected]:~$

Jalankan perintah di bawah ini untuk memverifikasi status penerapan

[email protected]:~$ kubectl get deployments.appsNAME        READY   UP-TO-DATE   TERSEDIA   AGEnginx-web   1/1    1          1          41s[email kubectl] [dapatkan email protected] -Date Tersedia Kontain Usia Gambar SelectOrginx-WEB 1/1 1 1 56S Nginx Nginx App =nginx-web [Email Dilindungi]:~ $ [Email Dilindungi]:~ $ Kubectl Dapatkan PodsName Siap Status Restart Agenginx-WEB-7748F7F978-NK8B2 1B2 1 /1     Berjalan   0          2m50[email protected]:~$

Seperti yang kita lihat, penerapan telah berhasil dibuat dengan replika default.

Mari tingkatkan penerapan, setel replika sebagai 4. Jalankan perintah berikut,

[email protected]:~$ kubectl scale --replicas=4 penerapan nginx-webdeployment.apps/nginx-web scaled[email protected]:~$

Sekarang verifikasi status penerapan Anda menggunakan perintah berikut,

[email protected]:~$ kubectl get deployments.apps nginx-webNAME       READY   UP-TO-DATE   TERSEDIA   AGEnginx-web   4/4     4          4      $[e-mail][dilindungi] deployments.apps nginx-web

Di atas mengonfirmasi bahwa penerapan berbasis nginx telah berhasil ditingkatkan.

Mari lakukan satu pengujian lagi, buat pod bernama “http-web” dan ekspos melalui layanan bernama “http-service” dengan port 80 dan NodePort sebagai tipenya.

Jalankan perintah berikut untuk membuat pod,

[email protected]:~$ kubectl run http-web --image=httpd --port=80pod/http-web created[email protected]:~$

Buat layanan menggunakan perintah di bawah dan ekspos pod yang dibuat di atas pada port 80,

[email protected]:~$ kubectl expose pod http-web --name=http-service --port=80 --type=NodePortservice/http-service expose[email protected]:~$[email protected]:~$ kubectl get service http-serviceNAME          TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)       AGEhttp-service   NodePort   10.101.152.138      >    80 

Dapatkan IP Node atau nama host tempat http-web pod di-deploy, lalu akses server web melalui NodePort (31098)

[email dilindungi]:~ $ Kubectl dapatkan pod http-web -o widename status siap restart usia ip node nominasi node kesiapan gateshtp-web 1/1 berjalan 0 59m 172.16.11.196 k8s-node-0 >[email protected]:~$[email protected]:~$ curl http://k8s-node-0:31098

Berhasil!

[dilindungi email]:~$

Sempurna, itu bekerja dengan baik seperti yang diharapkan. Ini mengakhiri artikel dan mengonfirmasi bahwa kami telah berhasil mengatur cluster Kubernetes di Ubuntu 20.04 LTS Server.

Baca Juga :Cara Menyetel Pengontrol Ingress NGINX di Kubernetes

Baca JugaCara Menyetel Registri Docker Pribadi di Kubernetes (k8s)


Ubuntu
  1. Cara Menginstal Server RabbitMQ di Ubuntu 18.04 &16.04 LTS

  2. Cara Menginstal Server Gitlab di Ubuntu 18.04 &16.04 LTS

  3. Cara Menginstal Xrdp Server di Ubuntu 20.04 LTS

  1. Cara Menginstal dan Mengonfigurasi Kubernetes (k8s) di Ubuntu 18.04 LTS

  2. Cara Menginstal R di Ubuntu 18.04 LTS

  3. Cara Menginstal R di Ubuntu 20.04 LTS

  1. Cara Menginstal OctoberCMS di Ubuntu 16.04 LTS

  2. Cara Menginstal AbanteCart di Ubuntu 16.04 LTS

  3. Cara menginstal RabbitMQ Server di Ubuntu 18.04 LTS