Daftar Isi Konten
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
[email protected]:/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