首页 文章

Kubernetes配置GCE持久性磁盘有时会失败

提问于
浏览
2

我目前正在使用GCE标准容器集群,取得了很大的成功和乐趣 . 但我对GCE持久磁盘的配置有疑问 .

this文件中描述的Kubernetes . 我创建了两个YAML文件:

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
    annotations:
      storageclass.beta.kubernetes.io/is-default-class: "true"
    name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: fast
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd

如果我现在创建以下卷声明:

{
  "kind": "PersistentVolumeClaim",
  "apiVersion": "v1",
  "metadata": {
    "name": "claim-test",
    "annotations": {
        "volume.beta.kubernetes.io/storage-class": "hdd"
    }
  },
  "spec": {
    "accessModes": [
      "ReadWriteOnce"
    ],
    "resources": {
      "requests": {
        "storage": "3Gi"
      }
    }
  }
}

磁盘创建完美!如果我现在开始关注单位

apiVersion: v1
kind: ReplicationController
metadata:
  name: nfs-server
spec:
  replicas: 1
  selector:
    role: nfs-server
  template:
    metadata:
      labels:
        role: nfs-server
    spec:
      containers:
      - name: nfs-server
        image: gcr.io/google_containers/volume-nfs
        ports:
          - name: nfs
            containerPort: 2049
          - name: mountd
            containerPort: 20048
          - name: rpcbind
            containerPort: 111
        securityContext:
          privileged: true
        volumeMounts:
          - mountPath: /exports
            name: mypvc
      volumes:
        - name: mypvc
          persistentVolumeClaim:

        claimName: claim-test

磁盘安装完美但很多次我偶然发现了以下错误(在kubelet.log文件中找不到更多):

Failed to attach volume "claim-test" on node "...." with: GCE persistent disk not found: diskName="....." zone="europe-west1-b" Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "....". list of unattached/unmounted volumes=[....]

有时,pod会完美地启动,但有时它会崩溃 . 我唯一能找到的是创建PVC和RC本身之间需要足够的时间 . 我尝试了很多次,但结果不一样 .

我希望有人可以给我一些建议或帮助 .

提前致谢!最好的祝福,

Hacor

1 回答

  • 0

    提前感谢您的意见!经过几天的搜索,我终于能够确定问题是什么,我发布它是因为它可能对其他用户有用 .

    我使用NFS example for Kubernetes作为复制控制器为我的应用程序提供NFS存储,但似乎当NFS服务器和PV,PVC被删除时,有时NFS共享卡在节点本身上,我认为它必须这样做的事实是我没有按特定的顺序删除这些元素,因此节点卡住了共享变得无法将新的共享添加到自身或pod中!

    我注意到在从群集中删除了一些应用程序(NFS,PV,PVC和其他组件)后,问题总是发生 . 如果我在GCE上创建了一个新的集群,它可以完美地创建应用程序,直到我删除它并且它出错...

    什么是正确的删除顺序我不确定,但我认为:

    • 使用NFS共享的Pod

    • PV,NFS共享的PVC

    • NFS服务器

    如果pod需要更长时间才能删除,并且在删除PV之前它没有完全消失,那么节点会挂起一个无法删除的挂载,因为它正在使用中,而这就是问题发生的地方 .

    我必须诚实地说,现在我正在转向外部配置的GlusterFS集群 . 希望它可以帮到某人!

    问候,

    Hacor

相关问题