2017-04-06 90 views
0

我的問題是關於PersistentVolumeClaim 我對AWS EC2一個節點羣集設置 我試圖創建一個使用kubernetes.io/host-path一個存儲類置備Kubernetes:動態存儲配置使用主機路徑

YAML文件內容如下存儲類,爲PersistentVolumeClaim如下

kind: StorageClass 
apiVersion: storage.k8s.io/v1beta1 
metadata: 
namespace: kube-system 
name: my-storage 
annotations: 
    storageclass.beta.kubernetes.io/is-default-class: "false" 
labels: 
    kubernetes.io/cluster-service: "true" 
provisioner: kubernetes.io/host-path 

YAML文件內容,

kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
name: task-pv-claim 
annotations: 
    volume.beta.kubernetes.io/storage-class: my-storage 
spec: 
accessModes: 
    - ReadWriteOnce 
resources: 
    requests: 
    storage: 3Gi 

當我試圖在minikube創建存儲類和PVC,它正在工作。它是在minikube創建 量在/ tmp/hostpath_volume/ 但是,當我對AWS EC2一個節點羣集安裝嘗試類似的事情,我收到以下錯誤

無法創建預配:供應體積插件「 kubernetes.io/host-path」已禁用

我可以看到這個錯誤,當我做kubectl描述PVC任務-PV-要求,而且作爲,不創建PV,所以要求在待定狀態

我發現了類似kube-controller-manager的東西,它顯示了 --enable-dynamic-provisioning和--enable-hostpath-provisioner的選項,但不知道如何使用它。

+0

您運行的是什麼版本的kubernetes的?主機路徑調配程序是否作爲羣集中的容器運行? – jaxxstorm

+0

我正在使用kubectl版本1.5.2。我沒有聽到你的第二個問題。我是這個K8s和所有人的新手。你的意思是'kubernetes.io/host-path'作爲一個pod運行嗎? – Yudi

回答

2

看來你可能沒有運行自動配置程序,所以沒有什麼可以真正做到創建主機路徑目錄的工作。

看看here

這種工作方式是,hostpath供應方從kubernetes API讀取和手錶爲您創建一個存儲類(你所做的)和persistentvolumeclaim(也做) 。

如果存在這些問題,則提供程序(作爲容器運行)將執行一個執行mkdir以創建主機路徑。

運行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/docs/demo/hostpath-provisioner/pod.yaml 

,然後重新創建你的storageclass和PVC

+0

您的解決方案看起來完全完美。謝謝你的先生。但是,我在解決問題的同時遇到了問題。當我試圖執行您給出的命令時,pod已部署但具有'ErrImagePull'狀態。 然後我試圖從https://hub.docker.com/r/jaxxstorm/hostpath-provisioner/tags/中提取圖片,並嘗試部署但獲取「F0406 19:52:27.642967 7 hostpath-provisioner.go:125」失敗創建配置:無法加載羣集內配置,KUBERNETES_SERVICE_HOST和KUBERNETES_SERVICE_PORT必須定義爲「 你能幫我解決嗎? – Yudi

+0

默認情況下,kubernetes應該映射一個令牌,以便它可以與API交談,但在您的情況下,這並未發生。看來你的集羣不能正常工作。我會開一個新的問題,並詳細說明你如何引導你的集羣 – jaxxstorm

+0

@Yudi我們閒聊,你能接受答案 – jaxxstorm