阅读 92

kubernetes Multi Container Pods - 多容器模型Pod

k8s 多容器模型Pod

在大多数的简单pod,都是有一个container。然而在实际中,会根据系统的需要设计不同的pod,pod中的容器数量就会不止一个。

三种常见的pod设计风格中

  • Sidecar containers

此种风格一般用于文件或者资源共享,常见的模型有消费者-生产者模型。生产者把数据放置到共享空间,消费者读取该共享空间的数据

参考: 

Example:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: producer
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done      
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-consumer-1
    image: busybox
    args: [/bin/sh, -c, ‘tail -n+1 -f /var/log/1.log‘]
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-consumer-2
    image: busybox
    args: [/bin/sh, -c, ‘tail -n+1 -f /var/log/2.log‘]
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}
  • Ambassador containers

代理者模式,通常用于某一个container对外提供接口访问,外部请求只能够通过此代理容器来实现访问内部其他容器,内部容器也仅仅是只通过此代理来和外部请求进行信息交互。

Example:

apiVersion: v1
kind: ConfigMap
metadata:
  name: fruit-service-ambassador-config
data:
  haproxy.cfg: |-
    global
        daemon
        maxconn 256

    defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms

    listen http-in
        bind *:80
        server server1 127.0.0.1:8775 maxconn 32

-------

apiVersion: v1
kind: Pod
metadata:
  name: fruit-service
spec:
  containers:
  - name: legacy-fruit-service
    image: linuxacademycontent/legacy-fruit-service:1
  - name: haproxy-ambassador
    image: haproxy:1.7
    ports:
    - containerPort: 80
    volumeMounts:
    - name: config-volume
      mountPath: /usr/local/etc/haproxy
  volumes:
  - name: config-volume
    configMap:
      name: fruit-service-ambassador-config

  最后以此命令模仿外部访问

kubectl run busybox --image=busybox --rm -it --restart=Never -- curl $(kubectl get pod fruit-service -o=custom-columns=IP:.status.podIP --no-headers):80
  • Adapter containers

内部容器数据输出到外部时,数据会先通过一个容器进行格式转换,来使外部得到统一规范的数据

参考官网:

原文:https://www.cnblogs.com/kknight/p/14835498.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐