前言
本文為〈Kubernetes 官方文件〉的學習筆記。
環境
- macOS
- minikube
更新
使用 Homebrew 安裝 minikube。
1 | brew install minikube |
創建叢集
啟動 minikube 並創建一個叢集(Cluster)。
1 | minikube start |
使用 kubectl
指令與叢集進行互動。以下使用 echoserver
映像檔創建一個 Kubernetes Deployment,並開放在 8080 埠號。
1 | kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 |
要訪問 hello-minikube
這個 Deployment,需要將其做為 Service 公開:
1 | kubectl expose deployment hello-minikube --type=NodePort --port=8080 |
- 參數
--type
用來指定 Service 的類型。
檢查 Pod 運行狀態。
1 | kubectl get pod |
- 狀態
STATUS
為ContainerCreating
表示 Pod 仍在創建中。 - 狀態
STATUS
為Running
表示 Pod 正在運行中。
獲取 Service 的 URL。
1 | minikube service hello-minikube --url |
刪除 hello-minikube
Service。
1 | kubectl delete services hello-minikube |
刪除 hello-minikube
Deployment。
1 | kubectl delete deployment hello-minikube |
停止本地 minikube 叢集:
1 | minikube stop |
刪除本地 minikube 叢集:
1 | minikube delete |
管理叢集
使用以下指令,指定 Kubernetes 版本。
1 | minikube start --kubernetes-version v1.19.0 |
使用以下指令,指定 VM 驅動。
1 | minikube start --vm-driver=<driver_name> |
使用以下指令,將 shell 指向 minikube 的 Docker 守護行程(daemon)。Docker Client 會把 build context 送往 minikube 內的 Docker 守護行程進行打包。打包出來的映像檔會存在 minikube 虛擬機內,如此一來可以加速本地端的實驗。
1 | eval $(minikube docker-env) |
現在可以使用 Docker 與 minikube 虛擬機內的 Docker 守護行程進行通訊。
1 | docker ps |
設定
在 minikube start
指令中,使用 --extra-config
參數,可以調整 Kubernetes 設定。
例如要在 Kubelet
上將 MaxPods
設定調整為 5,可以使用以下參數:
1 | --extra-config=kubelet.MaxPods=5 |
若要將 apiserver
的 AuthorizationMode
設定調整為 RBAC(一種身分驗證方法),使用以下參數:
1 | --extra-config=apiserver.authorization-mode=RBAC |
與叢集互動
kubectl
使用 minikube start
指令時,會創建一個名為 minikube
的 kubectl
上下文。此上下文包含與 minikube 叢集通訊的配置。使用以下指令,查看當前的 kubectl
上下文。
1 | kubectl config current-context |
UI 介面
使用以下指令,開啟 UI 介面。
1 | minikube dashboard |
網路
minikube 虛擬機透過 host-only IP 開放給主機系統,可以使用以下指令獲得此 IP:
1 | minikube ip |
在 NodePort 上,可以透過此 IP 位址訪問任何類型同為 NodePort 的服務。要確定服務的 NodePort,使用以下指令:
1 | kubectl get service $SERVICE --output='jsonpath="{.spec.ports[0].nodePort}"' |
Persistent Volume
minikube 支援 hostPath
類型的 Persistent Volume,它們會映射為 minikube 虛擬機内的目錄。以下是 Persistent Volume 的配置範例:
1 | apiVersion: v1 |