无法附加卷...已由

时间:2017-06-29 19:27:27

标签: kubernetes google-compute-engine

我使用版本1.6.6在GKE集群中运行Kubernetes,使用1.6.4运行另一个集群。两者都遇到了GCE计算磁盘故障的问题。

我一直在使用容器内的kill 1或直接杀死GCE节点来模拟失败。有时我很幸运,pod将再次在同一节点上创建。但大多数时候情况并非如此。

查看事件日志,它显示尝试挂载3次的错误,但无法执行任何操作。没有人为干预,它永远不会纠正它自己。我被迫多次杀死pod,直到它工作。在维护期间,这是一个巨大的痛苦。

如何让Kubernetes正确地进行故障转移?有没有办法告诉部署在失败时尝试新节点?有没有办法删除3次重试限制?

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: dev-postgres
  namespace: jolene
spec:
  revisionHistoryLimit: 0
  template:
    metadata:
      labels:
        app: dev-postgres
        namespace: jolene
    spec:
      containers:
      - image: postgres:9.6-alpine
        imagePullPolicy: IfNotPresent
        name: dev-postgres
        volumeMounts:
        - mountPath: /var/lib/postgresql/data
          name: postgres-data
        env:
          [ ** Removed, irrelevant environment variables ** ]
        ports:
          - containerPort: 5432
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - exec pg_isready
          initialDelaySeconds: 30
          timeoutSeconds: 5
          failureThreshold: 6
        readinessProbe:
          exec:
            command:
            - sh
            - -c
            - exec pg_isready --host $POD_IP
          initialDelaySeconds: 5
          timeoutSeconds: 3
          periodSeconds: 5
      volumes:
        - name: postgres-data
          persistentVolumeClaim:
            claimName: dev-jolene-postgres

我在使用和不使用PersistentVolume / PersistentVolumeClaim时尝试了这个。

apiVersion: "v1"
kind: "PersistentVolume"
metadata:
  name: dev-jolene-postgres
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - "ReadWriteOnce"
  claimRef:
    namespace: jolene
    name: dev-jolene-postgres
  gcePersistentDisk:
    fsType: "ext4"
    pdName: "dev-jolene-postgres"

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: dev-jolene-postgres
  namespace: jolene
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

1 个答案:

答案 0 :(得分:1)

默认情况下,每个节点都是可调度的,因此无需在部署中明确提及它。可以提及重试限制的功能仍在进行中,可以在此处跟踪https://github.com/kubernetes/kubernetes/issues/16652