美文网首页
云原生系列1 pod基础

云原生系列1 pod基础

作者: 李福春carter | 来源:发表于2021-02-14 23:43 被阅读0次

POD解决了什么问题?

<br />
成组资源调度问题的解决。

mesos采用的资源囤积策略容易出现死锁和调度效率低下问题;<br />google采用的乐观调度技术难度非常大;<br />
<br />而k8s使用pod优雅的解决了这个问题。<br />
<br />pod的出现解决了两个问题。
<br />第一:解决了超亲密关系的进程协作;
<br />第二:容器设计模式sidecar应用的载体;<br />
<br />

POD是什么?

<br />
<br />pod是逻辑概念,在linux操作系统中并不存在,对应了容器组,是k8s中原子调度单位,物理结构如下图:<br />

<br /> image.png <br />
<br />

<br />
<br />infra容器是一个使用编译语言编写的轻量级程序,其它业务容器共享了infra容器的network namespace,即pod的所有网络流量都是通过infra容器来处理的,永远处于暂停状态,跟pod同生命周期。<br />
<br />pod里的容器共享volumn ;<br />
<br />
<br />物理结构决定了它非常适合用来处理超亲密关系的容器或者说程序。<br />
<br />
<br />

POD的应用例子

<br />
<br />共享volumn:的两个容器 <br />

apiVersion: v1
kind: pod
metadata:
  name: two-container
spec:
  restartPolicy: Never
  volumes:
    - name: shared-data
      hostPath:
        path: /data
  containers:
    - name: nginx-container
      image: nginx
      volumeMounts:
        - name: shared-data
          mountPath: /usr/share/nginx/html
    - name: debian-container
      image: debian
      volumeMounts:
        - name: shared-data
          mountPath: /pod-data
      command: ["/bin/sh"]
      args: ["-c","echo hello from  > /pod-data/index.html"]

<br />
<br />sidecar模式应用例子:(javaweb程序采用sidecar模式共享volumn,是的war跟tomcat独立更新和演进)<br />

apiVersion: v1
kind: Pod
metadata:
    name: javaweb
spec:
  initContainers:
  - image: war:v2
    name: war
    command: ["cp", "/sample.war","app"]
    volumeMounts:
    - mountPath: /app
      name: app-volunn
  containers:
  - image: tomcat
    name: tomcat
    command: ["sh","-c","startup.sh"]
    volumeMounts:
      - mountPath: /app
          name: app-volunn
    volumes:
    - name: app-volumn
      emptyDir: {}

<br />
<br />

小结

<br />
<br />
<br />pod的物理结构决定了它非常适合处理超亲密关系的一组容器,也是sidecar即服务网格的基础。<br />
<br />
<br />

<br /> pod.png

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注!

相关文章

网友评论

      本文标题:云原生系列1 pod基础

      本文链接:https://www.haomeiwen.com/subject/unouxltx.html