JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

k8s 一个pod里部署多个容器方法

wys521 2024-09-07 03:10:12 精选教程 85 ℃ 0 评论

当容器具有完全相同的生命周期,或者容器必须在同一节点上运行时。最常见的情况是,您需要在一个与主容器相同的节点上定位和管理一个助手进程。

将容器组合到单个容器中的另一个原因是容器中容器之间的通信更加简单。这些容器可以通过共享卷(写入共享文件或目录)和进程间通信(信号或共享内存)进行通信。

下面是一个共享存储卷范例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: duo-pod
  labels:
    appname: duo-pod
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
        appname: duo-pod
  template:
    metadata:
      labels:
        appname: duo-pod
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: beta.kubernetes.io/arch
                operator: In
                values:
                - amd64
      containers:
      - name: nginx
        image: nginx
        # 只有镜像存在时,才拉取
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: nginx-volume
      - name: busybox
        image: busybox
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - mountPath: /tmp
          name: nginx-volume
        command: ["/bin/sh", "-c"]
        args:
          - while true; do
              date >> /tmp/index.html;
              sleep 1;
            done
      restartPolicy: Always
      volumes:
      - name: nginx-volume
        emptyDir: {}

注意:此例pod里要部署多个容器的话,必须有一个共享的存储卷,这个存储卷可以一个像范例中声明空的,或者是一个nfs或是pvc等,这个是必须有的,在第一个和第二个或是更多的容器里都要挂载当前容器的存在目录,像第一个容器是挂载nginx的家目录,第二个容器挂载到/tmp目录里(第二个容器无所谓哪个目录,只要是存在的就成),然后两个容器里都挂载到一个外部共享存储卷叫nginx-volume名称的这个存储卷即可,这样二个容器都可以读取到这个共享数据或是写入的。

上面的意思就是第二个容器每隔一秒把当前日期写入到/tmp/index.html文件里,第一个容器因为挂载目录也是该存储卷一样的名称里,所以你访问这个nginx的时候就是这个不同日期时间的内容文件里。

下面这个范例

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    name: my-app
spec:
  containers:
  - name: tomcat
    image: tomcat:1.0
    ports:
    - containerPort: 8080
  - name: mysql
    image: mysql:5.7
    ports:
    - containerPort: 3306

这个范例说明属于同一Pod的容器之间相互访问仅需通过localhost就可以访问

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表