microk8s介紹及基本使用

官網https://microk8s.io

Kubernetes (K8s) 是目前有名的「容器化應用程式」管理工具,能方便的做到自動部署、擴充和管理的需求,而有時在開發或是一些需求時,會有需要使用到輕量 Kubernetes 的需求,這時會有一些選擇例如 : Minikube、K3s、Desktop Docker… 等,而這篇文章要介紹的是由 ubuntu 維護的 MicroK8s,其特點是輕量、不需要額外安裝虛擬機,所以在開發的時候能夠不佔用多餘的系統資源,並且能夠透過指令快速的重啟與關閉。

安裝microk8s

snap install kubectl --classic 
sudo snap install microk8s --classic --channel=1.21

安裝 VirtualBox

sudo apt install -y virtualbox

啟用或禁用 microk8s

snap disable microk8s # 禁用
snap enable microk8s # 啟用

卸載

microk8s.reset
snap remove microk8s

為了不和已經安裝的 kubectl 產生衝突,microk8s 有自己的 microk8s.kubectl 命令

microk8s.kubectl get services

如果本地沒有 kubectl 命令可以增加一個別名snap alias microk8s.kubectl kubectl

取消別名

snap unalias kubectl

API 服務監聽 8080 連接埠

microk8s.kubectl config view

常用基本指令

microk8s.status: 查看 MicroK8s 狀態與啟用的插件
microk8s.enable: 啟用指定套件
microk8s.disable: 停用指定套件
microk8s.kubectl: 等同 k8s 原生的 kubectl,用來與 kubernetes 互動
microk8s.config: 查看 kubernetes 的設定檔案
microk8s.istioctl: 等於 istioctl 指令,用來與 istio services 互動 (需啟用 istio 套件)
microk8s.inspect: 用來檢查 MicroK8s 安裝與運作狀況
microk8s.reset: 重置 kubernetes 服務
microk8s.stop: 停止 kubernetes 服務
microk8s.start: 啟動 kubernetes 服務

Kubernetes Addons
microk8s 只是最精簡的安裝,所以只有 api-server, controller-manager, scheduler, kubelet, cni, kube-proxy 被安裝運行。額外的服務比如 kube-dns, dashboard 可以通過 microk8s.enable 啟動

dns 啟用 DNS,常用於不同服務之間溝通,強烈建議啟用該套件
dashboard 啟用用來觀看服務運作的儀表板 (含 grafana 與 influxdb
storage 建立一個預設的 storage (會指令本機目錄的 hostpath-provisioner
ingress 建立路口控制器
gpu 將 GPU 啟用給 MicroK8s 使用 (本機需安裝 NVIDIA 驅動程序)
istio 啟用 Istio 服務,啟用後可以使用 microk8s.istioctl 指令.
registry 建立一個 private 的 docker registry (開在 localhost:32000).
metrics-server k8s有許多指標數據 監控pod及監控k8s cluster健康狀況

dashboard

microk8s.enable dns dashboard
禁用
microk8s.disable dns dashboard

輸入指令查看 dashboard 所在的 IP

microk8s.kubectl get all --all-namespaces

取得dashboard登入token

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

會看到如下的訊息,而最下面會有一串長長的 token 將他複製下來

Name:         default-token-qjcqr
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: default
              kubernetes.io/service-account.uid: b0e4fe23-b13c-4284-b9f8-4586619e309e

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1103 bytes
namespace:  11 bytes
token:      xxxxx..............................................................

回到瀏覽器,選擇使用 token 登入,並將複製的 token 貼上去後點 [Sign in]

登入後就能透過網頁檢視 Kubernetes 服務狀態

 

檢視 Grafana Dashboard
而要查看 Grafana Dashboard 需要透過 API server proxy 來瀏覽

輸入指令檢視服務所在位置

microk8s.kubectl cluster-info

會顯示服務在跑的位置

Kubernetes master is running at https://127.0.0.1:16443
Heapster is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/heapster/proxy
CoreDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Grafana is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy
上面顯示的訊息顯示 Grafana 在 https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy

不過在用瀏覽器開啟前需要取得登入的帳號密碼

輸入指令取得

microk8s.config

會取得如下的訊息

apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS1tCk1JSURBVENDQWVtZ0F3SUJBZ0lKQU1yaUdNV2VNMjNQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQmN4RlRBVEJnTlYKQkFNTURERXdMakUxTWk0eE9ETXVNVEFlRncweU1EQTJNRGN3TkRBNE16ZGFGdzB6TURBMk1EVXdOREE0TXpkYQpNQmN4RlRBVEJnTlZCQU1NRERFd0xqRTFNaTR4T0RNdU1UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCkFEQ0NBUW9DZ2dFQkFOUUtNS3lwUjJtV3kvd1lsL2U1bGR3QTVrWXNTZDZPUU5CV2t6MndmTHovNFF1RHBkVHIKWlNXKzh3MHJjc25QTEwrWG8waGdueTVLNHdpOHhMWTJ4V253aGpLMUxoUUdhN05RdTJaZStUMXJqYjh0c0MzbwpqM0VlVGIxV3owdUk0NEZsNGlOY09DaE5Ea2FBTzMxOHN5Q0dQKzAvTTM2N0hpemJSWEhQWkRUVEY4RTQzMXYvCkJGbmViYXRuMHFRSitlNTRaRndWTUcySjVaZGRLM0lQOHM2RE1QeUR5Yy8zUGF1VEhVdDlyb0V6TUNZbXVKTlMKeWR5OHRPUnUxUlJtdW1rOHBwbVdJajVOQVFXRElielluMk56QmJTU3o0Znc0aUhiZlYwdTg3d3ZqWmJNTjIzSQpROXBaVE1zNk1Qbm5QNmtaaFVKTDFDTW5nb1p3RXY5V3pBa0NBd0VBQWFOUU1FNHdIUVlEVlIwT1JCWUVGSzB1CkpZUVdLU21GU1EwTHkrVjgyemNqS3hYc01COEdBMVVkSXdRWU1CYUFGSzB1SllRV0tTbUZTUTBMeStWODJ6Y2oKS3hYc01Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxXM21YWlE3SWk3Vi8yWgp1d3BROVFjaGJEZjlPTjlyL24wMTlkaE84NnhWUTRyKzhUSHgwakdiV05MQVhFakRTaFVhMGM5KzZqUjIxZmJkCmdUZ2lBNDBML29MbjdvZVpOQVZtT1ZFWVViQ2xvb1oyT4hKeXlSdEZtVU5xcEFOemRINUY2dG1NQXo3TkF3eVEKSm13S09PdndZVlphbk94S3dTVU0rYWNWOWRET2J1YTRMTy9FUW1KendETE5HNGRoQW1iZGVyd2IwM0dnOEh4cQp2Zm5vZ3I5WndMU2dnMDN4aVM5VUdHWkEweUtqZHVJcXQ4aENqRE9mWEV2ekdBYzhuVE1KKzBJbG8wbmQrN2dvCnFUZTBzdkEvcUVUTFpVOXRWM1FDam9CUWpyM0txRVgvU1d4NnpZTnd0WjRPd3U3ckNueDhmVjk2YU1FZXUwQTgKWHZ3dlRsYz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://192.168.50.65:16443
name: microk8s-cluster
contexts:
- context:
cluster: microk8s-cluster
user: admin
name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
user:
username: admin
password: cWJkNCtoTU50MmhaS2llaE9XeGxKNXI3bk9XcGxrVHFJNXJVWU9rQVI0QT1K

最下面兩行就是登入的帳號密碼

接著使用瀏覽器開啟剛剛看到的 Grafana 網址https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy

就能夠看到 Grafana 的畫面了

參考文章

https://xenby.com/b/254-%E6%95%99%E5%AD%B8-%E8%BC%95%E9%87%8F-kubernetes-microk8s-%E5%AE%89%E8%A3%9D%E8%88%87%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

 

點閱: 8

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料