minikube共享卷一段时间后不显示文件

问题描述 投票:0回答:1

我必须将本地.ssh目录内容共享到pod。我搜索帽子,并从其中一个帖子中得到了答案,并以--mount-string开头分享。

--mount-string

当我检查给定Minikube的泊坞窗时,它返回

$ minikube start --mount-string="$HOME/.ssh/:/ssh-directory" --mount
😄  minikube v1.9.2 on Darwin 10.14.6
✨  Using the docker driver based on existing profile
👍  Starting control plane node m01 in cluster minikube
🚜  Pulling base image ...
🔄  Restarting existing docker container for "minikube" ...
🐳  Preparing Kubernetes v1.18.0 on Docker 19.03.2 ...
    ▪ kubeadm.pod-network-cidr=10.244.0.0/16
E0426 23:44:18.447396   80170 kubeadm.go:331] Overriding stale ClientConfig host https://127.0.0.1:32810 with https://127.0.0.1:32813
📁  Creating mount /Users/myhome/.ssh/:/ssh-directory ...
🌟  Enabling addons: default-storageclass, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube"

❗  /usr/local/bin/kubectl is v1.15.5, which may be incompatible with Kubernetes v1.18.0.
💡  You can also use 'minikube kubectl -- get pods' to invoke a matching version

并检查$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5ad64f642b63 gcr.io/k8s-minikube/kicbase:v0.0.8 "/usr/local/bin/entr…" 3 weeks ago Up 45 seconds 127.0.0.1:32815->22/tcp, 127.0.0.1:32814->2376/tcp, 127.0.0.1:32813->8443/tcp minikube 目录内容是否存在。

.ssh

我的部署YML为

$ docker exec -it 5ad64f642b63 ls /ssh-directory
id_rsa  id_rsa.pub  known_hosts

运行时,它为--- apiVersion: apps/v1 kind: Deployment metadata: name: api-deployment labels: stack: api app: api-web spec: replicas: 1 selector: matchLabels: app: api-web template: metadata: labels: app: api-web spec: containers: - name: api-web-pod image: tiangolo/uwsgi-nginx-flask ports: - name: api-web-port containerPort: 80 envFrom: - secretRef: name: api-secrets volumeMounts: - name: ssh-directory mountPath: /app/.ssh volumes: - name: ssh-directory hostPath: path: /ssh-directory/ type: Directory 提供了错误。

/ssh-directory

当我在Docker中检查$ kubectl describe pod/api-deployment-f65db9c6c-cwtvt Name: api-deployment-f65db9c6c-cwtvt Namespace: default Priority: 0 Node: minikube/172.17.0.2 Start Time: Sat, 02 May 2020 23:07:51 -0500 Labels: app=api-web pod-template-hash=f65db9c6c Annotations: <none> Status: Pending IP: Controlled By: ReplicaSet/api-deployment-f65db9c6c Containers: api-web-pod: Container ID: Image: tiangolo/uwsgi-nginx-flask Image ID: Port: 80/TCP Host Port: 0/TCP State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment Variables from: api-secrets Secret Optional: false Environment: <none> Mounts: /app/.ssh from ssh-directory (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-9shz5 (ro) Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: ssh-directory: Type: HostPath (bare host directory volume) Path: /ssh-directory/ HostPathType: Directory default-token-9shz5: Type: Secret (a volume populated by a Secret) SecretName: default-token-9shz5 Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled <unknown> default-scheduler Successfully assigned default/api-deployment-f65db9c6c-cwtvt to minikube Warning FailedMount 11m kubelet, minikube Unable to attach or mount volumes: unmounted volumes=[ssh-directory], unattached volumes=[default-token-9shz5 ssh-directory]: timed out waiting for the condition Warning FailedMount 2m13s (x4 over 9m) kubelet, minikube Unable to attach or mount volumes: unmounted volumes=[ssh-directory], unattached volumes=[ssh-directory default-token-9shz5]: timed out waiting for the condition Warning FailedMount 62s (x14 over 13m) kubelet, minikube MountVolume.SetUp failed for volume "ssh-directory" : hostPath type check failed: /ssh-directory/ is not a directory 的内容时。

它出现IO错误。

/ssh-directory

我知道Minikube有默认的安装点。如$ docker exec -it 5ad64f642b63 ls /ssh-directory ls: cannot access '/ssh-directory': Input/output error 中所述,

https://minikube.sigs.k8s.io/docs/handbook/mount/

但是我将minikube安装为+------------+----------+---------------+----------------+ | Driver | OS | HostFolder | VM | +------------+----------+---------------+----------------+ | VirtualBox | Linux | /home |/hosthome | +------------+----------+---------------+----------------+ | VirtualBox | macOS | /Users |/Users | +------------+----------+---------------+----------------+ | VirtualBox | Windows |C://Users | /c/Users | +------------+----------+---------------+----------------+ |VMware Fusio| macOS |/Users |/Users | +------------+----------+---------------+----------------+ | KVM | Linux | Unsupported. | | +------------+----------+---------------+----------------+ | HyperKit | Linux | Unsupported |(see NFS mounts)| +------------+----------+---------------+----------------+ ,并将它的brew install minikube设置为driver

docker

安装点中没有$ cat ~/.minikube/config/config.json { "driver": "docker" } 驱动程序的映射。

最初,此目录包含文件,但是以某种方式,当我尝试创建Pod时,它会删除或出现错误。

docker kubernetes minikube
1个回答
0
投票

虽然在ubuntu上复制此文件,但遇到了确切的问题。

该目录确实看起来好像已挂载,但是缺少文件,这使我认为这是使用docker驱动程序挂载目录的普遍问题。

github上存在关于同一问题(docker)的公开问题,并且公开了功能请求mount directory empty

检查minikube容器没有显示该已安装卷的记录,并确认github请求中提到的信息,即到目前为止,与主机共享的唯一卷是默认安装的卷(即to mount host volumes into docker driver已安装到minikube的/var/lib/docker/volumes/minikube/_data目录中)。

/var

作为解决方法,您可以使用以下命令将$ docker inspect minikube "Mounts": [ { "Type": "volume", "Name": "minikube", "Source": "/var/lib/docker/volumes/minikube/_data", "Destination": "/var", "Driver": "local", "Mode": "z", "RW": true, "Propagation": "" } 目录复制到正在运行的minikube docker容器中:

.ssh

然后将该所需目录安装到窗格中。

© www.soinside.com 2019 - 2024. All rights reserved.