3 深入掌握Pod(1)

作者: ZYvette | 来源:发表于2020-07-21 20:51 被阅读0次

本章主要讲
Pod和容器的使用、应用配置管理、Pod的控制和调度管理、Pod的升级和回滚,以及Pod的扩缩容机制等内容。
本节内容包括:
1.Pod定义详解
2.Pod的基本用法
3.静态Pod
4.Pod容器共享Volume

3.1 Pod 定义详解

3.2 Pod的基本用法

1. Docker容器中应用的运行要求

a. 其主程序需要一直在前台执行。
  • 如果我们创建的Docker镜像的启动命令是后台执行程序,则在命令执行之后就认为任务停止而销毁Pod。如果设置了RC则会无限重新创建Pod。
  • 解决办法:对于无法前台执行的,可以采用supervisor辅助

2.Pod的封装

  • pod可以由一个或多个容器组成
  • 属于同一个Pod的多个容器应用之间相互访问时仅需要通过localhost就可以通信,使得这一组容器被“绑定”在了一个环境中。

3.3静态Pod

1. 什么是静态Pod

静态Pod是由kubelet进行管理的仅存在于特定Node上的Pod。它们不能通过API Server进行管理,无法与ReplicationController、Deployment或者DaemonSet进行关联,并且kubelet无法对它们进行健康检查。静态Pod总是由kubelet创建的,并且总在kubelet所在的Node上运行。

2. 静态Pod的两种方式

a. 配置文件方式

kubelet 启动时由 --pod-manifest-path 指定的目录(默认/etc/kubernetes/manifests),kubelet会定期扫描这个目录,并根据这个目录下的 .yaml 或 .json 文件进行创建和更新操作。

  • 如果把 pod的yaml描述文件放到 这个目录中,等kubelet扫描到文件,会自动在本机创建出来 pod;
  • 如果把 pod的yaml文件更改了,kubelet也会识别到,会自动更新 pod;
  • 如果把 pod的yaml文件删除了,kubelet会自动删除掉pod;
  • 因为静态pod 不能被 api-server 直接管理,所以它的更新删除操作不能由 kubectl 来执行,只能直接修改或删除文本文件。
image.png

查看配置文件,可查到静态pod的路径


image.png

注意:由于静态Pod无法通过API Server直接管理,所以在Master上尝试删除这个Pod时,会使其变成Pending状态,且不会被删除,只能去路径下把对应yaml文件删除。

b. HTTP方式

通过设置kubelet的启动参数“--manifest-url”,kubelet将会定期从该URL地址下载Pod的定义文件,并以.yaml或.json文件的格式进行解析,然后创建Pod。其实现方式与配置文件方式是一致的。

3.4 Pod容器共享Volume

同一个Pod中的多个容器能够共享Pod级别的存储卷Volume。Volume可以被定义为各种类型,多个容器各自进行挂载操作,将一个Volume挂载为容器内部需要的目录。

image.png
image.png

上述代码可以看书,两个镜像里都挂在了app-logs ,只是挂在到不同路径下,但是可以看出,文件内容应该是相同的。

相关文章

网友评论

    本文标题:3 深入掌握Pod(1)

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