sidecar模式

sidecar

简单的说,一个pod内有多个容器应用在同时工作,相互协同,完成特定需求。
在这里插入图片描述

sidecar的思想核心就是:不侵入主容器的前提下,可以进行服务功能扩展。一般都是一些共性的能力,比如说:

  • 日志代理/转发,例如 fluentd;
  • Service Mesh,比如 Istio,Linkerd;
  • 代理,比如 Docker Ambassador;
  • 探活:检查某些组件是不是正常工作;
  • 其他辅助性的工作,比如拷贝文件,下载文件等;

k8s不会明显区分主容器与sidecar容器,如果主容器与sidecar容器有启动顺序要求,目前没有特别优雅的方式(有扩展方案)。

示例

示例架构说明
在这里插入图片描述
两个sidecar应用向挂载的路径写入文件内容,主应用程序则可以读取到写入的文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-webapp
  name: nginx-webapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-webapp
  template:
    metadata:
      labels:
        app: nginx-webapp
    spec:
      containers:
      - image: busybox
        command: ["/bin/sh"]
        args: ["-c", "while true; do echo echo $(date -u) 'Hi I am from Sidecar container 1<br />' >> /var/log/index.html; sleep 5;done"]
        name: sidecar-container1
        volumeMounts:
          - name: var-logs
            mountPath: /var/log
      - image: busybox
        command: ["/bin/sh"]
        args: ["-c", "while true; do echo echo $(date -u) 'Hi I am from Sidecar container 2<br />' >> /var/log/index.html; sleep 5;done"]
        name: sidecar-container2
        volumeMounts:
          - name: var-logs
            mountPath: /var/log
      - image: nginx
        name: main-container
        ports:
          - containerPort: 80
        volumeMounts:
          - name: var-logs
            mountPath: /usr/share/nginx/html
      volumes:
      - name: var-logs
        emptyDir: {}

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-webapp
  labels:
    run: nginx-webapp
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: nginx-webapp
  type: NodePort

测试验证:

$ kubectl get svc -o wide
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE    SELECTOR
nginx-webapp            NodePort    10.106.215.126   <none>        80:30720/TCP     12m    app=nginx-webapp

可以看到nodeport的映射端口是30720,可以在浏览器中输入localhost:30720即可查看
在这里插入图片描述

参考

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值