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