Chuyện là thế này. Chắc anh em hẳn ai cũng biết là khi run 1 image docker lên 1 container thì đâu hặn container đó chạy mãi mãi.
Container có thể bị crash hoặc chạy xong process thì nó tắt.
Có 1 cách bình hay sử dụng như trước là mình build lại Dockerfile và nhét vào entrypoint 1 script hay 1 command để nó keep hay tạo ra 1 process chạy hoài không nghỉ.
==> thế là container sẽ không bị shutdown.
Giờ mình thấy 1 các nữa là bạn nhét command vào trong file docker compose hoặc manifest của deployment.
để sau khi run pod thành công thì nó run command này.
Với docker-compose.yaml
version: '2'
services:
kafkacat:
image: edenhill/kafkacat:1.6.0
container_name: kafkacat
entrypoint:
- /bin/sh
- -c
- |
apk add jq;
while [ 1 -eq 1 ];do sleep 60;done
với manifest của kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
workload.user.cattle.io/workloadselector: deployment-kafka-kafkacat
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
workload.user.cattle.io/workloadselector: deployment-kafka-kafkacat
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
workload.user.cattle.io/workloadselector: deployment-kafka-kafkacat
spec:
containers:
- args:
- -c
- apk add jq; while [ 1 -eq 1 ];do sleep 60;done
command:
- /bin/sh
image: edenhill/kafkacat:1.6.0
imagePullPolicy: Always
name: kafkacat
Reference Links:
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments