2016-02-04 16 views
5

'a yazamıyor Kubernetes ve google container engine (GKE) ile çalışıyorum. Eğer bir Google Compute Engine Kalıcı Disk monte görebileceğiniz gibiGoogle Container Engine'de konuşlandırılan root kullanıcısı olmayan Docker konteyneri, GCE Kalıcı disk

{ 
    "apiVersion": "v1", 
    "kind": "ReplicationController", 
    "metadata": { 
    "name": "datalab-notebook" 
    }, 
    "spec": { 
    "replicas": 1, 
    "selector": { 
     "app": "datalab-notebook" 
    }, 
    "template": { 
     "metadata": { 
     "name": "datalab-notebook", 
     "labels": { 
      "environment": "TEST", 
      "app": "datalab-notebook" 
     } 
     }, 
     "spec": { 
     "containers": [{ 
      "name": "datalab-notebook-container", 
      "image": "jupyter/all-spark-notebook", 
      "env": [], 
      "ports": [{ 
      "containerPort": 8888, 
      "name": "datalab-port" 
      }], 
      "volumeMounts": [{ 
      "name": "datalab-notebook-persistent-storage", 
      "mountPath": "/home/jovyan/work" 
      }] 
     }], 
     "volumes": [{ 
      "name": "datalab-notebook-persistent-storage", 
      "gcePersistentDisk": { 
      "pdName": "datalab-notebook-disk", 
      "fsType": "ext4" 
      } 
     }] 
     } 
    } 

    } 
} 

:

Bu görüntünün jupyter/all-spark-notebook

Bu benim çoğaltma denetleyicisi olan bir konteyner yerleştirdi. Sorunum, kapsayıcının root olmayan bir kullanıcı kullanması ve takılı diskin root'a ait olması. bu yüzden kapsayıcı diske yazamıyor.

  • GCE kalıcı diskleri monte ve onları kök olmayan kullanıcılar olmadan konteynerler için okuma/yazma yapmak için bir yolu var mı?
  • Başka bir genel soru: Google Container Engine'de root kullanıcısıyla kapsayıcı çalıştırmak güvenli midir?

senin girişlerine

+1

Güvenli olarak ne tanımlarsınız? GKE kubernetes kümesinin bir parçası olarak çalışan her bir VM'yi size verdiğinden, en azından eskiden olduğu gibi, emin olup olmadığından emin değil, ama ben buna inanıyorum. Kök kullanıcı kapsayıcı, ana makinenizde kök çalıştıran ile aynıdır, bu nedenle uygulamanızın kökü normal şekilde çalışıyorsa, o zaman iyi olmalısınız –

cevap

2

. Kullandığım geçici çözüm, ana makine üzerinde kapsayıcının çalıştığı df -h çalıştırmaktı. Oradan, kalıcı depolamanın bağlantı noktasını buldum. /var/lib/kubelet/plugins/kubernetes.io/gce-pd/mounts/<pd-name> gibi bir şey görünmelidir. Ayrıca, root'a eklenmeyen /dev ile başlayan bir dosya sistemine sahip olanlardan biri olacaktır.

Ana makine kutusundan sudo chmod -R 0777 /var/lib/kubelet/plugins/kubernetes.io/gce-pd/mounts/<pd-name>'u çalıştırabildiğini öğrendikten sonra, en azından kapsayıcı dizini kullanabilir, ancak dosyalar yine de root'a ait olacaktır.

+0

Etrafımdaki işler benim için çalıştı. Teşekkürler @funkymonkeymonk ama sanırım biz aynı teknede olduğum kubernetes yapılandırma dosyasında – med

+1

bu tür bir izin değişikliği yapılandırmak gerekiyor. Daha iyi bir çözüm olması gerektiğini düşünüyorum ama bu gerçekleşene kadar, bu işin gerçekleşmesi otomatize edilmek için oldukça kolaydır. – funkymonkeymonk

+0

Bu çalışma için izleyebileceğimiz herhangi bir PR var mı? Bunu işte bir izleme listesine koymak isterim. – funkymonkeymonk

11

Sen kök olmayan kullanıcılar tarafından GCE PDS yazılabilir yapmak için pod güvenlik bağlamı FSGroup alanı kullanabilirsiniz için şimdiden teşekkür ederiz. Bu örnekte

, CRD hacmi ilave gruplarının kendi listesinde 1234 olacaktır grup 1234 kap işlemi ait olacak: Aynı sorun haline ran

apiVersion: v1 
kind: Pod 
metadata: 
    name: test-pd 
spec: 
    securityContext: 
    fsGroup: 1234 
    containers: 
    - image: gcr.io/google_containers/test-webserver 
    name: test-container 
    volumeMounts: 
    - mountPath: /test-pd 
     name: test-volume 
    volumes: 
    - name: test-volume 
    # This GCE PD must already exist. 
    gcePersistentDisk: 
     pdName: my-data-disk 
     fsType: ext4 
+1

Girdiğiniz için teşekkür ederim, bu çözümü denedim, ancak fsGroup'ın görünmediği anlaşılıyor. GKE'de henüz desteklenmedi. Dokümantasyonda olmasa bile, sadece burada bulunduğum https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/volumes.md – med

+0

@med Bunu sizin için biraz kazacağım. –

+0

Teşekkürler @PaulMorie – med

İlgili konular