Kubernetes 配置示例 - 一个Pod 包含多个容器

一般都是一个 pod 里面包含一个容器,但是有些情况,多个容器之间有比较亲密的关系,需要通过共享目录或本地 localhost 请求互相通信的话,可以放到一个 pod 里。比如:一个tomcat 的 web 应用,可以把 tomcat 算作一个容器,我们自己的 war 包可以单独做一个镜像,然后通过共享目录挂载到 tomcat 的容器里。这样做的好处是当war包更新时,我们只需更新我们应用的镜像。

apiVersion: v1
kind: Pod
metadata:
  name: javaweb-2
spec:
# initContainers 会比 spec.containers 里定义的容器先启动
  initContainers:
  - image: xxx/sample-war:v1
    command: ["cp", "/sample.war", "/app"]
    volumeMounts:
    - mountPath: /app
      name: app-volume
  containers:
  - image: xxx/tomcat:9.0
    name: tomcat
    command: ["sh", "-c", "/root/apache-tomcat/bin/start.sh"]
    volumeMounts:
    - mountPath: /root/apache-tomcat/webapps
      name: app-volume
    ports:
    - containerPort: 8080
      hostPort: 8001
  volumes:
  - name: app-volume
    emptyDir: {}

注:这里的第一个 image 改成自己的包含 war 包的镜像,第二个 image 改成实际的tomcat 的镜像

posted @ 2021-12-28 16:50  一剑侵心  阅读(2654)  评论(0编辑  收藏  举报