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之后才能访问。
通过以下命令可以登录到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.
安装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-container
image: nginx:1.22
ports:
- containerPort: 80
volumeMounts:
- mountPath: /home/minikube/test #path in pod
name: data-volume
volumes:
- name: data-volume
hostPath:
# path in docker
path: /home/docker/test
type: 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