惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Exploit Database - CXSecurity.com
F
Fortinet All Blogs
U
Unit 42
F
Full Disclosure
雷峰网
雷峰网
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
罗磊的独立博客
D
DataBreaches.Net
C
Check Point Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
O
OpenAI News
C
CXSECURITY Database RSS Feed - CXSecurity.com
aimingoo的专栏
aimingoo的专栏
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Hacker News
The Hacker News
Webroot Blog
Webroot Blog
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
N
News | PayPal Newsroom
P
Proofpoint News Feed
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
C
Cybersecurity and Infrastructure Security Agency CISA
N
News and Events Feed by Topic
Google Online Security Blog
Google Online Security Blog
H
Help Net Security
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
M
MIT News - Artificial intelligence
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
MyScale Blog
MyScale Blog
腾讯CDC

博客园 - 茁壮的小草

join查询中索引建议 tomcat连接池的“bug” 连接池介绍 JDBC介绍 Hadoop完全分布式搭建 Apache Hadoop YARN 使用 kubebuilder 创建并部署 k8s-operator 单链表反转 单链表操作 如何在Kubernetes 里添加自定义的 API 对象(一) 搭建golang开发环境(1.14之后版本) 【源码】Redis命令处理过程 K8S配置存活、就绪和启动探测器 【源码】Redis exists命令bug分析 【源码】Redis Server启动过程 MAC 安装MySQL-python 公司里使用gitlab管理项目 vscode配置django开发环境最佳实战(mac) virtualenv最佳实战(windows)
K8S中的Objects
茁壮的小草 · 2021-06-07 · via 博客园 - 茁壮的小草

K8S中yaml文件主要由5个部分组成:
apiVersion - 创建该对象所使用的 Kubernetes API 的版本
kind - 想要创建的对象的类别
metadata - 帮助唯一性标识对象的一些数据
spec: spec 的精确格式对每个 Kubernetes 对象来说是不同的,包含了特定于该对象的嵌套字段。
status。

一、metadata
每个metadata必须要包含以下字段:
1、namespace:默认值default,在多个用户之间划分集群资源的一种方法,名字空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑名字空间。
2、name:
3、uid
非必须的字段:
1、annotations(注解):为对象附加元数据,键/值对形式。例如,项目名称、版本和构建信息
2、creationTimestamp:对象被创建的时间
3、generateName: k8s生成唯一的name给我们
4、labels:键/值对形式,标签旨在用于指定对用户有意义且相关的对象的标识属性。 标签可以用于组织和选择对象的子集
5、ownerReferences:指定属主和附属之间的关系,只能在同一个namespace下指定
6、resourceVersion:代表该资源在下层数据库中存储的版本
7、generation:表示所需状态的特定生成的序列号。由系统设置,按资源单调递增。
8、deletionTimestamp:对象被删除的时间,由系统设定

二、spec 表示对象的描述
1、Affinity 亲和性 https://blog.csdn.net/horsefoot/article/details/72827783
nodeAffinity:描述node亲和性调度规则
requiredDuringSchedulingIgnoredDuringExecution类型是一个强行要求,表示节点必须满足条件才能够部署Pod
preferredDuringSchedulingIgnoredDuringExecution是一个非强行要求,调度器会尝试去满足这个节点亲和性条件,但是如果没有满足节点亲和性条件的节点,那么就会将Pod部署在其他节点上。

podAffinity:描述pod亲和性调度规则
preferredDuringSchedulingIgnoredDuringExecution:调度器会尝试去满足亲和性条件,但是如果没有满足条件的节点,那么就会将Pod部署在其他节点上
requiredDuringSchedulingIgnoredDuringExecution:强行要求,表示必须满足才能够部署Pod

podAntiAffinity:描述pod反亲和性调度规则
preferredDuringSchedulingIgnoredDuringExecution:调度器会尝试去满足反亲和性条件,但是如果没有满足条件的节点,那么就会将Pod部署在其他节点上
requiredDuringSchedulingIgnoredDuringExecution:强行要求,表示Pod不能部署在这样节点上,这个节点上正在运行的Pod中满足某种条件
labelSelector:一组资源上的标签查询
- matchExpressions
- matchLabels
namespaceSelector
namespaces
topologyKey
2、containers:表示属于pod的容器列表,一个pod中至少有一个容器,不能被更新
字段如下:
args:字符串数组类型
command:字符串数组类型
env: EnvVar 数组
name
value
valueFrom

以上三个字段含义如下:
如果在容器配置中没有设置 command 或者 args,那么将使用 Docker 镜像自带的命令及其参数。
如果在容器配置中只设置了 command 但是没有设置 args,那么容器启动时只会执行该命令, Docker 镜像中自带的命令及其参数会被忽略。
如果在容器配置中只设置了 args,那么 Docker 镜像中自带的命令会使用该新参数作为其执行时的参数。
如果在容器配置中同时设置了 command 与 args,那么 Docker 镜像中自带的命令及其参数会被忽略。 容器启动时只会执行配置中设置的命令,并使用配置中设置的参数作为命令的参数。

envFrom:用于在容器中填充环境变量的源的列表
image: docker镜像名
imagePullPolicy: docker镜像拉取策略,Always, Never, IfNotPresent.
lifecycle
livenessProbe:用于pod健康检查探针
name:容器名称,一个pod必须唯一容器名
ports: 从容器暴露出的端口
resources:计算容器所需要的资源
limits: 最大需要的资源限制
requests:需要最低的资源
securityContext:pod运行时携带的安全项
privileged:boolean,默认false,如果true,会在权限模式下运行容器
terminationMessagePath:可选,容器终止时,日志记录到的文件路径
terminationMessagePolicy:终止log输出形式,默认file
volumeMounts:挂载到容器文件系统的pod 数据卷
mountPath: 挂载路径
name: 必须跟volumn的name一致
readOnly:只读

3、dnsPolicy:string类型,给pod设置 DNS 策略. 默认 "ClusterFirst",其他还有'ClusterFirstWithHostNet', 'Default' , 'None'.
4、enableServiceLinks:表示service相关信息是否要注册到pod的环境变量中,默认true
5、hostname:指定pod的主机名,如果没有设置,会自动被设定系统定义值
6、initContainers:pod的初始化容器列表,也叫中间容器,先于应用容器创建,字段同container
7、nodeName:string类型:用来将pod调度到指定nodename的节点上
8、nodeSelector:object类型: 是节点选择约束的最简单推荐形式,包含键值对的映射。为了使 pod 可以在某个节点上运行,该节点的标签中 必须包含这里的每个键值对(它也可以具有其他标签)。 最常见的用法的是一对键值对。
9、restartPolicy:pod上所有容器的重启策略,Always, OnFailure, Never,默认值always。
10、schedulerName:指定调度pod的调度器名称
11、securityContext:pod级别安全选项,默认为空字符串
12、serviceAccountName:访问k8s集群,运行pod的用户账号,没有指定,默认使用default账号
13、terminationGracePeriodSeconds:integer类型,pod需要优雅地终止所需要的持续时间,默认30s
14、volumes:被pod上容器所挂载的卷
name: 卷名称,在pod唯一
persistentVolumeClaim:简称pvc,持久卷申领,表达的是用户对存储的请求
hostPath:hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中
emptyDir:当 Pod 分派到某个 Node 上时,emptyDir 卷会被创建,并且在 Pod 在该节点上运行期间,卷一直存在
configMap:配置文件的存储卷

三、status 表示对象的状态
1、conditions
lastProbeTime:上次探测 Pod 状况时的时间戳
lastTransitionTime: Pod 上次从一种状态转换到另一种状态时的时间戳
status: 表明该状况是否适用,可能的取值有 "True", "False" 或 "Unknown"
type: Pod 状况的名称,取值:PodScheduled:Pod 已经被调度到某节点;ContainersReady:Pod 中所有容器都已就绪;所有的 Init 容器 都已成功启动;Pod 可以为请求提供服务,并且应该被添加到对应服务的负载均衡池中。
2、containerStatuses
清单中每个容器有一个列表条目。每个条目当前都是“docker inspect”的输出。
3、hostIP :pod被分配到节点的ip
4、initContainerStatuses:清单中每个init容器有一个列表条目。
5、phase:Pod 的阶段(Phase)是 Pod 在其生命周期中所处位置的简单宏观概述,分为:Pending(悬决)、Running(运行中)、Succeeded(成功)、Failed(失败)、Unknown(未知)
6、podIP:pod的ip地址
7、podIPs:podIP列表
8、qosClass:服务质量,实现资源被有效调度和分配的同时提高资源利用率,包括:
Guaranteed:每个容器都必须设置CPU和内存的限制和请求。优先级最高的,Resource的limit和request都相等且不为0
Burstable:在不满足Guaranteed的情况下,至少设置一个CPU或者内存的请求
BestEffort:resource和request都不设置,意味着容器资源使用上限实际上即所在node的capacity
9、startTime:被Kubelet发现的时间,发生在pull 容器image前