Kubernetes PetSet - 持久量的FailedCreate

时间:2016-09-20 18:02:11

标签: docker kubernetes

我正在尝试按照文档中的描述设置Kubernetes PetSet。当我创建PetSet时,我似乎无法将持久卷声明绑定到持久卷。这是我用于定义PetSet的Yaml文件:

apiVersion: apps/v1alpha1
kind: PetSet
metadata:
  name: 'ml-nodes'
spec:
  serviceName: "ml-service"
  replicas: 1
  template:
    metadata:
      labels:
        app: marklogic
        tier: backend
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      containers:
        - name: 'ml'
          image: "192.168.201.7:5000/dcgs-sof/ml8-docker-final:v1"
          imagePullPolicy: Always
          ports:
            - containerPort: 8000
              name: ml8000
              protocol: TCP
            - containerPort: 8001
              name: ml8001
            - containerPort: 7997
              name: ml7997
            - containerPort: 8002
              name: ml8002
            - containerPort: 8040
              name: ml8040
            - containerPort: 8041
              name: ml8041
            - containerPort: 8042
              name: ml8042
          volumeMounts:
            - name: ml-data
              mountPath: /data/vol-data
          lifecycle:
            preStop:
              exec:
                # SIGTERM triggers a quick exit; gracefully terminate instead
                command: ["/etc/init.d/MarkLogic stop"]
      volumes:
        - name: ml-data
          persistentVolumeClaim:
            claimName: ml-data 
      terminationGracePeriodSeconds: 30
  volumeClaimTemplates:
    - metadata:
        name: ml-data
        annotations:
          volume.alpha.kubernetes.io/storage-class: anything
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 2Gi

如果我在我创建的PetSet上执行'describe',我会看到以下内容:

Name:           ml-nodes
Namespace:      default
Image(s):       192.168.201.7:5000/dcgs-sof/ml8-docker-final:v1
Selector:       app=marklogic,tier=backend
Labels:         app=marklogic,tier=backend
Replicas:       1 current / 1 desired
Annotations:        <none>
CreationTimestamp:  Tue, 20 Sep 2016 13:23:14 -0400
Pods Status:        0 Running / 1 Waiting / 0 Succeeded / 0 Failed
No volumes.
Events:
  FirstSeen LastSeen    Count   From        SubobjectPath   Type        Reason          Message
  --------- --------    -----   ----        -------------   --------    ------          -------
  33m       33m     1   {petset }           Warning     FailedCreate        pvc: ml-data-ml-nodes-0, error: persistentvolumeclaims "ml-data-ml-nodes-0" not found
  33m       33m     1   {petset }           Normal      SuccessfulCreate    pet: ml-nodes-0

我正在尝试在本地计算机上的minikube环境中运行它。不知道我在这里缺少什么???

2 个答案:

答案 0 :(得分:2)

minikube上有一个open issue。目前,在minikube中,持续的卷配置支持似乎尚未完成。

要使其与本地存储一起使用,它需要控制器管理器上的以下标志,并且当前未在minikube上启用。

  

- enable-hostpath-provisioner [= false]:启用HostPath PV   在没有云提供商的情况下运行时进行配置这允许   测试和开发配置功能。 HostPath   不支持配置,不能在多节点中工作   群集,不应用于测试或以外的任何其他内容   发展。

参考:http://kubernetes.io/docs/admin/kube-controller-manager/

对于本地开发/测试,如果您在设置环境变量后使用hack/local_up_cluster.sh启动本地群集,它将起作用:

export ENABLE_HOSTPATH_PROVISIONER=true 

答案 1 :(得分:0)

您应该可以在最新版本的minikube中使用PetSet,因为它使用kubernetes v1.4.1作为默认版本。