关于java:云原生系列1-pod基础

50次阅读

共计 1212 个字符,预计需要花费 4 分钟才能阅读完成。

POD 解决了什么问题?

成组资源调度问题的解决。

mesos 采纳的资源囤积策略容易呈现死锁和调度效率低下问题;
google 采纳的乐观调度技术难度十分大;

而 k8s 应用 pod 优雅的解决了这个问题。

pod 的呈现解决了两个问题。

第一:解决了超亲密关系的过程合作;

第二:容器设计模式 sidecar 利用的载体;

POD 是什么?

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

infra 容器是一个应用编译语言编写的轻量级程序,其它业务容器共享了 infra 容器的 network namespace,即 pod 的所有网络流量都是通过 infra 容器来解决的,永远处于暂停状态,跟 pod 同生命周期。

pod 里的容器共享 volumn ;

物理构造决定了它非常适合用来解决超亲密关系的容器或者说程序。

POD 的利用例子

共享 volumn: 的两个容器

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"]

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

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: {}

小结

pod 的物理构造决定了它非常适合解决超亲密关系的一组容器,也是 sidecar 即服务网格的根底。

原创不易,关注诚可贵,转发价更高!转载请注明出处,让咱们互通有无,共同进步,欢送沟通交流。

正文完
 0