Kubernetes GKE Pods在同一节点上无法使用NFS服务器卷装载PVC

Kubernetes GKE Pods在同一节点上无法使用NFS服务器卷装载PVC,kubernetes,google-kubernetes-engine,nfs,Kubernetes,Google Kubernetes Engine,Nfs,我正在运行一个GKE集群,它有多个pod试图访问一个共享卷。由于GC持久磁盘不允许读写访问,所以我在集群中设置了一个NFS服务器(与许多示例(如)所做的相同)来允许它。我在这个集群上以不同的名称空间运行一个生产和开发环境,但是由于这两个环境运行同一个应用程序,它们都需要自己的文件系统 目前,解决方案是以相同的方式设置两个NFS服务器(一个用于prod,一个用于dev)。似乎当使用NFS服务器装载卷的POD与NFS服务器本身位于同一节点上时,它们无法装载(错误为“无法附加或装载卷[…]:等待条件时

我正在运行一个GKE集群,它有多个pod试图访问一个共享卷。由于GC持久磁盘不允许读写访问,所以我在集群中设置了一个NFS服务器(与许多示例(如)所做的相同)来允许它。我在这个集群上以不同的名称空间运行一个生产和开发环境,但是由于这两个环境运行同一个应用程序,它们都需要自己的文件系统

目前,解决方案是以相同的方式设置两个NFS服务器(一个用于prod,一个用于dev)。似乎当使用NFS服务器装载卷的POD与NFS服务器本身位于同一节点上时,它们无法装载(错误为“无法附加或装载卷[…]:等待条件时超时”)。然而,这似乎只发生在开发环境中,因为prod环境没有任何问题。目前,两个NFS服务器都被分配到了同一个节点,这可能也是造成问题的原因,但我不确定

我一直在试图弄清楚以这种方式拥有2台NFS服务器是否有问题,或者尝试将POD连接到运行在同一节点上的NFS服务器是否有问题,但到目前为止没有任何效果。你知道是什么导致了这个问题吗

nfs服务器吊舱中的日志(dev和prod的日志相同):


我通过以下方式复制了您的问题,并遇到了相同的问题,原因是我在创建第二个
PersistentVolume

这就是我如何在GKE中的2个独立名称空间中部署2个NFS服务器的方法-
版本:1.17.12-gke.2502

创建2个磁盘
gcloud计算磁盘创建--size=10GB--zone=us-east1-b gce nfs磁盘
gcloud计算磁盘创建--size=10GB--zone=us-east1-b gce-nfs-disk2
dev
命名空间中创建NFS部署和服务

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-server
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      role: nfs-server
  template:
    metadata:
      labels:
        role: nfs-server
    spec:
      containers:
      - name: nfs-server
        image: gcr.io/google_containers/volume-nfs:0.8
        ports:
          - name: nfs
            containerPort: 2049
          - name: mountd
            containerPort: 20048
          - name: rpcbind
            containerPort: 111
        securityContext:
          privileged: true
        volumeMounts:
          - mountPath: /exports
            name: mypvc
      volumes:
        - name: mypvc
          gcePersistentDisk:
            pdName: gce-nfs-disk
            fsType: ext4
---
apiVersion: v1
kind: Service
metadata:
  name: nfs-server
  namespace: dev
spec:
  # clusterIP: 10.3.240.20
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
  selector:
    role: nfs-server
NFS部署成功后,请检查服务的ClusterIP
kubectl获取svc-n dev
,并将其添加到
NFS:server:

prod
命名空间重复相同的操作,但请记住在
prod
命名空间中更改
nfs服务的IP地址,并在PV清单中相应地进行更改。部署后,结果如下:

$ kubectl get pods -n prod
NAME                           READY   STATUS    RESTARTS   AGE
nfs-nginx2-5d75567b95-7n7gk    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-gkqww    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-gt96p    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-hf9j7    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-k2jdv    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-q457q    1/1     Running   0          6m25s
nfs-server2-8654b89f48-bp9lv   1/1     Running   0          7m19s

我通过以下方式复制了您的问题,并遇到了相同的问题,原因是我在创建第二个
PersistentVolume

这就是我如何在GKE中的2个独立名称空间中部署2个NFS服务器的方法-
版本:1.17.12-gke.2502

创建2个磁盘
gcloud计算磁盘创建--size=10GB--zone=us-east1-b gce nfs磁盘
gcloud计算磁盘创建--size=10GB--zone=us-east1-b gce-nfs-disk2
dev
命名空间中创建NFS部署和服务

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-server
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      role: nfs-server
  template:
    metadata:
      labels:
        role: nfs-server
    spec:
      containers:
      - name: nfs-server
        image: gcr.io/google_containers/volume-nfs:0.8
        ports:
          - name: nfs
            containerPort: 2049
          - name: mountd
            containerPort: 20048
          - name: rpcbind
            containerPort: 111
        securityContext:
          privileged: true
        volumeMounts:
          - mountPath: /exports
            name: mypvc
      volumes:
        - name: mypvc
          gcePersistentDisk:
            pdName: gce-nfs-disk
            fsType: ext4
---
apiVersion: v1
kind: Service
metadata:
  name: nfs-server
  namespace: dev
spec:
  # clusterIP: 10.3.240.20
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
  selector:
    role: nfs-server
NFS部署成功后,请检查服务的ClusterIP
kubectl获取svc-n dev
,并将其添加到
NFS:server:

prod
命名空间重复相同的操作,但请记住在
prod
命名空间中更改
nfs服务的IP地址,并在PV清单中相应地进行更改。部署后,结果如下:

$ kubectl get pods -n prod
NAME                           READY   STATUS    RESTARTS   AGE
nfs-nginx2-5d75567b95-7n7gk    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-gkqww    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-gt96p    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-hf9j7    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-k2jdv    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-q457q    1/1     Running   0          6m25s
nfs-server2-8654b89f48-bp9lv   1/1     Running   0          7m19s

NFS服务器吊舱中是否有日志?如果出现任何问题,您是否可以共享两个pod的输出,或者共享故障nfs pod的日志?我已经添加了nfs服务器pod的日志,但是尽管存在这些错误,它们通常工作正常(至少在nfs方面,只是没有上述问题)。NFS吊舱不是失败的,只是没有任何东西能够从同一个节点装载到它们。NFS服务器吊舱中有日志吗?如果出现任何问题,您是否可以共享两个pod的输出,或者共享故障nfs pod的日志?我已经添加了nfs服务器pod的日志,但是尽管存在这些错误,它们通常工作正常(至少在nfs方面,只是没有上述问题)。NFS吊舱不是失败的,只是没有任何东西能够从同一个节点装载到它们。您是否直接输入了集群IP?我目前正在使用集群内访问表单“nfs dev server.development.svc.cluster.local”,即“svc name.namespace.svc.cluster.local”。如果这是一个问题,你知道为什么它可能是相关的吗?唯一的另一个区别是我使用storageClassName:,并且它是在PVC而不是PV中分配的。如何将多个持久性磁盘添加到单个NFS服务器?e、 g./exports/disks1->这将指向第一个永久磁盘/exports/disks2->这将指向第二个永久磁盘。这两个磁盘都将用于Sepreate PV和PVC。@Gordie我在调用
kubectl get svc…
后直接添加了ClusterIP,你知道为什么会有不同吗?使用dns名称似乎是更好的做法,因为如果重新创建服务并获得不同的群集IP,dns名称不会更改。您是否直接输入了群集IP?我目前正在使用集群内访问表单“nfs dev server.development.svc.cluster.local”,即“svc name.namespace.svc.cluster.local”。如果这是一个问题,你知道为什么它可能是相关的吗?唯一的另一个区别是我使用storageClassName:,并且它是在PVC而不是PV中分配的。如何将多个持久性磁盘添加到单个NFS服务器?e、 g./exports/disks1->这将指向第一个永久磁盘/exports/disks2->这将指向第二个永久磁盘。这两个磁盘都将用于Sepreate PV和PVC。@Gordie我在调用
kubectl get svc…
后直接添加了ClusterIP,你知道为什么会有不同吗?似乎使用dns名称是更好的做法,因为如果重新创建服务并获得不同的群集映射,dns名称将不会更改。
$ kubectl get pods -n prod
NAME                           READY   STATUS    RESTARTS   AGE
nfs-nginx2-5d75567b95-7n7gk    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-gkqww    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-gt96p    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-hf9j7    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-k2jdv    1/1     Running   0          6m25s
nfs-nginx2-5d75567b95-q457q    1/1     Running   0          6m25s
nfs-server2-8654b89f48-bp9lv   1/1     Running   0          7m19s