本章主要讲
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 来执行,只能直接修改或删除文本文件。

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

注意:由于静态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挂载为容器内部需要的目录。


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