kubernetes(k8s)数据没有在各个容器之间共享

发表于: 2020-12-30   最后更新时间: 2020-12-30 23:08:37   1,361 游览

我试图在一个 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-30

将以下代码块添加到你的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。

你的答案

查看kubernetes相关的其他问题或提一个您自己的问题