最近在參與社區flink-operator的開發,開發的過程中經常使用到minikube來本地驗證這篇文章記錄下相關使用
安裝
https://minikube.sigs.k8s.io/docs/start/ 需要先安裝docker環境
登錄節點
minikube ssh
調整資源
啟動pod超時
_ Warning FailedScheduling 23s (x2 over 91s) default-scheduler 0/1 nodes are available: 1 Insufficient memory._
直接命令行設置資源
minikube start --cpus 4 --memory 8G
minikube config set cpus N
minikube config set memory N
要先刪除,否則重啟后node還是不變,調整資源后可能需要相應的docker容器也進行調整
https://github.com/eclipse/che/issues/14067
minikube delete
minikube stop
minikube start --cpus 4 --memory 8G
kubectl describe node minikube
拷貝文件
https://minikube.sigs.k8s.io/docs/commands/cp/
本機和minikube node以及node之間都可以拷貝文件
minikube cp ~/TopSpeedWindowing.jar minikube:/tmp/flink/userlib/TopSpeedWindowing.jar
加載鏡像
load之前要先把使用鏡像的pod停止,否則鏡像還在被使用
minikube image load aitozi/flink-java-operator:latest
可以minikube ssh之后查看鏡像id和本地是否一致,這樣可以加快debug流程.
使用問題
刪除crd失敗
第一步首先要刪除所有相關的cr,刪除cr也卡住
通過將finalizer置空刪除
kubectl get flinkdep basic-checkpoint-ha-example -o=json | \
jq '.metadata.finalizers = null' | kubectl apply -f -
這樣apply之后就能刪除了, cr和crd也可以正常刪除了
load 鏡像不生效
在使用過程中遇到如果minikube 節點的node本地磁盤打滿了,此時load鏡像不會報錯,但是load鏡像是不生效的,應該算是個bug吧,需要load完鏡像檢查一下
Mac無法訪問minikube ip
默認使用的是docker driver,但是Mac docker desktop不會創建docker0網橋,所以無法ping通minikube node ip。可以使用vm的方式啟動minikube
https://github.com/kubernetes/minikube/issues/11193
https://stackoverflow.com/questions/63600378/cant-access-minikube-service-using-nodeport-from-host-on-mac
https://docs.docker.com/desktop/mac/networking/#known-limitations-use-cases-and-workarounds
測試不同域名的k8s集群訪問情況
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:
- name: busybox
image: busybox
args:
- sleep
- "1000000"
- name: hello-minikubi
image: k8s.gcr.io/echoserver:1.4
minikube ssh
docker ps
docker exec -it 92de341e7767 /bin/sh
測試LoadBalancer和NodePort
kubectl expose deployment hello-minikube --type=LoadBalancer --port=8080
kubectl expose deployment hello-minikube --type=ClusterIP --cluster-ip='None' --port=8080