Yungen's blog

kubernetes local dev

Introduction

在開發 kubernetes 相關的程式時為了確保程式能正確運行,需要一個 kubernetes 環境方便我們測試。我們不太可能每次測試都要另外開一個 gke ,太麻煩且浪費錢了,所以我們需要一些工具幫助我們在本地端架設 kubernetes cluster 來測試。

在本地端架設 kubernetes 有許多種方法下面列舉出一些較多人使用的工具

接下來會介紹如何安裝以及使用 minikube 以及 rancherdesktop

minikube

Prerequisite

安裝 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

安裝 skaffold

參考 官網

指令

1skaffold init
1skaffold dev
1skaffold

local cluster 設定

1build:
2  local:
3    push: false

#Posts