Kubernetes 又簡稱為K8S,是一個開源的系統,能夠達到容器化部署服務,可以用來做自動化部屬CICD、管理多個容器,當容器擴展時,可以更有效率的建置與擴充調整容器。
或是當需要管理多個容器的服務時,可以有助於管控當一個服務停止時,趕快轉換另一個服務啟動。
使用Docker Dektop下載Kubernetes / 安裝Minikube 兩者方式可以擇一即可
local端直接使用Docker Dektop fro Mac下載即可
Docker for Mac with Kubernetes(官方說明)
Deploy on Kubernetes with Docker Desktop (官方說明)
勾選Enable Kubernetes (就可以完成基本下載)
Show system containers (advanced) → 這個是決定要不要顯示K8s Container在Docker介面中
選擇install
下載成功會看到左下方會多出Kubernetes的圖案
kubectl get nodes
上方如果有勾選Show system containers (advanced) ,會出現K8s的Container,跟Docker Container放在一起。
官方 kubernetes-dashboard release 下載
我下載最新的版本3.0.0失敗,所以我改下載2.7.0版本成功。
找到Installation區塊,直接複製這段貼在console就可以執行了!
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
使用指令查看目前Pod運行狀況,READY 1/1時表示已準備完成,可以拜訪頁面了
kubectl get pod -n kubernetes-dashboard
使用 kubectl proxy
,就可以用localhost:8001瀏覽頁面
使用 localhost:8001,只能看到根路徑,要使用以下URL才可以拜訪登入頁面
http://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
使用Token登入,要取得Token前,需要先創建一個使用者
創建使用者取得token的方式來源自dashboard官方的作法
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
接著cd到該路徑下執行
kubectl apply -f admin-user.yaml
以下這種方式產生的token時效性很短,大約只有一小時,等於每次都要重新產生token
kubectl create token admin-user -n kubernetes-dashboard
使用以下方式可以取得較長時間性的token,--duration=<time>
時間自行定義(目前測試只有default的namespace)
kubectl create token default --duration=488h --output yaml
會顯示建立時間,以及有效時間到什麼時候
就會看到console有一大串的token,請複製貼上登入
這樣就順利成功登入頁面囉!
Minikube也會產生一個自己的集群、跟下載Kubernetes,所以沒有下載docker-desktop的話,可以安裝Minikube。
Minikube可以讓我們在本地環境中運行Kubernetes。
請至官方選擇自己的環境安裝指令。
以下為 macOS / ARM64 / Stable / Homebrew
brew install minikube
啟動Minikube
minikube start
啟用NGINIX Ingress控制器 (下圖1)
minikube addons enable ingress
驗證運行狀態(下圖2)
kubectl get pods -n ingress-nginx