基于Docker使用Minikube

1. 查看并操控Minikube状态信息

Minikube相当于docker中的一个container,可以在Docker Desktop中看到并操控Minikube container的相关状态:

基于Docker使用Minikube_第1张图片

通过以下命令查看当前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-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

你可能感兴趣的:(docker,&,Kubernetes,docker,kubernetes)