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