2016-08-17 20 views
5

Bir NFS birimini bölmelerime bağlamaya çalışıyorum, ancak başarılı olamadım.Kubernetes Zaman aşımıyla birlikte pod için birimlere bağlanılamıyor

Ben bir sunucu Ben başka çalışan sunucudan kendisine bağlanmaya çalıştığınızda i dağıtım gelen hacmini kaldırdığınızda ise

sudo mount -t nfs -o proto=tcp,port=2049 10.0.0.4:/export /mnt söz ince

Başka bir şey değerinde çalışır bağlama noktası nfs çalışan var ve kapsül çalışıyor. Ben giriş yaptım ve portları 111 ve 2049 başarıyla 10.0.0.4'e telnet yapabilirim. Ben (

showmount -e 10.0.0.4 
Export list for 10.0.0.4: 
/export/drive 10.0.0.0/16 
/export  10.0.0.0/16 

Yani sunucu ile istemci arasındaki ağ veya yapılandırma sorunları olduğunu varsayabiliriz: yani gerçekten herhangi bir iletişim sorunları

yanı sıra orada görünmek doesnt Amazon ve ben üzerinde test K8S kölelerinin aynı güvenlik grubu) olduğu sunucusunu kullanarak

PS: sunucusudur basit ubuntu-> 50GB diski

Kubernetes

Yani benim PV

apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: nfs 
spec: 
    capacity: 
    storage: 50Gi 
    accessModes: 
    - ReadWriteMany 
    nfs: 
    server: 10.0.0.4 
    path: "/export" 

oluşturmaya başlar v1.3.4 Ve PVC

kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
    name: nfs-claim 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: 50Gi 
burada

kubectl bunları tarif etmektedir:

Name:  nfs 
    Labels:  <none> 
    Status:  Bound 
    Claim:  default/nfs-claim 
    Reclaim Policy: Retain 
    Access Modes: RWX 
    Capacity: 50Gi 
    Message: 
    Source: 
     Type: NFS (an NFS mount that lasts the lifetime of a pod) 
     Server: 10.0.0.4 
     Path: /export 
     ReadOnly: false 
    No events. 

VE

Name:  nfs-claim 
    Namespace: default 
    Status:  Bound 
    Volume:  nfs 
    Labels:  <none> 
    Capacity: 0 
    Access Modes: 
    No events. 

pod dağıtım:

benim POD dağıtırken
apiVersion: extensions/v1beta1 
    kind: Deployment 
    metadata: 
     name: mypod 
     labels: 
     name: mypod 
    spec: 
     replicas: 1 
     strategy: 
     rollingUpdate: 
      maxSurge: 1 
      maxUnavailable: 0 
     type: RollingUpdate 
     template: 
     metadata: 
      name: mypod 
      labels: 
      # Important: these labels need to match the selector above, the api server enforces this constraint 
      name: mypod 
     spec: 
      containers: 
      - name: abcd 
      image: irrelevant to the question 
      ports: 
      - containerPort: 80 
      env: 
      - name: hello 
       value: world 
      volumeMounts: 
      - mountPath: "/mnt" 
       name: nfs 
      volumes: 
      - name: nfs 
       persistentVolumeClaim: 
       claimName: nfs-claim 

i şu olsun:

Volumes: 
     nfs: 
     Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) 
     ClaimName: nfs-claim 
     ReadOnly: false 
     default-token-6pd57: 
     Type: Secret (a volume populated by a Secret) 
     SecretName: default-token-6pd57 
    QoS Tier: BestEffort 
    Events: 
     FirstSeen LastSeen Count From       SubobjectPath Type  Reason  Message 
     --------- -------- ----- ----       ------------- -------- ------  ------- 
     13m  13m  1 {default-scheduler }       Normal  Scheduled Successfully assigned xxx-2140451452-hjeki to ip-10-0-0-157.us-west-2.compute.internal 
     11m  7s  6 {kubelet ip-10-0-0-157.us-west-2.compute.internal}   Warning  FailedMount Unable to mount volumes for pod "xxx-2140451452-hjeki_default(93ca148d-6475-11e6-9c49-065c8a90faf1)": timeout expired waiting for volumes to attach/mount for pod "xxx-2140451452-hjeki"/"default". list of unattached/unmounted volumes=[nfs] 
     11m  7s  6 {kubelet ip-10-0-0-157.us-west-2.compute.internal}   Warning  FailedSync Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "xxx-2140451452-hjeki"/"default". list of unattached/unmounted volumes=[nfs] 

Her şeyi denedim biliyorum ve herşey düşünebiliriz. Neyi eksik veya yanlış yapıyorum?

cevap

1

Kubernetes'in 1.3.4 ve 1.3.5 sürümlerini test ettim ve NFS montajı benim için işe yaramadı. Daha sonra 1.2.5'e geçtim ve bu sürüm bana biraz daha ayrıntılı bilgi verdi (kubectl pod ...). Hiperküp görüntüsünde 'nfs-common' eksik olduğu ortaya çıktı. Master ve işçi düğümlerinde hiperküp görüntüsüne dayanan tüm kapsayıcı örneklerine nfs-common ekledikten sonra NFS paylaşımı normal çalışmaya başladı (mount başarılı oldu). Yani buradaki durum budur. Pratikte test ettim ve problemimi çözdüm.

+0

Sorunun açık olduğunu görebiliyorum, bu nedenle bunun için resmi bir düzeltme için bir umut var: https://github.com/kubernetes/kubernetes/issues/30310 – dejwsz

+0

Aslında "master" dalında düzeltme uygulandı hiperküp görüntüsünün (bkz. Dockerfile tanımı) – dejwsz