我以下發現的例子here。minikube + nginx + volumeMount不工作
我只是想了解卷如何與Kubernetes配合使用。我在本地測試,所以我需要與minikube抗衡。我試圖儘可能簡化。我正在使用nginx,並希望它顯示從本地主機上的文件夾掛載的內容。
環境: MACOS 10.12.5 minikube 0.20.0 + xhvve VM
我使用的是最新的ngninx image from GitHub不作任何修改。
當我在minikube之外運行docker鏡像時,這個功能完美無缺。
docker run --name flow-4 \
-v $(pwd)/website:/usr/share/nginx/html:ro \
-P -d nginx
但當我嘗試在minikube運行它,我得到一個404響應,當我訪問託管的網頁-always。爲什麼?
這裏是我的kubernetes配置文件...
kubernets /部署/ 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
kubernets /部署/ svc.yaml
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
當它在我眉頭打開時呃,而不是在網站文件夾中看到我的index.html頁面,我只是得到'404 Not Found'消息(在nginx/1.13.3頁腳之上)
爲什麼我要404? nginx無法看到我的掛載文件夾的內容?託管kubernetes的虛擬機是否無法訪問我的「網站」文件夾?
我懷疑這是問題所在。我ssh到kubernetes莢
kubectl exec -it flow-4-1856897391-m0jh1 /bin/bash
當我看着在/ usr /共享/ nginx的/ HTML文件夾,它是空的。如果我手動添加一個index.html文件,那麼我可以在瀏覽器中看到它。但爲什麼Kubernetes不會將我的本地驅動器安裝到此文件夾?
更新
好像有什麼問題從我/用戶/ **文件夾安裝完整路徑。相反,我使用'minikube mount'命令將本地文件夾容器index.html安裝到minikube虛擬機中。然後在一個單獨的終端中,我開始部署,它可以看到index.html文件。
這裏是具有清晰的文件名,以便更好地解釋不同的文件夾,並在那裏安裝更新我的文件deployment.yaml ...
這裏是我的kubernetes配置文件...
kubernets /部署/部署.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: /kube-website
它使用相同的svc。yaml文件來自之前的帖子。
然後我從當前目錄運行這樣的事情。
1. mkdir local-website
2. echo 'Hello from local storage' > local-website/index.html
讓這個運行....
在一個新的終端,同一個文件夾...
4. kubectl create -f kubernetes/deploy/
一旦所有的豆莢正在運行...
5. minikube service flow-4
你應該看到'地獄o從本地存儲'的消息很棒你在你的瀏覽器。您可以編輯本地index.html文件,然後刷新瀏覽器以查看內容更改。
你可以撕了這一切與此... kubectl delete deployments,services flow-4
我相信一切在/用戶被自動安裝到minikube VM。爲了測試,我按照你的建議把它甩進去了。一旦進入minikube VM,我可以將目錄切換到/ Users/myuser/website。我可以看到index.html文件。使用'minikube安裝'不會改變任何東西。它在minikube VM中仍然可見,但在我的吊艙內不可見。任何其他想法? – anschoewe
經過多次挖掘,從/ Users//<很多子路徑>/local-website安裝了一條很長的路徑似乎有些奇怪。我簡化了一些東西,只是用'minikube mount local-website:/ kub-website,'local-website'在我的當前目錄中。然後,我更新了kubernetes使用的部署描述符,以簡單地安裝/ kub-website文件夾。工作很好。我會更新我的答案以反映它。感謝您指點我'minikube mount'的方向。 –
anschoewe