标签:验证 创建 共享 post class policy otp use env
其中主要参数都在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 访问的安全特征。这些设置分为如下三类:
range
。使用该范围内的第一个值作为默认值。验证是否不在配置的该范围内。runAsUser
值,或在镜像中定义了 USER
环境变量。不提供默认值。runAsUser
。seLinuxOptions
。默认使用 seLinuxOptions
。验证 seLinuxOptions
。seLinuxOptions
ID。supplementalGroups
ID。fsGroup
ID。通过设置 PSP 卷字段,能够控制具体卷类型的使用。当创建一个卷的时候,与该字段相关的已定义卷可以允许设置如下值:
对新的 PSP,推荐允许的卷的最小集合包括:configMap、downwardAPI、emptyDir、persistentVolumeClaim、secret 和 projected。
empty
。HostPortRange
列表通过 min
(包含) and max
(包含) 来定义,指定了被允许的主机端口。包含 PodSecurityPolicy
的 许可控制,允许控制集群资源的创建和修改,基于这些资源在集群范围内被许可的能力。
许可使用如下的方式为 Pod 创建最终的安全上下文: 1. 检索所有可用的 PSP。 1. 生成在请求中没有指定的安全上下文设置的字段值。 1. 基于可用的策略,验证最终的设置。
如果某个策略能够匹配上,该 Pod 就被接受。如果请求与 PSP 不匹配,则 Pod 被拒绝。
Pod 必须基于 PSP 验证每个字段。
后续补充...
后续补充...
后续补充...
后续补充...
后续补充...
后续补充...
后续补充...
标签:验证 创建 共享 post class policy otp use env
原文地址:https://www.cnblogs.com/h-gallop/p/12046425.html