जहां तक मुझे पता है कि वहाँ कोई "आधिकारिक" जिस तरह से इस तरह से आप चाहते हैं करने के लिए है हूँ, और है कि मैं डिजाइन द्वारा विश्वास करते हैं। Pods को क्षणिक और क्षैतिज स्केलेबल माना जाता है, और जॉब्स को बाहर निकलने के लिए डिज़ाइन किया गया है। मौजूदा पॉड में क्रॉन जॉब "संलग्न" होने से उस मॉड्यूल में फिट नहीं होता है। अगर काम पूरा हो गया तो शेड्यूलर को कोई जानकारी नहीं होगी।
इसके बजाय, एक नौकरी नौकरी चलाने के लिए विशेष रूप से आपके आवेदन का एक उदाहरण ला सकती है और फिर नौकरी पूरी होने के बाद इसे नीचे ले जाती है। ऐसा करने के लिए आप अपनी तैनाती के लिए नौकरी के लिए एक ही छवि का उपयोग कर सकते हैं लेकिन command:
सेट करके एक अलग "एंट्रीपॉइंट" का उपयोग कर सकते हैं।
यदि उन्हें नौकरी के लिए आपके आवेदन द्वारा बनाए गए डेटा तक पहुंच की आवश्यकता है तो उस डेटा को एप्लिकेशन/पॉड के बाहर जारी रखने की आवश्यकता होगी, तो आप इसे कुछ तरीकों से कर सकते हैं लेकिन स्पष्ट तरीके डेटाबेस या लगातार मात्रा होगी। उदाहरण एक डेटाबेस का उपयोग कर कुछ इस तरह दिखेगा के लिए:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: APP
spec:
template:
metadata:
labels:
name: THIS
app: THAT
spec:
containers:
- image: APP:IMAGE
name: APP
command:
- app-start
env:
- name: DB_HOST
value: "127.0.0.1"
- name: DB_DATABASE
value: "app_db"
और एक नौकरी एक ही डाटाबेस से कनेक्ट होता है, लेकिन एक अलग "Entrypoint" के साथ:
apiVersion: batch/v1
kind: Job
metadata:
name: APP-JOB
spec:
template:
metadata:
name: APP-JOB
labels:
app: THAT
spec:
containers:
- image: APP:IMAGE
name: APP-JOB
command:
- app-job
env:
- name: DB_HOST
value: "127.0.0.1"
- name: DB_DATABASE
value: "app_db"
या लगातार मात्रा दृष्टिकोण होगा कुछ इस तरह दिखाई:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: APP
spec:
template:
metadata:
labels:
name: THIS
app: THAT
spec:
containers:
- image: APP:IMAGE
name: APP
command:
- app-start
volumeMounts:
- mountPath: "/var/www/html"
name: APP-VOLUME
volumes:
- name: APP-VOLUME
persistentVolumeClaim:
claimName: APP-CLAIM
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: APP-VOLUME
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /app
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: APP-CLAIM
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
selector:
matchLabels:
service: app
इस तरह एक नौकरी के साथ, एक ही मात्रा के लिए संलग्न:
apiVersion: batch/v1
kind: Job
metadata:
name: APP-JOB
spec:
template:
metadata:
name: APP-JOB
labels:
app: THAT
spec:
containers:
- image: APP:IMAGE
name: APP-JOB
command:
- app-job
volumeMounts:
- mountPath: "/var/www/html"
name: APP-VOLUME
volumes:
- name: APP-VOLUME
persistentVolumeClaim:
claimName: APP-CLAIM
स्रोत
2017-12-27 15:04:43
आपको मौजूदा पॉड से कनेक्ट क्यों करना है? क्या आप अपनी स्क्रिप्ट को एक नए फली में निष्पादित नहीं कर सकते? एक अन्य संभावना आपके मुख्य फली (उदा। HTTP) पर एक सर्वर खोल रही है और निर्धारित नौकरी से इसे कॉल करें। – kichik
यह एक सिम्फनी एप्लिकेशन है जिसे मैं कमांड पर कॉल करना चाहता हूं। सर्वर पर कई किरायेदार हैं और यह 'ls -s */| के लिए आसान होगा कट-एफ 1-डी '/' 'निर्देशिकाओं (इंस्टॉलेशन) की पुनरावर्तनीय सूची प्राप्त करने के लिए मैन्युअल रूप से प्रत्येक इंस्टॉलेशन के लिए क्रॉन एंट्री बनाना होगा। यह 'स्थापना = $ (ls -d */| cut -f1 -d'/') जैसे कुछ के साथ खत्म हो जाएगा; सीडी/पथ/$ स्थापना; php ऐप/कंसोल कुछ: कमांड ' नया पॉड प्रत्येक इंस्टॉलेशन के बारे में नहीं पता होगा और इंस्टॉलेशन चर तक पहुंच नहीं होगी और एप्लिकेशन को सेट अप किए बिना यह वास्तविक उदाहरण होगा। – Aeisor