Bildiğim kadarıyla istediğiniz bu şekilde yapmak için hiçbir "resmi" bir yolu vardır farkındayım olarak, ve ben tasarımdan inanmak. Podlar geçici ve yatay olarak ölçeklenebilir olmalı ve İşler çıkmak için tasarlanmıştır. Varolan bir pod için bir cron işi "ek" olması bu modüle uymuyor. İşin tamamlanıp sonuçlanmadığını Scheduler'ın hiçbir fikri olmazdı.
Bunun yerine, bir iş özellikle İşi yayınlanmasına ilişkin uygulamasının örneğini getirmek için olabilir ve İş tamamlandıktan sonra sonra aşağı çekmek. Bunu yapmak için size Dağıtım gelince Job için aynı Resim kullanmak ancak command:
ayarlayarak farklı "GirişNoktası" kullanabilirsiniz.
İşiniz, uygulamanız tarafından oluşturulan verilere erişmeye ihtiyaç duyuyorsa, bu verilerin uygulama/Pod dışında kalıcı olması gerekir, bunun birkaç yolu olabilir, ancak açık yollar bir veritabanı veya kalıcı bir birim olabilir. böyle bir şey olmazdı bir veritabanı useing Örneğin:
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"
Ve aynı veritabanına bağlanan bir iş, ancak farklı bir "GirişNoktası" ile:
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"
Veya kalıcı hacim yaklaşımı olur aynı hacimde takılarak, böyle bir iş ile
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
: şuna benzer
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
Neden varolan bir bölüme bağlanmak zorundasınız? Komut dosyanızı yeni bir bölmede yürütemez misiniz? Başka bir olasılık, ana bölmenizde (ör. HTTP) bir sunucu açmak ve programlanan işten bir çağrı yapmaktır. – kichik
Bu, komutları çağırmak istediğim Symfony uygulamasıdır. Sunucuda birçok kiracı var ve daha kolay olurdu ls -s */| -f1 -d '/' 'yinelenen dizinleri (kurulumları) almak için, her kurulum için elle bir cron girişi oluşturulmasından daha fazla. Bu, 'installation = $ (ls -d */| cut -f1 -d'/') gibi bir şeyle sonuçlanacak; cd/yol/$ yükleme; php app/console bazı: command' Yeni pod, her kurulumdan haberi olmayacak ve aşağı çekmeden ve gerçek bir örnekmiş gibi uygulamayı kurmadan kurulum değişkenlerine erişemeyecek. – Aeisor