【k8s-8】--pod详解

pod:是k8s项目中的原子调度单位。

docker:Namespace 做隔离,Cgroups 做限制,rootfs做文件系统。
容器本质是进程,而k8s是操作系统。
pod就是类似于进程组。
部署的一些应用有着类似“进程”和“进程组”的关系,必须部署在一台机器上,受限于容器的单进程。

例子:linux系统将信号SIGKILL信号,发送给进程组,则该进程组将收到信号让所有进程终止运行。

pod在k8s中更重要的意义:容器的设计模式。
pod的实现原理:一组共享的某些资源的容器。pod中的所有容器是共享一个Network Namespace并且可以声明同一个Volume。

例子:A,B容器的pod,共享网络和Volume容器 。只是需要

$ docker run --net=B --volumes-from=B --name=A image-A ...

如果是这样的话,容器B就必须比A先启动。不再是对等关系了这样。

在k8s中pod的实现需要一个Infra容器。它永远是第一个创建的容器,而其他用户定义的容器是通过Join network Namespace的方式与它关联。

image.png

这个也以为:他们可以直接通过localhost通信。一个pod只有一个ip。所有网络资源一个pod一份。 Pod生命周期只和Infra有关。

这样一个Volume对应的宿主机目录对于Pod来说只有一个:Pod里面的容器只要声明挂载这个Volume,就一定可以共享Volume对应的宿主机目录。

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
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 the debian container > /pod-data/index.html"]

在这个例子中:两个容器都挂载了 shared-data目录,都可以获取/data目录,nginx容器可以在/usr/share/nginx/html下获取debian生成的index.html文件。

例子1:war包与web服务

apiVersion: v1
kind: Pod
metadata:
  name: javaweb-2
spec:
  initContainers:
  - image: geektime/sample:v2
    name: war
    command: ["cp", "/sample.war", "/app"]
    volumeMounts:
    - mountPath: /app
      name: app-volume
  containers:
  - image: geektime/tomcat:7.0
    name: tomcat
    command: ["sh","-c","/root/apache-tomcat-7.0.42-v2/bin/start.sh"]
    volumeMounts:
    - mountPath: /root/apache-tomcat-7.0.42-v2/webapps
      name: app-volume
    ports:
    - containerPort: 8080
      hostPort: 8001 
  volumes:
  - name: app-volume
    emptyDir: {}

这个 Init Container 类型的 WAR 包容器启动后,我执行一句"cp", "/sample.war", "/app" 。而后这个/app会挂载到app-volume下面。同时tomcat也挂这个到自己目录下,也就是被两个容器共享。

例子2:容器的日志收集。
1.将Volume挂载到/var/log目录下。
2.。。。。。。。。

你可能感兴趣的:(【k8s-8】--pod详解)