pod对象

pod是kubernetes项目中最小的编排单位,将这个设计落实到API对象上,容器(container)就成了pod属性里的一个普通的字段。
pod扮演的是传统部署环境里"虚拟机"的角色

凡是调度、网络、存储,以及安全相关的属性,基本上是pod级别的。

这些属性的共同特征是,它们描述的是“机器”这个整体,而不是里面运行的“程序”。比如,配置这个“机器”的网卡(即:Pod 的网络定义),配置这个“机器”的磁盘(即:Pod 的存储定义),配置这个“机器”的防火墙(即:Pod 的安全定义)。更不用说,这台“机器”运行在哪个服务器之上(即:Pod 的调度)。

kubernetes支持的projected volume一共四种:
1.secret
2.confingMap
3.downward api
4.serviceAccountToken

1.secret:pod想要访问的加密数据,存放到etcd中,然后就可以通过pod容器里挂载volume的方式,访问到这些secret里保存的信息。 secret必须需要base64转码 echo -n 'admin' |bash64
2.comfigmap 保存的是不需要加密的,应用所需的配置信息。
3.downward API :让pod容器直接获取pod API对象本身的信息。downward能够获取到的信息,一定是pod里面容器进程启动之前就能够确定下来的信息。


1. 使用fieldRef可以声明使用:
spec.nodeName - 宿主机名字
status.hostIP - 宿主机IP
metadata.name - Pod的名字
metadata.namespace - Pod的Namespace
status.podIP - Pod的IP
spec.serviceAccountName - Pod的Service Account的名字
metadata.uid - Pod的UID
metadata.labels[''] - 指定的Label值
metadata.annotations[''] - 指定的Annotation值
metadata.labels - Pod的所有Label
metadata.annotations - Pod的所有Annotation

2. 使用resourceFieldRef可以声明使用:
容器的CPU limit
容器的CPU request
容器的memory limit
容器的memory request

kuberenetes客户端以容器的方式运行在集群里,然后使用default service Account自动授权的方式,被称为"incluserConfig"

pod 恢复机制,restartpolicy ,可以通过设置restartplolicy,改变pod的恢复策略。
always: 在任何情况下,只要容器不在运行状态,就自动重启容器。
onFailure: 只在容器异常时才自动重启容器
Nerver:从不重启容器

1.只要pod的restartPolicy指定的策略允许重启异常的容器(比如:Always),那么这个pod就会保持running的状态,并进行容器重启。
2.对于包含多个容器的pod,只有他里面所有的容器都进入异常状态后,pod才会进入Failed状态。

PodPreset里定义的内容,只会在pod api对象被创建之前追加在这个对象本身上,而不会影响任何pod的控制器的定义

控制器deployment
deployment这样的一个控制器,实际上都是由上半部分的控制器定义(包括期望状态),加上下半部分的被控制对象的模板组成的。


image.png

deployment项目中有一个重要功能pod的"水平扩展/收缩",如果是更新了deployment的pod模板,就需要遵循一种要做"滚动更新的方式",来实现现有的容器,而实现这一能力,需要依赖replicaset
replicaset,其实就是由副本数目的定义和定义一个pod模板组成的。

你可能感兴趣的:(pod对象)