2015-03-11 10 views
23

बेड़े का उपयोग करके क्यूबर्नेट कंटेनर प्रारंभ करें जब मैं शुरू होता हूं तो कंटेनर के अंदर चलाने के लिए एक कमांड निर्दिष्ट कर सकता हूं। ऐसा लगता है कि यह कुबर्नेट्स के साथ भी आसानी से संभव होना चाहिए, लेकिन मुझे ऐसा कुछ भी नहीं लगता है जो कहता है। ऐसा लगता है कि आपको विशेष रूप से एक निश्चित कमांड के साथ लॉन्च करने के लिए कंटेनर बनाना है।विशिष्ट कमांड

एक सामान्य उद्देश्य कंटेनर रखने और इसे विभिन्न तर्कों के साथ लॉन्च करना विशिष्ट मामलों के लिए कई अलग-अलग कंटेनर बनाने, या पर्यावरण चर स्थापित करने से कहीं अधिक सरल है।

क्या स्टार्टअप पर डॉकर छवि के भीतर कुबर्नेट्स पॉड चलाने का आदेश निर्दिष्ट करना संभव है?

उत्तर

31

मैं इसे ढूंढने में 45 मिनट व्यतीत करता हूं। फिर मैं इसके बारे में एक प्रश्न पोस्ट करता हूं और 9 मिनट बाद समाधान ढूंढता हूं।

कैसंड्रा example के अंदर जो चाहता था उस पर एक संकेत है। छवि के नीचे command लाइन:

id: cassandra 
kind: Pod 
apiVersion: v1beta1 
desiredState: 
    manifest: 
    version: v1beta1 
    id: cassandra 
    containers: 
     - name: cassandra 
     image: kubernetes/cassandra 
     command: 
      - /run.sh 
     cpu: 1000 
     ports: 
      - name: cql 
      containerPort: 9042 
      - name: thrift 
      containerPort: 9160 
     env: 
      - key: MAX_HEAP_SIZE 
      value: 512M 
      - key: HEAP_NEWSIZE 
      value: 100M 
labels: 
    name: cassandra 

समाधान ढूँढने के बावजूद, यह अच्छा होगा यदि वहाँ Kubernetes परियोजना जहाँ मैं सभी विभिन्न विन्यास फाइल के लिए संभव विकल्पों में से देख सकते में कहीं स्पष्ट था होगा (फली , सेवा, प्रतिकृति नियंत्रक)।

+3

AFAIK, वर्तमान में दो सभ्य विकल्प हैं: 1) अपने क्लस्टर मास्टर के https: // अपने-आईपी-यहां/swagger-ui/पेज पर जाएं। यह आपको उपलब्ध आरईएसटी कमांड और उनके ऑब्जेक्ट विवरणों के माध्यम से ब्राउज़ करने की अनुमति देता है। 2) कोड में एपीआई परिभाषा पर सीधे देखें: https://github.com/GoogleCloudPlatform/kubernetes/blob/master/pkg/api/v1beta1/types.go –

+3

मुझे पता नहीं है कि यह सही नहीं है लेकिन यह एक अच्छा संदर्भ है । https://cloud.google.com/compute/docs/containers/container_vms#container_manifest – Damien

+0

धन्यवाद, आप दोनों। यह सहायता करता है। – static416

21

मानकों के साथ एक आदेश का उपयोग करने के लिए देख उन लोगों के लिए, आप एक सरणी उदाहरण के लिए

उपलब्ध कराने की आवश्यकता

command: [ "bin/bash", "-c", "mycommand" ] 

या भी

command: 
    - "bin/bash" 
    - "-c" 
    - "mycommand" 
+0

क्या 'mycommand' में रिक्त स्थान हो सकते हैं? –

+1

एक पंक्ति एक पैरामीटर है। यदि आपके पैरामीटर में रिक्त स्थान हैं, तो यह ठीक है, लेकिन इसे एकाधिक पैरामीटर के रूप में पार्स नहीं किया जाएगा – MrE

+0

'args' का उद्देश्य क्या है यदि कोई' आदेश 'का उपयोग करके सभी तर्क निर्दिष्ट कर सकता है? –

4

टिप्पणी में डेरेक महार के सवाल का जवाब करने के लिए उपरोक्त:

अगर कोई सभी ar निर्दिष्ट कर सकता है तो तर्क का उद्देश्य क्या है आदेश का उपयोग कर स्मारक?

डॉकरफ़ाइल केवल एंट्रीपॉइंट या केवल एक सीएमडी या दोनों एक साथ हो सकते हैं।

तो एक साथ इस्तेमाल किया तो जो कुछ भी सीएमडी में है ENTRYPOINT में आदेश को पारित कर दिया है तर्क यानी के रूप में

ENTRPOINT ["print"] 
CMD ["hello", "world"] 

तो Kubernetes में यानी

command: ["print"] 

यह मूल्य को पार कर जाएगी जब आप एक आदेश निर्दिष्ट कंटेनर डॉकरफाइल में एंट्रीपॉइंट का।

यदि आप केवल तर्क निर्दिष्ट करते हैं तो उन तर्कों को कंटेनर के एंट्रीपॉइंट में जो भी आदेश दिया जाता है, उसे पारित किया जाएगा।

संबंधित मुद्दे