首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >minikube + nginx + volumeMount不工作

minikube + nginx + volumeMount不工作
EN

Stack Overflow用户
提问于 2017-07-15 05:37:05
回答 1查看 1.1K关注 0票数 2

下面是找到这里的例子。

我只是想了解库伯奈特斯的卷是如何工作的。我正在本地测试,所以我需要和minikube抗衡。我试着让这件事尽可能简单。我正在使用nginx,希望它能够显示从本地主机上的文件夹中挂载的内容。

环境: macOS 10.12.5微型库0.20.0 + xhvve

我使用的是最新的来自GitHub的ngninx图像,没有任何修改。

这是完美的工作,当我运行码头形象以外的迷你库。

代码语言:javascript
复制
docker run --name flow-4 \
 -v $(pwd)/website:/usr/share/nginx/html:ro \
 -P -d nginx

但是,当我试图在中运行它时,当我访问托管页面-always时,我会得到一个404响应。为什么?

这是我的kubernetes配置文件..。

kubernets/部署/部署

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: flow-4
  name: flow-4
spec:
  replicas: 1
  selector:
    matchLabels:
      run: flow-4
  template:
    metadata:
      labels:
        run: flow-4
    spec:
      containers:
      - image: nginx
        name: flow-4
        ports:
        - containerPort: 80

        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: flow-4-volume
      volumes:
      - name: flow-4-volume
        hostPath:
          path: /Users/myuser/website

kubernets/deploy/svc.yaml

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    run: flow-4
  name: flow-4
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: flow-4
  type: NodePort

最后,我像这样运行它:

代码语言:javascript
复制
kubectl create -f kubernetes/deploy/
minikube service flow-4

当它在我的浏览器中打开时,我不会在网站文件夹中看到我的index.html页面,我只会收到一条'404 Not‘消息(在nginx/1.13.3页脚上方)

我为什么得到404?nginx不能看到我挂载的文件夹的内容吗?托管库的虚拟机没有访问我的‘网站’文件夹吗?

我想这就是问题所在。我进入库伯内特斯舱

代码语言:javascript
复制
kubectl exec -it flow-4-1856897391-m0jh1 /bin/bash

当我查看/usr/share/nginx/html文件夹时,它是空的。如果我手动添加一个index.html文件,那么我可以在浏览器中看到它。但是为什么Kubernetes不把我的本地驱动器安装到这个文件夹呢?

更新

从我/User/**文件夹安装完整路径似乎有问题。相反,我使用'minikube挂载‘命令将本地文件夹容器index.html挂载到minikube中。然后,在另一个终端中,我启动了我的部署,它可以很好地看到index.html文件。

下面是我更新的deployment.yaml文件,它有更清晰的文件名,以更好地解释不同的文件夹以及它们的安装位置.

这是我的kubernetes配置文件..。

kubernets/部署/部署

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: flow-4
  name: flow-4
spec:
  replicas: 1
  selector:
    matchLabels:
      run: flow-4
  template:
    metadata:
      labels:
        run: flow-4
    spec:
      containers:
      - image: nginx
        name: flow-4
        ports:
        - containerPort: 80

        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: flow-4-volume
      volumes:
      - name: flow-4-volume
        hostPath:
          path: /kube-website

它使用的是之前发布的相同的svc.yaml文件。

然后像这样从我的当前目录中运行整个过程。

  1. mkdir local-website
  2. echo 'Hello from local storage' > local-website/index.html
  3. minikube mount local-website:/kube-website 让这一切..。

在一个新的终端里,同一个文件夹.

  1. kubectl create -f kubernetes/deploy/

一旦所有的吊舱都在运行..。

  1. minikube service flow-4

您应该在浏览器中看到“本地存储中的Hello”消息。您可以编辑本地index.html文件,然后刷新浏览器以查看内容的更改。

你可以用这个把它全部撕下来..。kubectl delete deployments,services flow-4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 14:43:56

您创建的文件夹可能不在kubernetes节点(它是minikube )。

尝试在vm中创建文件夹,然后重试

代码语言:javascript
复制
ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip)
mkdir /Users/myuser/website

还请看一看minikube主机装入文件夹特性

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45114910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档