iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
DevOps

從0開始學習DevOps,並部署CICD至Java專案中系列 第 28

使用Docker Dektop或Minikube下載Kubernetes、安裝kubernetes-dashboard

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20231013/20162058GLkePPG1vX.png

什麼是Kubernetes?

Kubernetes 又簡稱為K8S,是一個開源的系統,能夠達到容器化部署服務,可以用來做自動化部屬CICD、管理多個容器,當容器擴展時,可以更有效率的建置與擴充調整容器。

或是當需要管理多個容器的服務時,可以有助於管控當一個服務停止時,趕快轉換另一個服務啟動。

K8s有以下特性

  • 自動化部署和擴展: 自行定義應用程序的組件,以及之間的依賴和擴展規則,自動化部屬創建新容器,並刪除現有容器,並將所有資源用於新容器。
  • 自行修復: 可以自動檢測應用程序或者其組件的狀態,如果某個組件故障,會自動替换或者重新啟動,確認效用提高。
  • 服務負載均衡: 可以將流量分配到應用程序的不同副本上,確保各個副本平均分擔負載,進而讓服務更加穩定。
  • 密鑰和配置管理: 管理敏感信息,例如密碼、API密鑰、OAuth令牌、ssh等,可以不用重建容器image,來達成部署和更新配置。

其他詳細介紹可以參閱官方


使用Docker Dektop下載Kubernetes / 安裝Minikube 兩者方式可以擇一即可

使用Docker Dektop下載Kubernetes

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介面中

https://ithelp.ithome.com.tw/upload/images/20231013/20162058QnlCC9eQuT.png

選擇install

https://ithelp.ithome.com.tw/upload/images/20231013/20162058s3hihAZu5a.png

下載成功會看到左下方會多出Kubernetes的圖案

https://ithelp.ithome.com.tw/upload/images/20231013/20162058PPFtA1vNKE.png

下指令確認是否運行正常 kubectl get nodes

https://ithelp.ithome.com.tw/upload/images/20231013/20162058KSUn4NjKm1.png

上方如果有勾選Show system containers (advanced) ,會出現K8s的Container,跟Docker Container放在一起。

https://ithelp.ithome.com.tw/upload/images/20231013/20162058YeRndY42ax.png


安裝可視化的介面 kubernetes-dashboard

官方 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

https://ithelp.ithome.com.tw/upload/images/20231013/20162058koBPpSaEaX.png

使用指令查看目前Pod運行狀況,READY 1/1時表示已準備完成,可以拜訪頁面了

kubectl get pod -n kubernetes-dashboard

https://ithelp.ithome.com.tw/upload/images/20231013/20162058k83L8xHY6y.png

運行kubernetes-dashboard

使用 kubectl proxy,就可以用localhost:8001瀏覽頁面

https://ithelp.ithome.com.tw/upload/images/20231013/20162058q8ujif2ZSr.png

使用 localhost:8001,只能看到根路徑,要使用以下URL才可以拜訪登入頁面

http://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

https://ithelp.ithome.com.tw/upload/images/20231013/2016205861QmVlxLoe.png

使用Token登入,要取得Token前,需要先創建一個使用者

創建一個dashboard使用者admin,新增一個檔案admin-user.yaml

創建使用者取得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

https://ithelp.ithome.com.tw/upload/images/20231013/20162058sFagwegdZb.png

獲取該使用者的Token

以下這種方式產生的token時效性很短,大約只有一小時,等於每次都要重新產生token

kubectl create token admin-user -n kubernetes-dashboard

使用以下方式可以取得較長時間性的token,--duration=<time> 時間自行定義(目前測試只有default的namespace)

kubectl create token default --duration=488h --output yaml

會顯示建立時間,以及有效時間到什麼時候

https://ithelp.ithome.com.tw/upload/images/20231013/20162058QYnKbWyEKQ.png

就會看到console有一大串的token,請複製貼上登入

https://ithelp.ithome.com.tw/upload/images/20231013/20162058BfqM02hSH7.png

把token貼上到kubernetes-dashboard頁面登入

https://ithelp.ithome.com.tw/upload/images/20231013/201620587sWEewd6Ua.png

這樣就順利成功登入頁面囉!

https://ithelp.ithome.com.tw/upload/images/20231013/20162058CRHso1SbfJ.png


安裝Minikube

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

https://ithelp.ithome.com.tw/upload/images/20231013/201620580UbECQbibH.png


上一篇
CI:建立Jenkins Pipeline結合專案項目:Github pull / package / SonarQube/Docker build / push Harbor
下一篇
Kubernetes的組成與相關指令操作、新增Ingress並取得連線
系列文
從0開始學習DevOps,並部署CICD至Java專案中30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言