Kubernetes YAML 文件全字段详解
Kubernetes YAML 文件全字段详解
Deployment yaml
其中主要参数都在podTemplate 中,DaemonSet StatefulSet 中的pod部分一样。
apiVersion: v1
kind: Deployment
metadata:
name: <deploy-name>
namespace: <ns-name>
labels:
<key>: <value>
spec:
replicas: 2
selector:
matchLabels: #管理的有该label 的pod
<key>: <value>
revisionHistoryLimit: 5
progressDeadlineSeconds: 600 #可选参数;deployment 卡住执行出现错误时,等待deployment 进行的时间秒数,deployment controller会继续重试。设置该值必须大于.spec.minReadySeconds。
minReadySeconds: 0 #可选参数,默认为0(pod 在ready后就被认为可用),pod中容器没有crash 并被认为可用状态的最小秒数。
strategy: #更新的策略,默认为rollingUpdate , 可选Recreate 在创建新pod之前会杀掉所有已经存在的pod
rollingUpdate:
maxUnavailable: 25% #最大不可用比例,可绝对值,可比例
maxSurge: 25% #最大更新pod量,可绝对值,可比例,按上取整
rollbackTo: #可选参数,用来配置deploy回退的配置,设置该参数将触发回退操作,每次回退完成会清楚该值
revision: 0 #默认为0,用来指定回退到的revision,0意味着回退到历史中最老的revision
paused: false #可选参数 默认非paused,boolean值。用来指定暂停和恢复deploy,paused 和 非paused的唯一区别在于,paused后,所有对PodTemplateSpec的修改都不会触发新的rollout
template: #和pod template中一样
metadata:
name: <pod-name>
labels:
<key>: <value> #需要和sepc.selector.matchLabels 中的lable 匹配,否则rs 服务管理到该pod
spec:
containers:
- name:
image:
imagePullPolicy: Alway # Alway,IfNotPresent,Never
command:
args:
workingDir: #指定容器的工作目录
resources: #容器运行的资源申请和限制
requests: #申请
cpu:
memory:
limits: #最大限制
cpu:
memory:
ports: #容器应用运行暴露的port
- name:
containerPort:
protocol:
env: # 指定容器运行的环境变量
- name:
value:
volumeMounts: # 挂载外部文件到容器
- name: <volume-name> # volume 的 name
mountPath: /home # 挂载到容器中的指定路径
livenessProbe: #存活探针
httpGet: #http检测形式
path: </path> #路径
port: <containerPort> #端口
httpHeaders: #需要设置请求头时的设置
- name: <key>
value: <value>
initialDelaySeconds: 20 #开始探针检测的等待秒数,根据业务需求具体启动时间来设置,过长会造成应用长时间无法提供服务,过短会杀死掉没有启动完全的应用
#exec: 探针的exec形式
# command:
# - cmd 指令
# - args 参数
periodSeconds: 10 # 执行探测的间隔
timeoutSeconds: 3 # 探测超时的时间
successThreshold: 1 # 默认为1,失败状态后的服务检测成功1次后就识别为成功
failureThreshold: 3 # 成功状态后的服务,检测3次失败后为失败
readinessProbe: # 就绪探针
tcpSocket: #tcp 端口探测模式,kubelet 执行检测工作
port: <containerPort> #需要探测容器端口
terminationMessagePath: /dev/terminatino-log
terminationMessagePolicy: File
securityContext: {} #容器上下文权限
lifecycle: # 生命周期
postStart:
exec:
command:
preStop:
exec:
command:
stdin: true #标准输入,是否开启
stdinOnce: true #stdin 为true 后,可以有打开多个通道连接容器,当stdinOnce为true,只能有一个通道连接,并且关闭通道后,stdin也将关闭,直到容器重启
tty: true #是否开启交互窗口,加stdin 是docker -it 一样的功能
hostAliases: # 追加pod 中/etc/hosts 文件内容
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
shareProcessNamespace: true # 几乎不用参数,pod 中所有容器共享进程空间
nodeSelector: #指定调度节点标签,用节点label 匹配
<key>: <value>
dnsPolicy: ClusterFirst # dns策略
restartPolicy: Always #Always,Never,Failure 重启策略,总是、永不、失败后重启
schedulerName: default-scheduler # 默认调度策略
securityContext: {} #pod上下文权限
terminatinoGracePeriodSeconds: 30 # 默认30 ,优雅关闭时间
securityContext Pod 权限
| 控制面 | 字段名称 |
|---|---|
| 已授权容器的运行 | privileged |
| 为容器添加默认的一组能力 | defaultAddCapabilities |
| 为容器去掉某些能力 | requiredDropCapabilities |
| 容器能够请求添加某些能力 | allowedCapabilities |
| 控制卷类型的使用 | volumes |
| 主机网络的使用 | hostNetwork |
| 主机端口的使用 | hostPorts |
| 主机 PID namespace 的使用 | hostPID |
| 主机 IPC namespace 的使用 | hostIPC |
| 主机路径的使用 | allowedHostPaths |
| 容器的 SELinux 上下文 | seLinux |
| 用户 ID | runAsUser |
| 配置允许的补充组 | supplementalGroups |
| 分配拥有 Pod 数据卷的 FSGroup | fsGroup |
| 必须使用一个只读的 root 文件系统 | readOnlyRootFilesystem |
Pod 安全策略 由设置和策略组成,它们能够控制 Pod 访问的安全特征。这些设置分为如下三类:
- 基于布尔值控制 :这种类型的字段默认为最严格限制的值。
- 基于被允许的值集合控制 :这种类型的字段会与这组值进行对比,以确认值被允许。
- 基于策略控制 :设置项通过一种策略提供的机制来生成该值,这种机制能够确保指定的值落在被允许的这组值中。
RunAsUser
- MustRunAs - 必须配置一个
range。使用该范围内的第一个值作为默认值。验证是否不在配置的该范围内。 - MustRunAsNonRoot - 要求提交的 Pod 具有非零
runAsUser值,或在镜像中定义了USER环境变量。不提供默认值。 - RunAsAny - 没有提供默认值。允许指定任何
runAsUser。
SELinux
- MustRunAs - 如果没有使用预分配的值,必须配置
seLinuxOptions。默认使用seLinuxOptions。验证seLinuxOptions。 - RunAsAny - 没有提供默认值。允许任意指定的
seLinuxOptionsID。
SupplementalGroups
- MustRunAs - 至少需要指定一个范围。默认使用第一个范围的最小值。验证所有范围的值。
- RunAsAny - 没有提供默认值。允许任意指定的
supplementalGroupsID。
FSGroup
- MustRunAs - 至少需要指定一个范围。默认使用第一个范围的最小值。验证在第一个范围内的第一个 ID。
- RunAsAny - 没有提供默认值。允许任意指定的
fsGroupID。
控制卷
通过设置 PSP 卷字段,能够控制具体卷类型的使用。当创建一个卷的时候,与该字段相关的已定义卷可以允许设置如下值:
- azureFile
- azureDisk
- flocker
- flexVolume
- hostPath
- emptyDir
- gcePersistentDisk
- awsElasticBlockStore
- gitRepo
- secret
- nfs
- iscsi
- glusterfs
- persistentVolumeClaim
- rbd
- cinder
- cephFS
- downwardAPI
- fc
- configMap
- vsphereVolume
- quobyte
- projected
- portworxVolume
- scaleIO
- storageos
- * (allow all volumes)
对新的 PSP,推荐允许的卷的最小集合包括:configMap、downwardAPI、emptyDir、persistentVolumeClaim、secret 和 projected。
主机网络
- HostPorts , 默认为
empty。HostPortRange列表通过min(包含) andmax(包含) 来定义,指定了被允许的主机端口。
允许的主机路径
- AllowedHostPaths 是一个被允许的主机路径前缀的白名单。空值表示所有的主机路径都可以使用。
许可
包含 PodSecurityPolicy 的 许可控制,允许控制集群资源的创建和修改,基于这些资源在集群范围内被许可的能力。
许可使用如下的方式为 Pod 创建最终的安全上下文: 1. 检索所有可用的 PSP。 1. 生成在请求中没有指定的安全上下文设置的字段值。 1. 基于可用的策略,验证最终的设置。
如果某个策略能够匹配上,该 Pod 就被接受。如果请求与 PSP 不匹配,则 Pod 被拒绝。
Pod 必须基于 PSP 验证每个字段。
services yaml
后续补充...
endpoints yaml
后续补充...
ingress yaml
后续补充...
RBAC yaml
后续补充...
HPA yaml
后续补充...
ConfigMap, Secret yaml
后续补充...
PV、PVC、StorageClass yaml
后续补充...
Kubernetes YAML 文件全字段详解的更多相关文章
- kubernetes创建资源对象yaml文件例子--pod详解
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数据/属性 name: ...
- Kubernetes K8S之存储ConfigMap详解
K8S之存储ConfigMap概述与说明,并详解常用ConfigMap示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS ...
- Kubernetes K8S之通过yaml文件创建Pod与Pod常用字段详解
YAML语法规范:在kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解 YAML 语法规范 K8S 里所有的资源或者配置都可以用 yaml 或 Json 定义.YAM ...
- Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件
封面:洛小汐 作者:潘潘 若不是生活所迫,谁愿意背负一身才华. 前言 上节我们介绍了 < Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 >,内容很详细( ...
- “全栈2019”Java第五十六章:多态与字段详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Kubernetes K8S之存储Volume详解
K8S之存储Volume概述与说明,并详解常用Volume示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...
- Sqlmap全参数详解
sqlmap全参数详解 sqlmap是在sql注入中非常常用的一款工具,由于其开源性,适合从个人到企业,从学习到实战,各领域各阶段的应用,我们还可以将它改造成我们自己独有的渗透利器.这款工具中,大大小 ...
- Linux "ls -l"文件列表权限详解
ls Linux "ls -l"文件列表权限详解 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- root adm -- : apache2 ...
- IIS日志字段详解
IIS日志字段详解 抓住8月的尾巴,弥补下这个月的空白,事情太多,忘了写博客这回事了. IIS日志字段设置 网站运营时 ...
随机推荐
- DOM操作 三大家族
clientHeight 获取对象的高度,不计算任何边距.边框.滚动条,但包括该对象的补白. clientLeft 获取 offsetLeft 属性和客户区域的实际左 ...
- 技嘉Z390 AORUS MASTER+酷睿I9超频5.0GHz教程
注:调整每项值的时候,需要手动用键盘输入数字,按回车确定.(只按回车并不会出现选择项) Core i9-9900K也出来了一段时间了,这个号称“地表最强游戏U”也成了很多人最新的目标.网上也有大佬表示 ...
- jdk 1.7新特性
JDK1.7新特性 1,switch中可以使用字串了String s = "test"; switch (s) { case "test" : ...
- 关于Linux TCP "SACK PANIC" 远程拒绝服务漏洞的修复
Linux 内核被曝存在TCP "SACK PANIC" 远程拒绝服务漏洞(漏洞编号:CVE-2019-11477,CVE-2019-11478,CVE-2019-11479),攻 ...
- gcd 题解
gcd Little White learned the greatest common divisor, so she plan to solve a problem: given \(x, n,\ ...
- 配置 Jenkins 连接 Kubernetes 集群
需求:外部 Jenkins 需要连接 Rancher 中的 Kubernetes 集群. 1.集群 config 文件 Rancher 首页,"集群" --> 右上角&quo ...
- FusionInsight大数据开发---Oozie应用开发
Oozie应用开发 要求: 了解Oozie应用开发适用场景 掌握Oozie应用开发 熟悉并使用Oozie常用API Oozie简介 Oozie是一个Hadoop作业的工作流调度管理系统 Oozie工作 ...
- Mysql系列(四) —— MySQL的Charset和Collation
本文转载自:再见乱码:5分钟读懂MySQL字符集设置 一.内容概述 在MySQL的使用过程中,了解字符集.字符序的概念,以及不同设置对数据存储.比较的影响非常重要.不少同学在日常工作中遇到的" ...
- Mysql系列(二)—— Mysql支持的数据类型
Mysql版本众多,每个版本支持的数据类型繁多且不一样,本篇文章中主要基于MySQL Community Server 5.7.22介绍常用的数据类型,包括其特点以及区别. 一.数据类型 正确的定义表 ...
- inux centos7下源码 tar安装5.7.26详解
inux centos7下源码 tar安装5.7.26图文详解 官网地址 https://dev.mysql.com/downloads/mysql/ 1.卸载Linux系统上自带的mysql插件(o ...