k8s单pod多容器

首先要知道,为什么以pod为k8s的最小调度单元,最主要原因是为了对容器统一编排。

参考:https://www.cnblogs.com/tylerzhou/p/11009412.html

注意点:

1.pod中的多容器数据不共享,即使两个容器用的同一镜像,但是容器名称不一样,在容器A的/home下新建文件,容器B的/home下也没有

一.应用场景

  • 代理,桥接和适配器 使主容器与外部世界联通.比如Apache http服务器或者nginx可承载静态文件.也可以做为一个web的反向代理服务器.
  • Sidecar containers "帮助"主容器,比如日志文件监视器.一个日志监视器构建完成以后,可以由不同的应用来使用.另一个示例是sidecar 容器为主容器加载文件和运行需要的数据
  • 两个容器,一个初始化容器来初始化一些配置,如挂载文件到指定目录write操作,主容器再挂载上然后read操作

二.场景一

同一pod内的容器共识存储卷

你可以使用一个共享的存储卷来简单高效的地在容器间共享数据.大多数情况下,使用一个共享目录在同一pod里的不同容器间共享数据就够了.

一个标准的同一pod内容器共享存储卷的用例是一个容器往共享存储卷里写入数据,其它的则从共享目录里读取数据

apiVersion: v1
kind: Pod
metadata:
  name: mc1
spec:
  volumes:
  - name: html
    emptyDir: {}
  containers:
  - name: 1st
    image: nginx
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
  - name: 2nd
    image: debian
    volumeMounts:
    - name: html
      mountPath: /html
    command: ["/bin/sh", "-c"]
    args:
      - while true; do
          date >> /html/index.html;
          sleep 1;
        done

三.initcontainer注意

参考:http://events.jianshu.io/p/e84008d67e86

  • 容器中修改或生成的配置,必须用volume挂载到容器中

    如下initContainers在/usr/data挂载目录下创建a.txt,再将目录挂载到containers的/usr/local。
    docker exec进入容器,在/usr/data下找不到文件,凡是initcontainers新生成的文件或修改的文件,在容器中都无法找到,只能通过docker inspect 容器id|grep volumes在宿主机上找到
    
    spec:
      volumes:
      - name: data
        emptyDir: {}
      initContainers:
      - name: fix-permissions
        image: busybox
        command: ["sh", "-c", "touch /usr/data/a.txt"]
        volumeMounts:
        - name: data
          mountPath: /usr/data
      containers:
      - name: mysql
        image: mysql
        volumeMounts:
        - name: data
          mountPath: /usr/local
    
posted @ 2023-02-26 11:53  MISF  阅读(553)  评论(0编辑  收藏  举报
     JS过度和变形效果演示   
  
    html5.png