我正在尝试在一个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"发布于 2020-12-29 17:50:21
将以下代码块添加到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"]command ["/bin/sh", "-c"]显示“运行一个外壳,并执行以下指令”。然后将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)。你应该看到你的罐子在那里。
发布于 2020-12-29 17:34:22
您需要将jar保存在/jdbc-jar文件夹中
尝试将yaml更新为以下内容
command: ["/bin/sh"]
args: ["-c", "wget -O /pod-data/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"] https://stackoverflow.com/questions/65484757
复制相似问题