基于Docker使用Minikube
1. 查看并操控Minikube状态信息
Minikube相当于docker中的一个container,可以在Docker Desktop中看到并操控Minikube container的相关状态:
通过以下命令查看当前docker中的container:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46f7db3b02d9 kicbase/stable:v0.0.40 "/usr/local/bin/entr…" 7 days ago Up 4 days 127.0.0.1:57899->22/tcp, 127.0.0.1:57900->2376/tcp, 127.0.0.1:57902->5000/tcp, 127.0.0.1:57903->8443/tcp, 127.0.0.1:57901->32443/tcp minikube
该container默认启动了name=minikube的k8s cluster,具体信息默认存储在 $(HOME)/.kube/config文件中。
查看minikube cluster的IP:
% minikube ip
192.168.49.2
此IP是运行在docker的container中的minikube k8s cluster的IP,因此仅能在登录到docker container之后才能访问,本机host无法访问。
查看docker构造的minikube cluster到本机host的port映射:
% docker port 46f7db3b02d9
22/tcp -> 127.0.0.1:57899
2376/tcp -> 127.0.0.1:57900
5000/tcp -> 127.0.0.1:57902
8443/tcp -> 127.0.0.1:57903
32443/tcp -> 127.0.0.1:57901
例如,22/tcp 是minikube cluster的port,映射到了host的port为 57899。minikube cluster的port也是只能在登录到docker container之后才能访问。
2. 登录到docker的minikube container中
通过以下命令可以登录到minikube container中:
% minikube ssh
在这个container中可以访问minikube cluster对外暴露的IP和port:
docker@minikube:~$ curl 192.168.49.2:2376
Client sent an HTTP request to an HTTPS server.
3. 启动pod和挂载volume
安装Minikube时已经自动在本机上安装了kubectl工具,并会通过$(HOME)/.kube/config文件中的配置信息连接到minikube cluster。
Volumes有许多种类,以下通过hostPath形式进行举例:
https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
在本机host上通过yaml文件启动pod,yaml文件中设置了volume挂载信息:
% vi test/test-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod
spec:containers:- name: test-containerimage: nginx:1.22ports:- containerPort: 80volumeMounts:- mountPath: /home/minikube/test #path in podname: data-volumevolumes:- name: data-volumehostPath:# path in dockerpath: /home/docker/testtype: DirectoryOrCreate
% kubectl apply -f test/test-pod.yaml
pod/test-pod created
由于minikube cluster运行在docker container中,因此yaml文件中配置的 spec.volumes.hostPath.path 是docker container的路径,而不是本机host的路径。
登录到docker container中新建aaa.txt文件(由于设置了DirectoryOrCreate,因此不存在的路径自动创建):
% minikube ssh
docker@minikube:~$ sudo vi /home/docker/test/aaa.txt
hahaha
通过lens打开minikube cluster中test-pod的terminal,查看挂载路径下文件:
root@test-pod:/# cat /home/minikube/test/aaa.txt
hahaha