kubernetes local dev
Introduction
在開發 kubernetes 相關的程式時為了確保程式能正確運行,需要一個 kubernetes 環境方便我們測試。我們不太可能每次測試都要另外開一個 gke ,太麻煩且浪費錢了,所以我們需要一些工具幫助我們在本地端架設 kubernetes cluster 來測試。
在本地端架設 kubernetes 有許多種方法下面列舉出一些較多人使用的工具
接下來會介紹如何安裝以及使用 minikube 以及 rancherdesktop
minikube
Prerequisite
- 安裝 docker 或 nerdctl
- 安裝 kubectl
安裝 minikube
mac
1brew install minikube
linux(WSL)
1curl -LO <https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64>
2sudo install minikube-linux-amd64 /usr/local/bin/minikube
更多安裝方法請參考 https://minikube.sigs.k8s.io/docs/start/
啟動
1minikube start
結束
1minikube stop
檢查 kubectl context
1kubectl config get-contexts
設定 kubectl context
1kubectl config use-context <context-name>
rancher desktop
Prerequisite
- 無
安裝 rancher desktop
- 直接下載
1brew install --cask rancher
檢查 kubectl context
1kubectl config get-contexts
設定 kubectl context
1kubectl config use-context <context-name>
build and deploy
minikube
1eval $(minikube docker-env)
確定 docker context
1docker context list
deploy
kubernetes.yaml
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: kube-localdev-example
5 labels:
6 app: localdev-example
7spec:
8 selector:
9 matchLabels:
10 app: localdev-example
11 template:
12 metadata:
13 labels:
14 app: localdev-example
15 spec:
16 containers:
17 - name: kube-localdev-example
18 image: kube-localdev-example
19 ports:
20 - containerPort: 8080
21 imagePullPolicy: Never
注意 imagePullPolicy
必須設定為 Never 或 IfNotPresent,設定為 Always (預設)kubernetes 會去 dockerhub pull 你的 image
1kubectl apply -f kubernetes.yaml
skaffold
Prerequisite
- 一個 kubernetes cluster
安裝 skaffold
參考 官網
指令
1skaffold init
1skaffold dev
1skaffold
local cluster 設定
1build:
2 local:
3 push: false