初始化容器与边车容器实战 8月28日实验

初始化容器与边车容器实战

PS:昨天晚上学习了init container与sidecar的容器设计思路,所以今天设计了一个小实验实际操作一下,通过configmap挂载配置文件在上一篇博客

注意:

  • 初始化容器与边车容器都不能共享主容器的存储,必须通过volumeMount的挂载才能实现
  • 初始化容器执行完毕后会被终结(Terminated)

init container

实验目标:

通过初始化容器给nginx下载一个html网页,放在nginx的默认目录

废话少说,上代码

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      name: nginx-tem
      labels:
        app: nginx
    spec:
      initContainers:
      - image: busybox
        name: busybox
        command:
        - wget
        - "-O"
        - "/work/test.html"    ##下载文件的目录需要与挂载的位置相同
        - http://www.baidu.com
        volumeMounts:
        - name: work
          mountPath: "/work"   ##这里设置初始化容器挂载的位置
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: nginx-pod
        livenessProbe:  ##这里设置了一个简单的就绪探针
          exec:
            command: ["/bin/sh","-c","ls /work/test.html"]
          initialDelaySeconds: 5   ##5秒后开始检测
          periodSeconds: 3   ##3秒检测一次,便于实验
        volumeMounts:
          - name: nginx-configmap
            mountPath: /etc/nginx/nginx.conf  ##通过configmap挂载配置文件
            subPath: nginx.conf
        volumeMounts:
          - name: work   ##使用于初始化容器相同的挂载
            mountPath: "/usr/share/nginx/html"  ##nginx的默认首页路径
        ports:
        - containerPort: 80
          name: nginx-port
      volumes:
      - name: nginx-configmap
        configMap:
          name: nginx-configmap
          items:
          - key: nginx.conf
            path: nginx.conf
      volumes:
      - name: work
        emptyDir: {}    ##这里使用emptydir的方式挂载,类似于docker的匿名挂载

为了方便测试我们用命令通过nodeport方式暴露我们的service

kubectl create service nodeport nginx --tcp=80

测试访问

PS:这里是nodeport的形式,不同于hostport,nodeport方式所有的nodeip都可以实现访问,而hostport只能通过所在pod的nodeIP进行访问。

测试访问:
在这里插入图片描述
在这里插入图片描述

sidecar container

实验目标:

我们用一个sidecar容器去实时输出主业务容器的日志
上yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: app01
spec:
  containers:
  - name: app
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i:`date`" >> /var/log/date.log; ##使用死循环模拟产生日志
        i=$((i+1))
        sleep 1
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: sidecar
    image: busybox
    imagePullPolicy: IfNotPresent
    args: [/bin/sh, -c,"tail -f -n+1 /var/log/date.log"]
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}

测试访问

查看sidecar容器日志
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈小c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值