我试图在一个 pod 中创建两个容器,其中一个容器是 init 容器。init容器的工作是下载一个jar,并将其提供给应用程序容器。我能够创建所有的东西,日志看起来也很好,但是当我检查时,我没有在我的应用程序容器中看到jar。以下是我的部署yaml。
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-service-test
labels:
app: web-service-test
spec:
replicas: 1
selector:
matchLabels:
app: web-service-test
template:
metadata:
labels:
app: web-service-test
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: web-service-test
image: some image
ports:
- containerPort: 8081
volumeMounts:
- name: shared-data
mountPath: /tmp/jar
initContainers:
- name: init-container
image: busybox
volumeMounts:
- name: shared-data
mountPath: /jdbc-jar
command:
- wget
- "https://repo1.maven.org/maven2/com/oracle/ojdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0.jar"
将以下代码块添加到你的init容器部分。
command: ["/bin/sh","-c"] args: ["wget -O /jdbc-jar/ojdbc8-19.3.0.0.jar https://repo1.maven.org/maven2/com/oracle/ojdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0.jar"]
命令
[["/bin/sh", "-c"]
意思是 "运行一个shell,并执行以下指令"。然后将args作为命令传递给shell。在shell脚本中,命令之间用分号隔开。在wget命令中,我添加了-O
标志,从指定的url下载jar,并将其保存为/jdbc-jar/ojdbc8-19.3.0.0.jar。要检查jar是否在容器中持久化。只需执行命令。$ kubectl exec -it web-service-test -- /bin/bash
然后进入文件夹
/jdbc-jar
(cd jdbc-jar
)并列出其中的文件(ls -al
)。你应该可以在那里看到你的jar。你的答案