Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何将jar文件装载到tomcat容器_Kubernetes - Fatal编程技术网

Kubernetes 如何将jar文件装载到tomcat容器

Kubernetes 如何将jar文件装载到tomcat容器,kubernetes,Kubernetes,我的项目中有一个文件夹,其中包含1个属性文件和1个jar文件(db驱动程序)文件 我需要将这两个文件复制到pod上的/usr/local/tomcat/lib目录。我不知道如何在kubernetes yaml文件中实现这一点。下面是我的yaml文件,我试图使用configMap实现这一点,但pod创建失败,错误为“configMap引用不存在的配置键:app.properties” Target/usr/local/tomcat/lib已经有了其他jar文件,所以我尝试使用configMap不覆

我的项目中有一个文件夹,其中包含1个属性文件和1个jar文件(db驱动程序)文件

我需要将这两个文件复制到pod上的/usr/local/tomcat/lib目录。我不知道如何在kubernetes yaml文件中实现这一点。下面是我的yaml文件,我试图使用configMap实现这一点,但pod创建失败,错误为“configMap引用不存在的配置键:app.properties”

Target
/usr/local/tomcat/lib
已经有了其他jar文件,所以我尝试使用configMap不覆盖整个目录,只添加2个特定于我的应用程序的文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcatdeployment
  labels:
    app:  tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app:  tomcat
  template:
    metadata:
      labels:
        app:  tomcat
    spec:
      containers:
        - name: tomcat
          image: tomcat:latest
          imagePullPolicy: IfNotPresent
          volumeMounts:
          - name: appvolume
            mountPath: /usr/local/data
          - name: config
            mountPath: /usr/local/tomcat/lib
            subPath: ./configuration
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
      volumes:
        - name: appvolume
        - name: config
          configMap:
            name: config-map
            items:
              - key: app.properties
                path: app.properties
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-map
data:
  key:  app.properties

当前目录结构

.
├── configuration
│   ├── app.properties
│   └── mysql-connector-java-5.1.21.jar
├── deployment.yaml
└── service.yaml

请分享您对如何实现这一目标的宝贵反馈


关于。

出现此错误是正常的,因为在此卷声明中,您提到了key:app.properties,否则在configmap key:app.properties中,这里的key是key,值是app.properties,因此您必须在卷声明中更改:

volumes:
        - name: appvolume
        - name: config
          configMap:
            name: config-map
            items:
              - key: app.properties
                path: app.properties
致:

有关更多信息,请参见此处:

请尝试以下操作:

kubectl创建configmap-config-map-from file=app.properties-from file=mysql-connector-java-5.1.21.jar

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tomcatdeployment
      labels:
        app:  tomcat
    spec:
      replicas: 1
      selector:
        matchLabels:
          app:  tomcat
      template:
        metadata:
          labels:
            app:  tomcat
        spec:
          containers:
            - name: tomcat
              image: tomcat:latest
              imagePullPolicy: IfNotPresent
              volumeMounts:
              - name: config
                mountPath: /usr/local/tomcat/lib/conf
              ports:
                - name: http
                  containerPort: 8080
                  protocol: TCP
          volumes:
            - name: config
              configMap:
                name: config-map


谢谢@Semah,在这次更改之后,我没有看到以前的错误。但看起来它们替换了/usr/local/tomcat/lib中的所有内容,并且只保留app.properties文件。我想保持现有文件的图像,因为它是,只是添加这个新的文件到该文件夹。我的配置中是否缺少某些内容?是的,我认为此行会导致覆盖子路径:./configuration,您应该将其替换为子路径:./configuration更改子路径:configuration后,它也不起作用。我已经添加了我的目录结构,所以您可以看到我想要将所有文件从配置文件夹复制到容器中的/usr/local/tomcat/lib文件夹。此外,该位置上已经存在默认的tomcat JAR,因此它不应该删除这些JAR。感谢所有帮助:)更改子路径:配置时会产生什么结果?它会从该目录中删除所有文件并添加app.properties文件(但文本为app.properties)。我已添加我的项目文件夹结构以供参考。因此,我从根目录执行kubectl create-f deployment.yaml。我正在尝试将这两个文件从配置复制到docker路径/usr/local/tomcat/lib,而不会过度写入docker中该路径上的任何现有文件。在配置映射中,我们首先从定义卷部分的位置定义配置映射的数据。对于您的示例,您将从哪里获得这个jar文件,它将如何在配置映射部分中出现?
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tomcatdeployment
      labels:
        app:  tomcat
    spec:
      replicas: 1
      selector:
        matchLabels:
          app:  tomcat
      template:
        metadata:
          labels:
            app:  tomcat
        spec:
          containers:
            - name: tomcat
              image: tomcat:latest
              imagePullPolicy: IfNotPresent
              volumeMounts:
              - name: config
                mountPath: /usr/local/tomcat/lib/conf
              ports:
                - name: http
                  containerPort: 8080
                  protocol: TCP
          volumes:
            - name: config
              configMap:
                name: config-map
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcatdeployment
  labels:
    app:  tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app:  tomcat
  template:
    metadata:
      labels:
        app:  tomcat
    spec:
      containers:
        - name: tomcat3
          image: tomcat:latest
          imagePullPolicy: IfNotPresent
          volumeMounts:
          - name: config
            mountPath: /usr/local/tomcat/lib/app.properties
            subPath: app.properties
          - name: config
            mountPath: /usr/local/tomcat/lib/mysql-connector-java-5.1.21.jar
            subPath: mysql-connector-java-5.1.21.jar
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
      volumes:
        - name: config
          configMap:
            name: config-map
            items:
            - key: app.properties
              path: app.properties 
            - key: mysql-connector-java-5.1.21.jar
              path: mysql-connector-java-5.1.21.jar