在學習新的技術項目,最麻煩的就是如何快速安裝相關環境,讓團隊同仁可以快速上手的最關鍵的原因之一。而學習 Kubernetes 也不例外,如果要在本地環境中搭建 Kubernetes 開發環境,需要安裝 Docker、Kubernetes、Minikube、Kubectl 等相關工具,這些工具的安裝和配置過程都比較繁瑣,而且容易出錯。能不能有快速地繞過這些方式,快速在自己的電腦打造 Kubernetes 開發環境呢?除了 Minikube,你可能也聽過 k3s、kind 等工具,不過這些工具對於新人來說,還是相當困難。今天要介紹的是一個新的工具 Colima,它可以讓您在本地環境中運行輕量級的虛擬機器,並在虛擬機器中運行 Kubernetes 叢集。
什麼是 Colima
Colima 是一個基於 Docker 的輕量級虛擬化工具,它可以讓您在本地環境中運行輕量級的虛擬機器。您可以使用 Colima 在本地環境中搭建和運行 Kubernetes 叢集。
Colima 提供了一個命令行界面,可以通過簡單的命令來管理虛擬機器和容器。它允許您在本地運行一個或多個輕量級虛擬機器,並在虛擬機器中運行 Kubernetes 叢集。
使用 Colima 搭建 Kubernetes 環境的過程相對簡單,它會自動處理虛擬機器和 Kubernetes 的安裝和配置。您只需要運行相應的命令,Colima 就會在虛擬機器中部署 Kubernetes,並為您提供 Kubernetes 的管理命令和用戶界面。
Colima 提供了一種快速且輕量級的方式來在本地機器上運行 Kubernetes,特別適合開發和測試的需求。請注意,Colima 目前處於開發者預覽階段,可能還不適用於生產環境。如果您打算在生產環境中運行 Kubernetes,建議考慮使用正式支持的工具或托管服務,像是可以選擇使用托管 Kubernetes 叢集的服務提供商,如 Google Kubernetes Engine (GKE)、Amazon Elastic Kubernetes Service (EKS)、Microsoft Azure Kubernetes Service (AKS)
Colima 專案目標就是在 MacOS 用最小力氣安裝好 Container Runtime 環境。名稱 Colima 也就是 Container in Lima。
安裝 Colima
Colima 可以在 Linux、macOS 上運行。您可以在 GitHub 上找到 Colima 的安裝指南。
1
2
3
4
| # Stable Version
brew install colima
# Development Version
brew install --HEAD colima
|
除了安裝 colima 外,要使用 docker runtime 還需要安裝 brew install docker
。
使用 Colima
Colima 提供了一個命令行界面,可以通過簡單的命令來管理虛擬機器和容器。它允許您在本地運行一個或多個輕量級虛擬機器,並在虛擬機器中運行 Kubernetes 叢集。
啟動 Colima
您可以使用 colima start
命令來啟動 Colima。如果您第一次運行此命令,它會自動下載並安裝 Colima 的 Docker 映像。如果您已經安裝了 Colima,它會啟動 Colima。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Start Colima
colima start
# 編輯設定檔案,並重新啟動
colima start --edit
# 使用 containerd 作為 runtime
colima start --runtime containerd
# 啟動 Kubernetes
colima start --kubernetes
# 啟動 Kubernetes 並使用 containerd 作為 runtime
colima start --runtime containerd --kubernetes
# 指定 CPU、記憶體、磁碟大小
colima start --cpu 4 --memory 8 --disk 100
# 指定 DNS
colima start --dns 1.1.1.1 --dns 8.8.8.8
|
預設啟動的是 default
profile,如果要起動更多的 profile,可以透過 --profile
參數指定。
1
2
| # Start Colima
colima start --profile myprofile
|
編輯 Colima 設定檔案
您可以使用 colima edit
命令來編輯 Colima 的設定檔案。如果您第一次運行此命令,它會自動創建一個新的設定檔案。如果您已經有一個設定檔案,它會打開現有的設定檔案。
1
2
| # 路徑 $HOME/.colima/default/colima.yaml
vi $HOME/.colima/default/colima.yaml
|
其中要注意的是 runtime
預設是 docker
,如果要使用 containerd
,需要修改 runtime
的值。
1
2
3
| # Container runtime to be used (docker, containerd).
# Default: docker
runtime: docker
|
或者是要增加公司內部 Private Registry,可以透過 docker
設定。
1
2
3
4
5
| # EXAMPLE - add insecure registries
docker:
insecure-registries:
- myregistry.com:5000
- host.docker.internal:5000
|
停止/刪除 Colima
要停止 Colima,您可以使用 colima stop
命令。要刪除 Colima,您可以使用 colima delete
命令。
1
2
3
4
| # Stop Colima
colima stop
# Delete Colima
colima delete
|
預設的 Profile 是 default
,如果要刪除特定的 Profile,可以透過 --profile
參數指定。
1
2
| # Delete Colima
colima delete --profile myprofile
|
查看 Colima 狀態
您可以使用 colima status
命令來查看 Colima 的狀態。
1
2
| # Status Colima
colima status <profile>
|
其中 profile
可以省略,預設是 default
。
起動 Kubernetes 環境
透過上面教學,可以用底下指令快速啟動 Kubernetes 環境。
1
2
| # Start Colima
colima start --kubernetes <profile>
|
底下是啟動後的結果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| $ colima start --runtime docker --kubernetes foobar
INFO[0000] starting colima [profile=foobar]
INFO[0000] runtime: docker+k3s
INFO[0000] preparing network ... context=vm
INFO[0000] creating and starting ... context=vm
INFO[0108] provisioning ... context=docker
INFO[0108] starting ... context=docker
INFO[0113] provisioning ... context=kubernetes
INFO[0114] downloading and installing ... context=kubernetes
INFO[0379] loading oci images ... context=kubernetes
INFO[0385] starting ... context=kubernetes
INFO[0389] updating config ... context=kubernetes
INFO[0390] Switched to context "colima-foobar". context=kubernetes
INFO[0390] done
|
可以透過 kubeconfig 檔案來查看 Kubernetes 環境。
1
2
3
| CURRENT NAME CLUSTER AUTHINFO NAMESPACE
colima colima colima
* colima-foobar colima-foobar colima-foobar
|
可以看到如果是 default
profile 名稱就是 colima
,如果是 foobar
profile 名稱就是 colima-foobar
。可以透過 kubectl config use-context
切換不同的 profile。我們先建立一個 Deployment
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:latest
name: nginx
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
name: nginx-nodeport
spec:
type: NodePort
selector:
app: nginx
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 80
|
使用 kubectl apply
指令來建立 Deployment。
1
| kubectl apply -f nginx.yaml
|
查看狀態
1
2
3
| $ kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 104s
|
大家可以就自己的情境來建立 Service 環境。
心得
Colima 提供了一個快速且輕量級的方式來在本地機器上運行 Kubernetes,特別適合開發和測試的需求。如果你想要在本地環境中搭建 Kubernetes 開發環境,可以試試看 Colima,它可以讓您在本地環境中運行輕量級的虛擬機器,並在虛擬機器中運行 Kubernetes 叢集。開發者專心在寫 Yaml 即可。有時候團隊成員想要試試看 Kubernetes,但是又不想要花太多時間在安裝和配置 Kubernetes,這時候 Colima 就是一個不錯的選擇。當然也可以選擇 Docker Desktop 或者是 Minikube 或 Rancher Desktop,但是 Colima 的優勢在於它的輕量級,而且它的安裝和配置過程也比較簡單。