如何在 creating/running pods 时在 kubectl 中传递运行时参数?
How to pass the runtime arguments in kubectl while creating/running the pods?
我有一个 Spring 批处理应用程序,作业很少,它正在执行,如下突出显示
java -jar /appl/myapp/my-bat-spr-jobs-*.jar updtTablJob
java -cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp jsonToQueue
我已经定义了我的 docker 文件,如下所述
FROM openjdk:8-jre-alpine
ENV my-bat-spr-jobs.jar
WORKDIR /root/apps
COPY . /appl/myapp
ENTRYPOINT ["java "]
我想在 Azure Kubernetes 上deploy/run这个docker化的应用程序。
我已经定义了我的 POD.YAML 如下所述
apiVersion: v1
kind: Pod
metadata:
name: my_app
labels:
app: my_app
spec:
containers:
- name: my_app
image: docker:5000/path_to_my_custom_image
如何使用所需的 cmd args 部署 POD - 例如“-jar /appl/myapp/my-bat-spr-jobs-.jar updtTablJob”或“-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-.jar com.demo.jobs.mappingAppjsonToQueue"?
我应该只 运行 图像而不定义 POD 定义吗?像下面这样的东西?
kubectl run -ti --rm test --image=path_to_my_custom_image --namespace default -- sh -c "-jar /appl/myapp/my-bat-spr-jobs-*.jar updtTablJob"
kubectl run -ti --rm test --image=path_to_my_custom_image --namespace default -- sh -c "-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp jsonToQueue"
我的目的是启动容器,根据 运行time arg 执行作业并销毁容器。
可以通过command参数或者args参数(甚至env)传入运行参数
如下:
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: "test"
spec:
template:
spec:
containers:
- name: "test"
image: "test:v1.0"
{{- if .Values.command }}
command:
{{ toYaml .Values.command | nindent 12 }}
{{- end }}
{{- if .Values.args }}
args:
{{ toYaml .Values.args | nindent 12 }}
{{- end }}
{{- if .Values.env }}
env:
{{ toYaml .Values.env | nindent 12 }}
{{- end }}
- 如果使用命令
values.yaml
command:
- java
- -jar
- /appl/myapp/my-bat-spr-jobs-*.jar
- updtTablJob
- 如果使用参数
values.yaml
args:
- -cp
- /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp
- jsonToQueue
- 如果使用环境
values.yaml
args:
- $env0
- $env1
- $env2
env:
- name: "env0"
value: "-cp"
- name: "env1"
value: "/opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp"
- name: "env2"
value: "jsonToQueue "
我有一个 Spring 批处理应用程序,作业很少,它正在执行,如下突出显示
java -jar /appl/myapp/my-bat-spr-jobs-*.jar updtTablJob
java -cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp jsonToQueue
我已经定义了我的 docker 文件,如下所述
FROM openjdk:8-jre-alpine
ENV my-bat-spr-jobs.jar
WORKDIR /root/apps
COPY . /appl/myapp
ENTRYPOINT ["java "]
我想在 Azure Kubernetes 上deploy/run这个docker化的应用程序。
我已经定义了我的 POD.YAML 如下所述
apiVersion: v1
kind: Pod
metadata:
name: my_app
labels:
app: my_app
spec:
containers:
- name: my_app
image: docker:5000/path_to_my_custom_image
如何使用所需的 cmd args 部署 POD - 例如“-jar /appl/myapp/my-bat-spr-jobs-.jar updtTablJob”或“-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-.jar com.demo.jobs.mappingAppjsonToQueue"?
我应该只 运行 图像而不定义 POD 定义吗?像下面这样的东西?
kubectl run -ti --rm test --image=path_to_my_custom_image --namespace default -- sh -c "-jar /appl/myapp/my-bat-spr-jobs-*.jar updtTablJob"
kubectl run -ti --rm test --image=path_to_my_custom_image --namespace default -- sh -c "-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp jsonToQueue"
我的目的是启动容器,根据 运行time arg 执行作业并销毁容器。
可以通过command参数或者args参数(甚至env)传入运行参数
如下:
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: "test"
spec:
template:
spec:
containers:
- name: "test"
image: "test:v1.0"
{{- if .Values.command }}
command:
{{ toYaml .Values.command | nindent 12 }}
{{- end }}
{{- if .Values.args }}
args:
{{ toYaml .Values.args | nindent 12 }}
{{- end }}
{{- if .Values.env }}
env:
{{ toYaml .Values.env | nindent 12 }}
{{- end }}
- 如果使用命令
values.yaml
command:
- java
- -jar
- /appl/myapp/my-bat-spr-jobs-*.jar
- updtTablJob
- 如果使用参数
values.yaml
args:
- -cp
- /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp
- jsonToQueue
- 如果使用环境
values.yaml
args:
- $env0
- $env1
- $env2
env:
- name: "env0"
value: "-cp"
- name: "env1"
value: "/opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp"
- name: "env2"
value: "jsonToQueue "