詳細Kubernetes YAMLファイルのフルフィールド
展開YAML
主なパラメータはpodTemplate、DaemonSet StatefulSetの一部としてのポッドです。
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がポッド権
コントロールプレーン | フィールド名 |
---|---|
実行権限のコンテナ | privileged |
機能のコンテナのデフォルトセットを追加します。 | defaultAddCapabilities |
コンテナの一部を除去する能力 | requiredDropCapabilities |
あなたは、特定の機能のコンテナを追加することを要求することができます | allowedCapabilities |
コントロールボリュームタイプの使用 | volumes |
ホスト・ネットワークを使用します | hostNetwork |
使用ホストポート | hostPorts |
ホストPID名前空間を使用します | hostPID |
ホストIPC名前空間を使用します | hostIPC |
ホスト・パスを使用します | allowedHostPaths |
SELinuxのコンテキスト容器 | seLinux |
ユーザーID | runAsUser |
設定は、補充グループを可能に | supplementalGroups |
ポッドは、データボリュームを割り当てたFSGroup | fsGroup |
あなたは、読み取り専用のルートファイルシステムを使用する必要があります。 | readOnlyRootFilesystem |
ポッドのセキュリティポリシーポリシーの設定と構成から、彼らはポッドを備えたセキュリティへのアクセスを制御することができます。これらの設定は、次の3つのカテゴリに分類されます。
- ブール値に基づく制御:最も厳しい制限の値にフィールドのデフォルトはこのタイプ。
- 制御の値のセットに基づいて許可されている:このタイプのフィールドは、設定値と比較されてもよい、値を確認することが許可されています
- ベースのポリシー制御:ポリシー・メカニズムによって提供された値を生成するためにキーを設定することは、このメカニズムは、指定された値が許容される値のセットに入ることを保証することができます。
RunAsUser
- MustRunAs -必見configureコン1
range
。デフォルト値として範囲内の最初の値を使用します。範囲の設定を確認していません。 - MustRunAsNonRoot -ポッドは、非ゼロで要求された
runAsUser
ミラーやで定義された値、USER
環境変数。デフォルト値はありません。 - RunAsAnyは -デフォルト値を提供していません。それはあなたがいずれかを指定することができます
runAsUser
。
SELinuxの
- MustRunAs -ノー事前に割り当てられた値場合は、設定する必要があります
seLinuxOptions
。デフォルトseLinuxOptions
。検証seLinuxOptions
。 - RunAsAnyは -デフォルト値を提供していません。これは、任意の与えられたことができます
seLinuxOptions
IDを。
SupplementalGroups
- MustRunAs -範囲を指定するには、少なくとも必要があります。第1の範囲の最小値デフォルト。すべての検証値の範囲。
- RunAsAnyは -デフォルト値を提供していません。これは、任意の与えられたことができます
supplementalGroups
IDを。
FSGroup
- MustRunAs -範囲を指定するには、少なくとも必要があります。第1の範囲の最小値デフォルト。第1の範囲内の最初のIDことを確認します。
- RunAsAnyは -デフォルト値を提供していません。これは、任意の与えられたことができます
fsGroup
IDを。
ボリュームコントロール
PSPボリュームフィールドを提供することによって、特定のボリュームの種類を制御するために使用することができます。定義されたボリュームに関連付けられたフィールドは以下の値を可能にするために提供することができる場合、ボリュームを作成する場合:
- azureFile
- azureDisk
- flocker
- flexVolume
- ホストパス
- emptyDir
- gcePersistentDisk
- awsElasticBlockStore
- gitRepo
- 秘密
- NFS
- iSCSIの
- glusterfs
- persistentVolumeClaim
- RBD
- 灰分
- cephFS
- downwardAPI
- FC
- configMap
- vsphereVolume
- quobyte
- 投影
- portworxVolume
- scaleIO
- storageos
- *(すべてのボリュームを許可します)
新PSP、許容量の推奨最小セットが含まれます:configMap、downwardAPI、emptyDir、persistentVolumeClaim、秘密と予想します。
ホストネットワーク
- HostPortsデフォルトでは、
empty
。HostPortRange
リストがmin
(含む)及びmax
(含む)の定義、ホストポートが許可されている指定。
許可されたホスト・パス
- AllowedHostPathsホストパスプレフィックスを許可されているホワイトリストです。ヌルは、ホスト・パスのすべてを使用することができることを示しています。
許します
含まアドミッション制御許可されているクラスタ内のこれらのリソースの能力に基づいて、作成および変更する、アドミッション制御クラスタリソースを。PodSecurityPolicy
究極のセキュリティコンテキストポッドを作成するには、次の方法を使用する許可:1.利用可能なすべてのPSPを取り出します。要求に指定された1フィールド値は、セキュリティコンテキストの設定で生成されていません。1.最終セットを検証するために利用可能なポリシーに基づいています。
ポリシーは、ポッドに一致した場合に受け入れられています。リクエストがPSPと一致しない場合、ポッドは拒否されます。
各フィールドのポッドPSPの検証をベースとしなければなりません。
サービスYAML
后续补充...
エンドポイントYAML
后续补充...
YAMLイングレス
后续补充...
RBAC YAML
后续补充...
HPA YAML
后续补充...
ConfigMap、シークレットYAML
后续补充...
PV、PVC、STORAGECLASS YAML
后续补充...