GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Kubernetes di Ubuntu 20.04

Container adalah pilihan yang baik untuk menggabungkan dan menjalankan aplikasi kita sendiri. Ketika jumlah kontainer meningkat dengan cepat dan perlu mengelolanya dengan cara yang nyaman. Itulah alasan mengapa Kubernetes hadir. Kubernetes (K8s) adalah sistem sumber terbuka untuk mengotomatiskan penerapan, penskalaan, mengelola aplikasi dan layanan dalam container.

Cluster Kubernetes berisi node master dan pekerja. Node master mengontrol dan mengelola sekelompok node pekerja. Anda dapat memiliki beberapa node master untuk cluster ketersediaan tinggi.

Tutorial ini menunjukkan cara memasang cluster Kubernetes dengan kubeadm di Ubuntu 20.04.

Menyiapkan Lingkungan

  • Gunakan 2 host Linux yang menjalankan Ubuntu 20.04

Menyetel alamat IP statis untuk node Master dan node Pekerja

- Node utama:192.168.1.11
- Node pekerja:192.168.1.12

  • Konfigurasikan nama host untuk setiap mesin

Kami akan menggunakan node-1 sebagai master dan node-2 sebagai node pekerja.

$ sudo hostnamectl set-hostname node-1
$ sudo hostnamectl set-hostname node-2
  • Nonaktifkan memori swap pada setiap node ubuntu
$ sudo swapoff -a

Tambahkan repositori Kubernetes

Kubernetes tidak tersedia di repositori default Ubuntu, jadi harus menambahkannya secara manual.

Pada Node Master dan Worker lakukan hal berikut:

Menambahkan kunci penandatanganan Kubernetes sebagai berikut:

$ sudo -i
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

Kemudian, tambahkan repo Kubernetes, jalankan:

$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list
$ sudo mv ~/kubernetes.list /etc/apt/sources.list.d
$ sudo apt update

Menginstal alat Kubernetes

Di bagian ini, kita akan menginstal Kubeadm, cri-o, Kubelet, dan Kubernetes-cni. Semua alat ini perlu dipasang di node master dan pekerja .

Pastikan untuk menginstal versi yang direkomendasikan dan didukung. Di sini kami menginstal Kubernetes dan crio versi 1.18.

Instal Kubeadm

Kubeadm adalah alat yang merupakan bagian dari proyek Kubernetes yang membantu inisialisasi cluster Kubernetes.

Dalam tutorial ini, kita akan menginstal kubeadm versi 1.18.0-00, ketik:

$ sudo apt install -y kubeadm=1.18.0-00 --allow-unauthenticated

Catatan :Anda dapat menemukan versi spesifik dengan perintah berikut:

$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'

Instal Kubectl

Kubectl adalah alat baris perintah Kubernetes. Ini memungkinkan Anda untuk menjalankan perintah di cluster Kubernetes. Anda dapat menggunakan kubectl untuk men-deploy aplikasi, mengelola sumber daya cluster, dan melihat log.

Instal kubectl v1.18.0-00 dengan perintah berikut:

$ sudo apt install -y kubectl=1.18.0-00 --allow-unauthenticated

Instal CRI-O

CRI-O adalah antarmuka runtime kontainer (CRI) yang sesuai dengan OCI. Runtime yang paling umum digunakan adalah Docker. Sejak rilis Kubernetes 1.20, shim antarmuka runtime container (CRI) untuk Docker tidak digunakan lagi. Docker menghasilkan gambar yang bukan gambar OCI (Open Container Initiative).

Kita harus menggunakan runtime container yang sesuai dengan OCI untuk menarik dan menjalankan image OCI, terutama jika Anda menggunakan layanan Kubernetes seperti GKE, EKS, atau AKS.

Anda masih dapat menggunakan buruh pelabuhan, lalu instal menggunakan sudo apt-get install docker.io

Di sini saya akan menggunakan cri-o yang merupakan runtime yang sesuai. Jauhkan versi cri-o yang cocok dengan versi Kubernetes.

Pastikan Anda menginstal versi yang didukung.

Pertama, gunakan modprobe perintah untuk memuat hamparan dan br_netfilter modul pada node Master dan Worker:

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Kemudian, buat file konfigurasi sysctl untuk mengaktifkan penerusan IP dan pengaturan netfilter selama reboot dengan memasukkan baris berikut ke /etc/sysctl.d/99-kubernetes-cri.conf file pada node Master dan Worker:

net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1

Terapkan file konfigurasi dengan menjalankan:

$ sudo sysctl --system

Sekarang, kita tentukan OS Ubuntu dan versi cri-o sebagai berikut:

$ sudo -i
# export OS=xUbuntu_20.04
# export VERSION=1.18

Kemudian jalankan perintah berikut sebagai root pengguna:

# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
# echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

# curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
# curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

# apt update
# apt install cri-o cri-o-runc

Setelah instalasi selesai, conmon Utilitas (Pemantauan Kontainer) telah dipasang. Temukan jalur kesamaan:

$ which conmon

/usr/bin/conmon

Edit /etc/crio/crio.conf file sebagai berikut:

...
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon"         #<-- Edit this line. Around line 108

...

registries = [                     #<-- Edit and add registries. Around line 351
        "docker.io",
        "quay.io",
]
....

Aktifkan cri-o dan pastikan itu berjalan:

$ sudo systemctl daemon-reload
$ sudo systemctl enable crio
$ sudo systemctl start crio
$ sudo systemctl status crio

Keluaran:

● crio.service - Container Runtime Interface for OCI (CRI-O)
   Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-12-10 15:46:37 UTC; 3 days ago
     Docs: https://github.com/cri-o/cri-o
...

Instal Kubelet

Kubelet adalah agen yang berjalan di setiap node dan bertanggung jawab untuk berbicara dengan server API di master node dan mengarahkan runtime container untuk memulai beban kerja.

Konfigurasi kubelet untuk memahami bagaimana berinteraksi dengan cri-o dengan menyisipkan baris berikut ke /etc/default/kubelet berkas:

KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false,RunAsGroup=true" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' --runtime-request-timeout=5m

Pada node Master dan Worker, jalankan perintah berikut untuk menginstal kubelet :

$ sudo apt install -y kubelet=1.18.0-00 --allow-unauthenticated

Instal Kubernetes-cni

Untuk mengaktifkan jaringan container di cluster, kita harus menginstal kubernetes-cni .

Jalankan perintah berikut:

$ sudo apt-get install -y kubernetes-cni --allow-unauthenticated

Menerapkan cluster Kubernetes

Menerapkan cluster Kubernetes melibatkan 2 langkah. Langkah pertama adalah menginisialisasi node master dan langkah kedua adalah menggabungkan node pekerja ke cluster.

Inisialisasi node master

Untuk Menginisialisasi Kubernetes pada Node master , ketik:

$ sudo kubeadm init --apiserver-advertise-address=192.168.1.11 --pod-network-cidr=10.244.0.0/16

Ini akan memakan waktu beberapa menit untuk menyelesaikannya. Setelah inisialisasi selesai, terminal akan menampilkan output sebagai berikut:

Perhatikan baris untuk bergabung dengan cluster yang ditandai di atas, akan digunakan pada langkah berikutnya untuk menggabungkan node pekerja ke cluster.

Sekarang, jalankan perintah berikut untuk membuat direktori konfigurasi Kubernetes pada node Master:

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

Selanjutnya, terapkan jaringan pod ke cluster:

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Memverifikasi bahwa semua komponen Control-plane telah berhasil diinstal:

$ kubectl get pod --all-namespaces

Gabung node pekerja ke cluster

Sekarang login node pekerja dan gabungkan node pekerja ke cluster.

Pada mesin node pekerja, jalankan perintah berikut:

$ sudo kubeadm join 192.168.1.11:6443 --token 9ii02d.nsmrmu1asascv2yg \
    --discovery-token-ca-cert-hash sha256:1104bf70b03a2d030ffc0a462f9dbcbcdd9975393e9a9ac2a1f18500f1b6b74e

Setelah proses bergabung selesai, kembali ke node Master, dan jalankan:

$ kubectl get node
NAME     STATUS   ROLES    AGE     VERSION
node-1   Ready    master   2m37s   v1.18.0
node-2   Ready    none     22s     v1.18.0

Untuk mendapatkan informasi lebih lanjut tentang node, ketik:

$ kubectl get node -owide
NAME     STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
node-1   Ready    master   9h    v1.18.0   10.2.0.4              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4
node-2   Ready    none     9h    v1.18.0   10.2.0.5              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4

Outputnya menunjukkan detail master node dan node yang telah bergabung dengan cluster.

Baca Juga:Cara Install Kubernetes Lokal Menggunakan Vagrant/Minikube

Kesimpulan

Seiring dengan semakin populernya containerisasi, kebutuhan untuk mengelola beban kerja dan layanan dalam container membuat Kubernetes sangat populer. Semua sebagian besar penyedia cloud besar mulai mendukung Kubernetes terkelola yang membuat hidup lebih mudah.

Kubernetes sepenuhnya gratis dan dapat diunduh kapan saja dari repositorinya. Semoga Anda menikmati menginstal Kubernetes di Ubuntu. Anda dapat mencoba menerapkan aplikasi seperti MySQL atau WordPress di kluster K8.

Terima kasih telah membaca dan silakan tinggalkan saran Anda di bagian komentar di bawah.


Ubuntu
  1. Cara Menginstal Odoo di Ubuntu

  2. Cara menginstal R di Ubuntu 16.04

  3. Cara Menginstal Go di Ubuntu 18.04

  1. Cara Menginstal Maven di Ubuntu

  2. Cara Menginstal Anggur di Ubuntu

  3. Cara Menginstal Ruby di Ubuntu 20.04

  1. Cara Menginstal Putty di Ubuntu

  2. Cara Menginstal Ruby di Ubuntu 18.04

  3. Cara Menginstal Pip di Ubuntu 18.04