我遵循发现的示例
here
我只是想了解卷是如何与Kubernetes一起工作的。我正在本地测试,所以我需要与minikube抗争。我正努力使这件事尽可能简单。我正在使用nginx,希望它能够显示从本地主机上的文件夹装载的内容。
环境:
macOS 10.12.5
minikube 0.20.0+xhvve虚拟机
我用的是最新的
ngninx image from GitHub
没有任何修改。
docker run --name flow-4 \
-v $(pwd)/website:/usr/share/nginx/html:ro \
-P -d nginx
当我尝试在minikube中运行它时,当我访问托管页面时,总是收到404响应。为什么?
这是我的kubernetes配置文件。。。
kubernets/deploy/deployment.yaml
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
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
最后,我这样运行它:
kubectl create -f kubernetes/deploy/
minikube service flow-4
当它在我的浏览器中打开时,而不是看到我的索引。在网站文件夹中的html页面,我刚刚收到一条“404未找到”消息(在nginx/1.13.3页脚上方)
为什么我得到404?nginx是否无法查看我装载的文件夹的内容?
托管kubernetes的虚拟机是否无法访问我的“网站”文件夹?
我怀疑这就是问题所在。我飞进库伯内特吊舱
kubectl exec -it flow-4-1856897391-m0jh1 /bin/bash
使现代化
从my/Users/**文件夹装载完整路径似乎有问题。相反,我使用“minikube mount”命令装载本地文件夹容器索引。html输入minikube虚拟机。然后在一个单独的终端中,我开始部署,它可以看到索引。html文件很好。
这是我更新的部署。yaml文件具有更清晰的文件名,可以更好地解释不同的文件夹以及它们的安装位置。。。
这是我的kubernetes配置文件。。。
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
然后我从我当前的目录中运行了整个过程。
1.
mkdir local-website
echo 'Hello from local storage' > local-website/index.html
3.
minikube mount local-website:/kube-website
让它运行。。。。
4.
kubectl create -f kubernetes/deploy/
minikube service flow-4
您应该会在浏览器中看到“Hello from local storage”(你好,来自本地存储)的消息。您可以编辑本地索引。html文件,然后刷新浏览器以查看内容的更改。
你可以用这个把它全部拆掉。。。
kubectl delete deployments,services flow-4