YAML 语法
map[string]string
示例:
labels:
key: value
Object
示例:
hostPath:
path: /root/aaa
type: DirectoryOrCreate
[]Object
示例:
containers:
- name: xxx
image: xxx
或
containers: {name: xxx, image: xxx}
[]string
示例:
command:
- "/bin/sh"
- "-c"
- "sleep 3600"
或
command: ["/bin/sh", "-c", "sleep 3600"]
一、 Pod YAML
-
查看
pod
相关 yaml 字段说明
kubectl explain pod
字段说明
字段 | 值类型 | 说明 |
---|---|---|
apiVersion |
string |
使用的 API 版本 |
kind |
string |
创建资源类型 Pod
|
metadata |
Object |
定义元数据信息 : |
spec |
Object |
定义规则 : |
status |
Object |
pod 状态,不用定义 |
-
Pod 的
pod.meatdata
字段,pod 元数据
kubectl explain pod.metadata
字段 | 值类型 | 说明 |
---|---|---|
annotations |
map[string]string |
注解没有实际作用,就是描述信息,key-value 形式 |
finalizers |
[]string |
inalizer 是带有命名空间的键,告诉 Kubernetes 等到特定的条件被满足后, 再完全删除被标记为删除的资源 |
labels |
map[string]string |
标签是附加到对象(例如 pod)的键/值对。可以随时添加和修改 |
name |
string |
pod 名称 |
generateName |
string |
当不写 name 字段是时,系统生成一个唯一的 name
|
namespace |
string |
命名空间,资源隔离 |
ownerReferences |
[]Object |
|
uid |
string |
系统自动生成,资源创建成功后自动生成,唯一值 |
generation |
integer |
系统自动生成,表示所需状态的特定生成的序列号 |
resourceVersion |
string |
系统自动生成,资源的一个版本 |
deletionTimestamp |
string |
系统自动生成。删除此资源的日期和时间 |
creationTimestamp |
string |
系统自动生成,创建资源的时间戳 |
deletionGracePeriodSeconds |
integer |
此对象在从系统中删除之前允许正常终止的秒数。仅在同时设置了删除时间戳时设置。只能缩短。 |
-
Pod 的
pod.spec
字段,pod 规则。官方文档
kubectl explain pod.spec
字段 | 值类型 | 说明 |
---|---|---|
activeDeadlineSeconds |
integer |
Pod 运行的最长时间 |
affinity |
Object |
定义亲核性,就是定义资源创建时选择节点的策略。: |
automountServiceAccountToken |
boolean |
是否将 ServiceAcount 账户将默认挂载到 Pod 中,默认是 true
|
* containers |
[]Object |
定义容器信息 : |
dnsConfig |
Object |
DNS 配置 |
dnsPolicy |
string |
DNS 策略Default : Pod 从运行所在的节点继承名称解析配置ClusterFirst : 与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都会由 DNS 服务器转发到上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器ClusterFirstWithHostNet : 对于以 hostNetwork 方式运行的 Pod,应将其 DNS 策略显式设置为 ClusterFirstWithHostNet 。否则,以 hostNetwork 方式和 ClusterFirst 策略运行的 Pod 将会做出回退至 Default 策略的行为。 None : 此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段所提供的 DNS 设置 |
enableServiceLinks |
boolean |
是否应将有关服务的信息注入到 Pod 的环境变量中。默认为 true
|
hostAliases |
[]Object |
向 /etc/hosts 中添加内容hostnames : 别名 ip : ip 地址 |
hostIPC |
boolean |
使用主机的 IPC 名字空间。可选:默认为 false 。 |
hostNetwork |
boolean |
true 时使用宿主机网络 ip,和物理机 ip 一样。如果设置了此选项,则必须指定将使用的端口。默认为 false
|
hostPID |
boolean |
使用主机的 PID 名字空间。默认为 false 。 |
hostname |
string |
指定 Pod 的主机名 |
imagePullSecrets |
[]Object |
从私有仓库拉取镜像的凭证 |
initContainers |
[]Object |
初始化容器,在 Pod 内的应用容器启动之前运行。初始化容器必须运行成功,才会继续运行其他容器。initContainers 与 Containers 几乎一样。只是初始化容器不支持就 readinessProbe 绪探测。 |
nodeName |
string |
节点选择器,指定一个 node 创建资源,根据 node 名定位到 node 节点 |
nodeSelector |
map[string]string |
节点标签选择器,根据 node 标签选择 node 来创建资源,nodeName 和 nodeSelector 是且的关系,如:nodeSelector: node:123
|
os |
Object |
指定 Pod 中容器的操作系统。如果设置了此属性,则某些 Pod 和容器字段会受到限制。具体官网 |
overhead |
map[string]string |
该字段将由 RuntimeClass 准入控制器在准入时自动填充 |
preemptionPolicy |
string |
用来抢占优先级较低的 Pod 的策略。取值为 Never 、PreemptLowerPriority 之一。 如果未设置,则默认为 PreemptLowerPriority
|
priority |
integer |
优先级值。各种系统组件使用该字段来确定 Pod 的优先级。当启用 Priority 准入控制器时, 该控制器会阻止用户设置此字段。准入控制器基于 priorityClassName 设置来填充此字段。 字段值越高,优先级越高。 |
priorityClassName |
string |
如果设置了此字段,则用来标明 Pod 的优先级。 system-node-critical 和 system-cluster-critical 是两个特殊关键字, 分别用来表示两个最高优先级,前者优先级更高一些。 任何其他名称都必须通过创建具有该名称的 PriorityClass 对象来定义。 如果未指定此字段,则 Pod 优先级将为默认值。如果没有默认值,则为零。 |
readinessGates |
[]Object |
|
restartPolicy |
string |
重启策略Always : 默认,只要容器异常退出就重启OnFailure :容器退出,且退出码不为 0 ,则重启Never :无论容器什么状态都从不重启 |
runtimeClassName |
string |
|
schedulerName |
string |
如果设置了此字段,则 Pod 将由指定的调度器调度。如果未指定,则使用默认调度器来调度 Pod。 |
securityContext |
Object |
安全策略上下文 |
serviceAccountName |
string |
服务帐户名称是用于运行此容器的服务帐户的名称 |
setHostnameAsFQDN |
boolean |
|
shareProcessNamespace |
boolean |
在 pod 中的所有容器之间共享一个进程命名空间。 设置后,容器将能够查看同一 pod 中其他容器的进程并发出信号,并且每个容器中的第一个进程将不会分配 PID 1 HostPID 和 ShareProcessNamespace 不能同时设置。 |
subdomain |
string |
如果设置了此字段,则完全限定的 Pod 主机名将是 <hostname>.<subdomain>.<Pod 名字空间>.svc.<集群域名> 。 如果未设置此字段,则该 Pod 将没有域名。 |
terminationGracePeriodSeconds |
interger |
为 kubelet 配置从为失败的容器触发终止操作到强制容器运行时停止该容器之前等待的宽限时长。默认 30
|
tolerations |
[]Object |
容忍度,node 上会定义污点类型,当 pod 和 node 定义的污点类型匹配时可创建资源 容忍度相关说明 |
topologySpreadConstraints |
[]Object |
|
volumes |
[]Object |
: |
-
Pod 的
pod.spec.affinity
字段,亲和性
kubectl explain pod.spec.affinity
字段 | 值类型 | 说明 |
---|---|---|
nodeAffinity |
Object |
node 亲和性,pod 根据哪些条件调度到 node 上preferredDuringSchedulingIgnoredDuringExecution : 软亲和性,就是说有节点满足这个亲和性,就在该节点创建,没有就随便找创建。软亲和性匹配方式: preference :匹配方式:matchExpressions :匹配节点标签matchFields :匹配节点字段weight : 权重,在一个软亲和性中定了多个条件,执行条件的权重requiredDuringSchedulingIgnoredDuringExecution : 硬亲和性,必须满足这个亲和性条件,否则不创建资源。硬亲和性匹配方式: nodeSelectorTerms 关于匹配规则 matchExpressions 或 matchFields 具体条件写法参考官网 或命令 kubectl explain
|
podAffinity |
Object |
pod 和 pod 之间的亲和性,当 pod1 和 pod2 有关联时,根据 pod1 和 pod2 的亲和性将他们创建到同一个 node 上。 软亲和性,能在一起就在一起,不能就算了 硬亲和性,必须在一起 软亲和性匹配方式: requiredDuringSchedulingIgnoredDuringExecution labelSelector : 标签选择器namespaceSelector : 命名空间选择器namespaces :指定命名空间* topologyKey : 根据 pod 所在 node 上的标签定位,也就是说 node 上有相同标签且值相同时进行判断硬亲和性匹配方式: preferredDuringSchedulingIgnoredDuringExecution :podAffinityTerm :labelSelect :根据 pod 标签匹配到要在一起的 pod namespaceSelector : 通过 namespace 的 selector(标签选择器) 定位namespaces : 通过 namespace 定位* topologyKey : 根据 pod 所在 node 上的标签定位,也就是说 node 上有相同标签且值相同时进行判断weight : 权重 |
podAntiAffinity |
Object |
pod 和 pod 之间的反亲和性,pod 不在同一个 node 上创建。其他同上 |
示例: node 硬亲和性,pod 必须创建在满足条件的 node 上
节点标签 xxx 的值必须包含 aaa 或 bbb 才能创建
spec:
affinity:
nodeAffinity: # 定义 node 亲和性
requiredDuringSchedulingIgnoredDuringExecution: # 定义 硬亲和性
- matchExpressions: # 使用表达式匹配机制
- key: xxx # 定义标签 key 值
operator: In # 使用规则是 in 只要包括下面 values 中一个即可
values: # 定义匹配的值
- aaa
- bbb
示例: node 软亲和性,需要定义 weight
权重,当有多个匹配条件且都满足时根据权重选择 node
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
- matchExpressions:
- key: xxx
operator: In
values:
- aaa
- bbb
weight: 10
- preference:
- matchExpressions:
- key: xxx2
operator: In
values:
- aaa2
- bbb2
weight: 6
示例: pod 亲和性与反亲和性
pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
labels:
keyaaa1: valueaaa1 # 这里定义标签,会在 pod2 中亲和性调用
keybbb1: valuebbb1
spec:
containers:
- name: pod1-con
image: nginx
imagePullPolicy: IfNotPresent
pod2.yaml 与 pod1 亲和性与反亲和性
apiVersion: v1
kind: Pod
metadata:
name: pod2
labels:
aaa2: aaa2
bbb2: bbb2
spec:
containers:
- name: pod2-con
image: nginx
imagePullPolicy: IfNotPresent
affinity:
# 反亲和性使用 podAntiAffinity 其他匹配方式一样
podAffinity: # pod 亲和性
requiredDuringSchedulingIgnoredDuringExecution: # pod 硬亲和性
- labelSelector: # 定义标签选择器规则
matchExpressions: # 表达式匹配,在 pod 中搜索标签 key=keyaaa1 的标签,且值包含 valueaaa1
- key: keyaaa1
operator: In
values:
- valueaaa1
# 这里是 node 节点的 label 的 key,会根据 key 的值定位;
# 也就是说会在有 key=kubernetes.io/hostname 的 node 上面进行判断
# 查看 node label 命令:kubectl get nodes --show-labels
topologyKey: kubernetes.io/hostname # 只会在符合这个要求的节点上搜索 pod 和创建
-
Pod 的
pod.spec.containers
字段,容器
kubectl explain pod.spec.containers
字段 | 值类型 | 说明 |
---|---|---|
args |
[]string |
在容器中执行命令 |
command |
[]string |
要在容器中运行的命令command 和 args 区别:1. 如果 command 和 args 均没有指定,那么则使用 Dockerfile 的配置。2. 如果 command 没有指定,但指定了 args ,那么 Dockerfile 中配置的 ENTRYPOINT 的命令行会被执行,并且将 args 中填写的参数追加到 ENTRYPOINT 中。3. 如果 command 指定了,但 args 没有写,那么 Dockerfile 默认的配置会被忽略,执行输入的 command (不带任何参数,当然 command 中可自带参数)。4. 如果 command 和args 都指定了,那么 Dockerfile 的配置被忽略,执行 command 并追加上 args 参数。 |
env |
[]Object |
环境变量,* name : 环境变量的名字value : 直接给 name 赋值valueFrom : 加载指定 ConfigMap 下的某个 key 的 value 值,然后赋值给 name : |
envFrom |
[]Object |
加载环境变量,加载整个 ConfigMap 所有配置到环境变量configMapRef :指定 ConfigMap 名 |
image |
string |
容器使用的镜像 |
imagePullPolicy |
string |
镜像拉取策略Always : 总是去指定的镜像仓拉取无视本地。默认 IfNotPresent : 使用节点上存在的镜像,没有再去拉取。Never : 只用当前节点的镜像,没有也不拉取 |
lifecycle |
Object |
生命周期钩子postStart : 容器创建之后立刻执行,用于资源部署、环境准备等preStart : 在容器被终止前执行,用于优雅关闭应用程序、通知其他系统等。postStart 和 preStart 的参数:exec : 执行 command 命令httpGet : 执行一个http get 请求: host : 主机名 httpHeaders :请求头path :路径port :端口 scheme : https 还是 http
|
startupProbe |
Object |
启动探测,探测容器是否正常运行,先运行 startupProbe ,在执行 livenessProbe 或 livenessProbe ,这两个并行关系; :
|
livenessProbe |
Object |
存活性探测,判断容器是否处于 runnning 状态,根据重启策略决定是否重启容器; :
|
readinessProbe |
Object |
就绪性检测,判断容器内程序是否准备就绪并对外提供服务,将容器设置为不可用,不接受 service 转发的请求; : |
* name |
string |
容器名 |
ports |
[]Object |
pod 端口配置 : |
resources |
Object |
限制容器使用资源limits <map[string]string> : 限制资源requests <map[string]string> : 限制请求,最少有这么多空闲资源才能在 node 上创建 |
securityContext |
Object |
安全策略上下文 |
terminationMessagePath |
string |
将容器终止的一些信息写入到,挂载在容器中的文件系统的路径。 |
terminationMessagePolicy |
string |
容器终止写入信息策略。FallbackToLogsOnError 将使用容器日志输出的最后一部分,大小限制为 2048 字节 或 80 行 。默认 File
|
volumeDevices |
[]Object |
|
volumeMounts |
[]Object |
挂载存储* mountPath : 将卷挂载到容器中的地址* name : 名字必须和创建的 volume 的 name 相同readOnly : 只读,默认 False subPath :subPathExpr :mountPropagation : |
workingDir |
string |
容器的工作目录。如果未指定,将使用容器运行时的默认值,该默认值可能在容器映像中配置。无法更新。 |
stdin |
boolean |
|
stdinOnce |
boolean |
|
tty |
boolean |
-
Pod 的
pod.spec.containers.env
字段,环境变量
字段 | 值类型 | 说明 |
---|---|---|
* name |
string |
变量名,将配置文件中对应值赋值给这个 name
|
value |
string |
引用环境变量中的值 $(VAR_NAME) ,如果值不存在出入 value 中的值。 |
valueFrom |
Object |
自定义环境变量 : |
-
Pod 的
pod.spec.containers.env.valueFrom
字段,定义环境变量
字段 | 值类型 | 说明 |
---|---|---|
configMapKeyRef |
Object |
加载创建好的 ConfigMap 中的值name : ConfigMap 的名字 key : ConfigMap 中变量的 key |
secretKeyRef |
Object |
加载 Secret 的配置信息name : Secret 的名字 key : Secret 中变量的 key;用法同 configMap 看示例 |
fieldRef |
Object |
文件引用 * fieldPath : 引用文件的路径 |
resourceFieldRef |
Object |
选择容器的资源:目前仅支持资源限制与请求(limits.cpu 、limits.memory 、requests.cpu 和 requests.memory )containerName : 容器的名字resource: 限制资源类型 |
示例:
定义一个 ConfigMap
,创建 comfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql # 这个 name 会在 env.valueFrom.name 中被调用
data:
log: "1" # 这个配置的 key 会在下面 pod 中加载时的 env.valueFrom.configMapKeyRef .key 中被调用
pod 加载 ConfigMap
apiVersion: v1
kind: Pod
metadata:
name: mysql-pod
spec:
containers:
- name: mysql
image: mysql
imagePullPolicy: IfNotPresent
env: # 定义环境变量
# 总结:就是在 configmap 资源里面搜索 name 为 mysql 的 configmap。然后在这里面把 key 是 log 的参数的值取出来,赋值给环境变量 log_bin
- name: log_bin # 定义环境变量名字为 log_bin
valueFrom: # 值来源
configMapKeyRef: # 定义 configmap
name: mysql # 指定 configmap.metadata.name 的值。来搜索 configmap
key: log # 指定 configmap.data.log 自定义的 log; 这里获取到 log 的值后会赋值给 log_bin。log_bin=1
-
Pod 的
pod.spec.containers.ports
字段,容器暴露端口
kubectl explain pod.spec.containers.ports
字段 | 值类型 | 说明 |
---|---|---|
* containerPort |
integer |
容器要暴露的端口号 |
hostIP |
string |
将容器中的服务暴露到宿主机的端口上时,可以指定绑定的宿主机 IP |
hostPort |
integer |
容器中的服务在宿主机上映射的端口 |
name |
string |
端口名 |
protocol |
string |
端口使用的协议 SCTP TCP UDP
|
-
pod 的
pod.spec.containers.startupProbe
livenessProbe
readinessProbe
字段,启动探测,存活探测,就绪探测
livenessProbe
和readinessProbe
区别:
readinessProbe
和livenessProbe
可以使用相同探测方式,只是对 Pod 的处置方式不同:
readinessProbe
当检测失败后,将 Pod 的 IP:Port 从对应的 EndPoint 列表中删除。
livenessProbe
当检测失败后,将销毁容器然后根据 Pod 重启策略执行后续任务。
字段 | 值类型 | 说明 |
---|---|---|
exec |
Object |
执行命令,退出码为 0,探测成功 |
failureThreshold |
integer |
探测失败几次算失败,在 readinessProbe 探针中,Pod 会被标记为未就绪,默认为 3,最小值为 1 |
httpGet |
Object |
GET 请求容器的 host 、port 、httpHeader 、path 组成的地址,如果响应的状态码大于等于200且小于400,则认为容器健康 |
initialDelaySeconds |
integer |
容器启动多少秒后开始探测,默认是 0 秒,最小值是 0 |
periodSeconds |
integer |
执行探测的时间间隔,默认为 10s,单位“秒”,最小值是1 |
successThreshold |
integer |
连续成功几次算成功,默认为 1,在 livenessProbe 探针中必须为1,最小值为1 |
tcpSocket |
Object |
通过容器的 host 和 port 执行 TCP 检查,如果能够建立 TCP 连接,则表明容器健康 |
terminationGracePeriodSeconds |
integer |
为 kubelet 配置从为失败的容器触发终止操作到强制容器运行时停止该容器之前等待的宽限时长 |
timeoutSeconds |
integer |
探测超时的秒数。默认为 1 秒 |
示例: 启动探测 startupProbe
,exec
和 tcpSocket
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: default
labels:
app: nginx
spec:
containers:
- name: nginx-1
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
startupProbe: # 定义启动探测
# exec: # 定义要执行的命令
# command:
# - "/bin/bash"
# - "-c"
# - "ps aux | grep nginx"
# tcpSocket: # tcp socket 探测
# port: 80
httpGet: # http get 探测。不写 host 默认就是当前容器
path: /
port: 80
initialDelaySeconds: 20 # 容器启动多久后探测
periodSeconds: 10 # 执行探测的时间间隔
successThreshold: 1 # 成功几次算成功
failureThreshold: 3 # 失败几次算失败
示例: 存活探测
apiVersion: v1
kind: Pod
metadata:
name: ubuntu
namespace: default
labels:
app: ubuntu
spec:
containers:
- name: ubuntu-1
image: ubuntu
imagePullPolicy: IfNotPresent
# 在容器中创建一个文件 aaa
args: ["/bin/sh", "-c", "touch /root/aaa; sleep 60; rm -rf /root/aaa; sleep 300"]
livenessProbe: # 定义 存活探测
exec:
command: ["cat", "/root/aaa"] # 执行命令查看创建的 aaa 文件是否存在
initialDelaySeconds: 20
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
示例: 就绪探测
pod 起来后,等待 pod 里面容器服务正常启动,才会把 pod 加入到 service 代理。
就绪探测:不使用就绪探测时,只要 pod 启动成功,系统默认认为 pod 的所有服务都已经正常运行,实际上有些服务在 pod 启动成功后还需要一些时间来启动。
这个时候就需要就绪探测来监测 pod 里面的服务是否启动成功。有些资源和 pod 绑定需要 pod 里面的服务完全启动才能绑定,如: service
# 启动一个 service
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- name: server
port: 80
targetPort: 80
nodePort: 31180
selector:
app: nginx
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- name: server
containerPort: 80
readinessProbe: # 定义就绪探测
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 10
httpGet: # 定义 http get 方式
scheme: HTTP
port: 80
path: /
二、pod.spec.volume YAML
挂载持久化存储,一下列出为常用的存储方式
kubectl explain pod.spec.volumes
字段 | 值类型 | 说明 |
---|---|---|
* name |
string |
存储名 |
emptyDir |
Object |
临时目录,pod 销毁数据销毁 都是默认值的写法: emptyDir: {} medium : 支持此目录的存储介质类型。 默认值为 “”,表示使用节点的默认介质sizeLimit : 大小限制 |
hostPath |
Object |
宿主机目录挂载到容器* path : 宿主机目录地址type : 类型,如下:空 : 空字符串(默认)用于向后兼容,这意味着在安装 hostPath 卷之前不会执行任何检查。DirectoryOrCreate : 目录不存在创建,存在直接用,权限为 0755。Directory : 路径上目录必须存在。FileOrCreate : 文件不存在创建,存在直接用,权限为 0644。File : 路径上文件必须存在。Socket : 在给定路径上必须存在的 UNIX 套接字。CharDevice : 在给定路径上必须存在的字符设备。BlockDevice : 在给定路径上必须存在的块设备。 |
nfs |
Object |
nfs 网络存储* path : nfs 目录地址readOnly : 是否只读,默认 false * server : nfs 服务器地址 |
persistentVolumeClaim |
Object |
创建 pvc 卷* claimName : 要使用的 pvc 名字readOnly :只读,默认 false
|
cephfs |
Object |
ceph fs 文件存储 |
glusterfs |
Object |
glusterfs 分布式存储 |
configMap |
Object |
指定 ConfigMap 配置文件,做成卷被 pod 挂载,下面示例defaultMode : 文件设置权限,0000 0755 这种items : 当不写 items 时文件的名称是 key ,而文件的内容是 key 的 value name : ConfigMap 的名字 |
rbd |
Object |
ceph rbd 块存储 |
secret |
Object |
加密存储defaultMode : 文件设置权限,0000 0755 这种items : 当不写 items 时文件的名称是 key ,而文件的内容是 key 的 value secretName : Secret 的名字 |
示例:挂载临时卷 emptyDir
临时卷所在物理机地址为
/var/lib/kubelete/pods
根据 pod uid 匹配kubectl get pods xxx -o yaml | grep uid
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
volumes: # 定义卷
- emptyDir: {} # 定义临时卷类型
name: empty-volume # 卷名字
containers: # 定义容器
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
volumeMounts: # 挂载卷设置
- name: empty-volume # 挂载卷的名字,必须和 volume.name 相同
mountPath: /usr/share/html # 挂载到容器中的地址
示例: 挂载宿主机文件 hostPath
......
spec:
volumes: # 定义 volume
- name: host-volume # 创建的 volume 名字
hostPath: # 使用 hostPath 类型的 volume
path: /root/aaa # 宿主机目录所在位置
type: DirectoryOrCreate # 使用 DirectoryOrCreate 类型。目录不存在创建,存在直接用,权限为 0755
......
示例: 挂载宿主机文件 nfs
。nfs 搭建参考这里
......
spec:
volumes: # 定义 volume
- name: nfs-volume # 创建的 volume 名字
nfs: # 使用 nfs 类型的 volume
path: /root/nfs_data # 宿主机目录所在位置
server: fns_ip # nfs ip 地址
......
示例: 挂载 pvc persistentVolumeClaim
,pv,pvc 创建
......
spec:
volumes: # 定义卷
- persistentVolumeClaim: # 定 pvc 卷类型
claimName: pvc-1 # 指定要使用的 pvc 名字
name: pvc-volume # 卷名字
......
示例: 挂载 configMap
,configMap 创建
......
spec:
volumes: # 定义卷
- configMap: # 定 pvc 卷类型
name: configmap-name # 指定要使用的 pvc 名字
name: configmap # 卷名字
......
网友评论