2016-03-21 18 views
0

google container'ta her pod başlatılırken yürütmek istediğim /usr/startup.sh betiğini oluşturdum.google container başlangıç ​​komut dosyası

Aşağıdaki gibi yaml komutunu kullanarak denedim.

komut: "sh /usr/start.sh" komut: [ "sh", "c", "/usr/start.sh"] her türlü varsa

Lütfen beni içeri Google konteyner/pod'da başlangıçta tanımlı komut dosyasını çalıştırabilmenin yolu.

cevap

2

PostStart lifecycle hook'a bakmak isteyebilirsiniz.

bir örnek

kubernetes repo bulunabilir: Burada
containers: 
    - name: nginx 
    image: resouer/myapp:v6 
    lifecycle: 
     postStart: 
     exec: 
      command: 
      - "cp" 
      - "/app/myapp.war /work" 

şunlardır:

// Lifecycle describes actions that the management system should take in response to container lifecycle 
// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks 
// until the action is complete, unless the container process fails, in which case the handler is aborted. 
type Lifecycle struct { 
    // PostStart is called immediately after a container is created. If the handler fails, the container 
    // is terminated and restarted. 
    PostStart *Handler `json:"postStart,omitempty"` 
    // PreStop is called immediately before a container is terminated. The reason for termination is 
    // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. 
    PreStop *Handler `json:"preStop,omitempty"` 
} 
+0

Bu, ReplicationController için çalışmıyor gibi görünüyor. Pod ile çalışır. Pod, "RunContainerError" durumuna giriyor. Bir şey apiVersion Eksik varsa bana bildirin lütfen: v1 çeşit: ReplicationController meta: ad: adını varsayılan: kopyaları: 2 seçici: uygulaması: testtomcat şablonu: meta: spec testtomcat etiketler: uygulaması: testtomcat spec: konteynerler: - isim: testtomcat resim: gcr.io/project/tomcat-:v4 ömrü: postStart: exec: komutu: - "/usr/start.sh" bağlantı noktaları: - containerPort: 8080 – Nitin

+0

Bunu takip et ve iyi çalışıyor. yaşam döngüsü: postStart: exec: komut: - "sh" - "/usr/local/s3fsmount.sh" Yardım için teşekkürler! – Nitin

0

Başlangıç ​​komut dosyaları değil her kapsül için düğüm başlangıçta çalıştırın. Şu anda bir pod bir düğümde başladığında çalıştırmak için kubelet'te "kanca" yok. Ne yapmaya çalıştığını açıklayabilir misin?

+0

Türünü kullanma: yaml içinde ReplicationController Pod'da google depolama alanı yerleştirmeye çalışıyorum. Docker Image'de gerekli paketler kuruldu ve Google Container Engine'de test edildi. Elle monte etmek gayet iyi çalışıyor ancak otomatikleştiremiyor. Yaml dosyasındaki komut parametresiyle kabuk komut dosyasını kullanarak denedim./Etc/fstab içinde "my-bucket/mount/point gcsfuse rw, auto, user" ifadesini ekledim ancak çalışmıyor. podda her seferinde "mount/mount/point" komutunu çalıştırmanız gerekir. "Gcsfuse --implicit-dirs my-bucket/mount/point" veya "mount/mount/point" komutunu pod başlangıcında yürütmek istiyorum. – Nitin

+0

Aşağıdaki gibi çalıştı ve iyi çalışıyor. Yaşam Döngüsü: postStart: exec: komut: - "sh" - "/usr/local/s3fsmount.sh" yardım için teşekkürler! – Nitin