Cara Install MicroK8s Kubernetes Cluster di Centos 8

MicroK8s adalah penerapan Kubernetes upstream bersertifikat CNCF yang berjalan sepenuhnya di workstation atau perangkat edge .

ia menjalankan semua layanan Kubernetes secara native ( virtual) sambil mengemas seluruh kumpulan pustaka dan biner yang diperlukan.

Instalasi dibatasi oleh seberapa cepat Anda dapat mengunduh beberapa ratus megabyte dan penghapusan MicroK8 Sumber: UBuntu

Berikut adalah panduan yang akan kita Selsaikan satu persatu :

  • Instal cluster Kubernetes menggunakan MicroK8s
  • mengaktifkan add-on inti Kubernetes seperti dns dan dashboard
  • Menerapkan pod dan menambahkan node baru
  • Konfigurasi penyimpanan
  • Aktifkan logging, prometheus dan pemantauan Grafana

untuk memulai panduan Yang kita perlukan hanyalah Distribusi Linux dengan dukungan untuk Snap dan menggunakan CentOS 8.

1. Update Server dan Install Snap

Untuk memulai platform yang bersih dan siap, kita akan memperbarui server terlebih dahulu, pertama Epel Repository ditambahkan kemudian paket snap dari Epel diinstal. Jalankan perintah di bawah ini untuk menginstalnya :

sudo dnf install epel-release -y
sudo dnf update
sudo dnf -y install snapd

Disable Selinux

Jika Anda memiliki SELinux dalam mode aktif, matikan atau gunakan mode Permisif terlebih dahulu.

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Setelah paket selesai dipasang, unit systemd yang mengelola soket komunikasi snap utama harus diaktifkan terlebih dahulu:

sudo systemctl enable --now snapd.socket

Selanjutnya, untuk mengaktifkan dukungan snap, masukkan berikut ini untuk membuat tautan simbolis antara / var / lib / snapd / snap dan / snap lalu tambahkan snap ke variabel PATH

sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/mysnap.sh

Setelah itu, keluar dan masuk kembali atau mulai ulang sistem Anda untuk memastikan jalur snap diperbarui dengan benar. Dan snap sekarang akan dipasang. Untuk mengujinya, kita dapat mencari paket dan pastikan berfungsi seperti yang diharapkan:

$ snap find microk8s

Name      Version  Publisher   Notes    Summary
microk8s  v1.19.0  canonical✓  classic  Lightweight Kubernetes for workstations and appliances

2. Install Install MicroK8s di CentOS 8

Sekarang setelah server kita perbarui dan Snap diinstal, berikutnya kita siap untuk menginstall MicroK8 dengan nyaman dan mulai menggunakannya untuk menguji dan menjalankan aplikasi dengan cara kontainer. Untuk menginstal MicroK8s, jalankan perintah snap sederhana di bawah ini :\

$ sudo snap install microk8s --classic
microk8s v1.19.0 from Canonical✓ installed

Jika Anda tidak menambahkan –classic switch, Anda akan mendapatkan error. Jadi silakan tambahkan.

Untuk dapat menjalankan perintah microk8s sebagai pengguna sudo, Anda harus menambahkan pengguna ke grup microk8s lalu keluar dan masuk kembali. Tambahkan pengguna seperti yang diilustrasikan di bawah ini:

sudo usermod -aG microk8s $USER
sudo chown -f -R $USER ~/.kube

Setelah izin diterapkan, keluar dan masuk kembali.

Setelah itu kita dapat melihat snap yang terpasang

$ snap list

Name      Version      Rev   Tracking       Publisher   Notes  
core      16-2.45.3.1  9804  latest/stable  canonical✓  core   
microk8s  v1.19.0      1668  latest/stable  canonical✓  classic

Untuk keperluan menambahkan node baru nanti, kita perlu membuka port di server. Ini berlaku jika Anda menjalankan firewall di server Anda. Tambahkan port sebagai berikut:

sudo firewall-cmd  --permanent --add-port={10255,12379,25000,16443,10250,10257,10259,32000}/tcp
sudo firewall-cmd --reload

3. Konfigurasi MicroK8s di CentOS 8

MicroK8s sekarang diinstal di server dan kami siap untuk beraksi. Untuk mengelola MicroK8s (yaitu mulai, status, hentikan, aktifkan, nonaktifkan, daftar node, dll.), Anda cukup melakukan hal berikut:

#####Check Status#####

$ microk8s status

microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none

#####Stop MicroK8s#####
$ microk8s stop

stop of [microk8s.daemon-apiserver microk8s.daemon-apiserver-kicker microk8s.daemon-cluster-agent microk8s.daemon-containerd microk8s.daemon-contr…Stopped

#####Start MicroK8s#####

$ microk8s start

Started.

#####List MicroK8s Nodes#####

$ microk8s kubectl get nodes

NAME     STATUS   ROLES    AGE    VERSION
master   Ready    <none>   2m6s   v1.19.0-34+1a52fbf0753680

#####Disable MicroK8s#####

$ sudo snap disable microk8s

#####Enable MicroK8s#####

$ sudo snap enable microk8s

MicroK8s telah diinstal dan menanggapi perintah tanpa masalah. Mari kita lanjutkan ke langkah selanjutnya.

4. Deploy Pods and enable dashboard

Di sini, kita akan melanjutkan dan menerapkan pod dan mengaktifkan dasbor agar pekerjaan kami disederhanakan dengan visual yang bagus. Mari kita terapkan sampel pod redis sebagai berikut:

$ microk8s kubectl create deployment my-redis --image=redis
deployment.apps/my-redis created

daftar pod yang di deploy

$ microk8s kubectl get pods --all-namespaces

NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE  
kube-system   calico-kube-controllers-847c8c99d-f7zd2   1/1     Running   2          3h48m
kube-system   calico-node-xxhwx                         1/1     Running   2          3h48m
default       my-redis-56dcdd56-tlfpf                   1/1     Running   0          70s

Jika Anda ingin masuk ke instance redis, lanjutkan seperti yang diilustrasikan di bawah ini:

$ microk8s kubectl exec -it my-redis-56dcdd56-tlfpf -- bash
root@my-redis-56dcdd56-tlfpf:/data#

Untuk memeriksa log dari sebuah pod, pastikan Anda menyertakan namespace masing-masing karena hanya akan memeriksa namespace “default” jika tidak disediakan.

$ microk8s kubectl logs my-redis-56dcdd56-tlfpf -n default

1:C 14 Sep 2020 12:59:32.350 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 14 Sep 2020 12:59:32.350 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 14 Sep 2020 12:59:32.350 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 14 Sep 2020 12:59:32.352 * Running mode=standalone, port=6379.
1:M 14 Sep 2020 12:59:32.352 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower 
value of 128.
1:M 14 Sep 2020 12:59:32.352 # Server initialized
1:M 14 Sep 2020 12:59:32.352 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
1:M 14 Sep 2020 12:59:32.352 * Ready to accept connections

Selanjutnya, mari kita aktifkan dasbor dan dns untuk menampilkan sistem yang bekerja. Aktifkan sebagai berikut :

$ microk8s enable dns dashboard

Enabling Kubernetes Dashboard
Enabling Metrics-Server
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created

kita membutuhkan token untuk masuk ke Dashboard. Untuk mengambil token, keluarkan dua perintah di bawah ini.

$ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token

Name:         default-token-gnj26
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: default
              kubernetes.io/service-account.uid: 40394cbe-7761-4de9-b49c-6d8df82aea32

Type:  kubernetes.io/service-account-token

Data

ca.crt:     1103 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InBOVTc3NVd5ZDJHT1FYRmhWZFJ5ZlBVbVpMRWN5M1BEVDdwbE9zNU5XTDgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLWduajI2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI0MDM5NGNiZS03NzYxLTRkZTktYjQ5Yy02ZDhkZjgyYWVhMzIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.vHqwKlMGX650dTuChwYWsPYZFH7zRhRjuh-BEPtgYYPfrayKU08DSC5v3CixkrZH-wXZydOPit50H5SfCZPwY1TqDNCFgbz--0GnB7GhgwSoK4laXpr42Al7EBgbMWfUEAtnWXVkObUYzF31Sfhac2AnPIBp2kFlqJt8M03uoperJuFLl5x-fDacGrcXTQqvY2m5K1oE4zE38vtaJXdzgNfBMbtUrMneihoFczzOzwPLxzJJ4eZ7vAz1svG6JHO5PDDYbV0gded0egoLQkhu4Saavf8ILUjupJdYywA2VCqB6ERrrElMBHs5tYfckfyi4f6eR59_EZkf7-neCDWTAg

Salin token dan simpan di tempat yang aman.

Selanjutnya, Anda perlu terhubung ke layanan dasbor. Sementara snap MicroK8s akan memiliki alamat IP di jaringan lokal Anda (IP Cluster dari layanan kubernetes-dashboard), Anda juga dapat mencapai dashboard dengan meneruskan portnya ke port gratis di host Anda dengan:

microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard --address 0.0.0.0 30560:443

Perhatikan bahwa kita telah menambahkan –address 0.0.0.0 sehingga dapat dijangkau dari IP mana pun alih-alih secara lokal (127.0.0.1) di server. Sekarang Anda akan dapat mengakses dasbor melalui port 30560. Pastikan untuk mengaktifkan port ini di firewall jika Anda sudah menyiapkannya.

sudo firewall-cmd --permanent --add-port=30560/tcp
sudo firewall-cmd --reload

Sekarang buka browser Anda dan arahkan ke ip atau FQDN server Anda. Yaitu https: // [ip atau FQDN]: 30560. Dan halaman login berikut harusnya tampil. Anda akan melihat bahwa ini membutuhkan token atau file Kubeconfig. Kami sudah membuat token seperti di atas (Ambil token). Cukup salin dan tempel di halaman login.

Selesai, anda juga bisa mengakses dashboardnya.

5. Menambahkan Node di Cluster

Sejauh ini, kita telah mengerjakan node sigle (server) dan jika Anda ingin menskalakan dan mendistribusikan aplikasi Anda pada dua atau lebih node (server), maka ini akan membawa Anda ke sana. Untuk menambahkan node lain ke cluster Anda, Anda hanya perlu menginstal Snap dan MicroK8S di atasnya karena sudah dibahas pada Langkah 1 dan Langkah 2. Ikuti Langkah 1 dan Langkah 2 di server CentOS 8 baru Anda lalu lanjutkan di bawah.

node-01 ~ $ export OPENSSL_CONF=/var/lib/snapd/snap/microk8s/current/etc/ssl/openssl.cnf
node-01 ~ $ sudo firewall-cmd --add-port={25000,10250,10255}/tcp --permanent
node-01 ~ $ sudo firewall-cmd --reload

Pada Master Node (Yang pertama kita instal), jalankan perintah berikut untuk mendapatkan perintah token dan join

$ microk8s add-node

From the node you wish to join to this cluster, run the following:
microk8s join 172.26.24.237:25000/dbb2fa9e23dfbdda83c8cb2ae53eaa53

Seperti yang dapat Anda amati dari atas, kita sekarang memiliki perintah untuk dijalankan di node yang baru untuk bergabung dengan cluster, salin perintah, masuk ke node baru Anda dan jalankan seperti yang ditunjukkan di bawah ini:

node-01 ~ $ microk8s join 172.26.24.237:25000/dbb2fa9e23dfbdda83c8cb2ae53eaa53

Contacting cluster at 172.26.16.92
Waiting for this node to finish joining the cluster. ..

6. Konfigurasi Penyimpanan

MicroK8s hadir dengan penyimpanan bawaan yang hanya perlu diaktifkan. Untuk mengaktifkan penyimpanan, tambahkan / lib86 direktori ke jalur variabel lingkungan LD_LIBRARY_PATH kemudian aktifkan penyimpanan seperti di bawah ini pada node master:

$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/lib64"
$ microk8s enable storage

deployment.apps/hostpath-provisioner created
storageclass.storage.k8s.io/microk8s-hostpath created
serviceaccount/microk8s-hostpath created
clusterrole.rbac.authorization.k8s.io/microk8s-hostpath created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-hostpath created
Storage will be available soon

Untuk memeriksa apakah penyimpanan telah diaktifkan, kita harus memeriksa pod kita dan memastikan bahwa pod hostpath-provisioner telah dimulai.

$ microk8s kubectl get pods --all-namespaces

NAMESPACE     NAME                                         READY   STATUS    RESTARTS   AGE
kube-system   kubernetes-dashboard-7ffd448895-ht2j2        1/1     Running   2          22h
kube-system   dashboard-metrics-scraper-6c4568dc68-p7q6t   1/1     Running   2          22h
kube-system   metrics-server-8bbfb4bdb-mgddj               1/1     Running   2          22h
kube-system   coredns-86f78bb79c-58sbs                     1/1     Running   2          22h
kube-system   calico-kube-controllers-847c8c99d-j84p5      1/1     Running   2          22h
kube-system   calico-node-zv994                            1/1     Running   2          21h
kube-system   hostpath-provisioner-5c65fbdb4f-llsnl        1/1     Running   0          71s <==

Konfirmasikan StorageClass yang dibuat dengan menjalankan perintah di bawah ini:

$ microk8s kubectl get storageclasses

NAME                          PROVISIONER            RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
microk8s-hostpath (default)   microk8s.io/hostpath   Delete          Immediate           false                  8m42s

Seperti yang Anda lihat, ada kelas penyimpanan bernama “microk8s-hostpath” yang dibuat. Ini penting karena nama ini akan digunakan saat membuat PersistentVolumeClaims seperti yang akan diilustrasikan selanjutnya.

Membuat PersistentVolumeClaim

Untuk membuat sampel PersistentVolumeClaim kami, cukup buka editor favorit Anda dan tambahkan baris yaml berikut. Perhatikan microk8s-hostpath di storageClassName.

$ nano sample-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elk-data-1
spec:
  storageClassName: microk8s-hostpath
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

Kemudian buat PVC dengan menjalankan perintah create seperti yang diilustrasikan di bawah ini. Anda akan melihat pesan yang dibuat dicetak.

$ microk8s kubectl create -f sample-pvc.yaml

persistentvolumeclaim/elk-data-1 created

Untuk mengonfirmasi bahwa PVC kami telah dibuat, cukup berikan perintah MicroK8S ajaib seperti di bawah ini. Dan ya, PVC benar-benar dibuat.

$ microk8s kubectl get pvc

NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
elk-data-1   Bound    pvc-fe391d65-6909-4c76-a6c9-87b3fd5a58a1   2Gi        RWO            microk8s-hostpath   5s 

Dan karena MicroK8S mengirimkan Volume Persisten secara dinamis, PVC kami akan membuat Volume Persisten seperti yang dapat dikonfirmasi oleh perintah di bawah ini.

$ microk8s kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS       REASON   AGE
pvc-fe391d65-6909-4c76-a6c9-87b3fd5a58a1   2Gi        RWO            Delete           Bound    default/elk-data-1   microk8s-hostpath            5m 39s

1 Shares:
Leave a Reply

Your email address will not be published.

You May Also Like
Read More

cara menginstal plesk di centos 7

Daftar Isi Konten Plesk DocumentationOne-Click Installermembuka Ports untuk PleskAdd Atomic Repo Power (optional)Loggin in for the first timeCorrecting…
Read More

Cara instal webuzo di Centos 7

Webuzo adalah  kontrol klien tunggal / Direktur Aplikasi yang mengizinkan klien untuk menyampaikan aplikasi web utama seperti WordPress,…
Read More

cara instal nginx di debian 9

mengapa kali ini saya share nginx ? Salah satu kelebihan dari Nginx dibanding dengan Apache adalah Nginx mampu…