配置语法

k8s YAML语法

volumes

  • 类型[]
  • 作用:定义了volumes,用于后续containers中的volumeMounts进行挂载,使用name进行标识,可以有各种类型:hostPathsecret
# hostPath类型:中path是必须的
# type是可选的,写了之后k8s会进行检测包含:
# - `Directory`:表示该路径应该是一个目录。
# - `File`:表示该路径应该是一个文件。
# - `Socket`:表示该路径应该是一个 UNIX 套接字。
# - `CharDevice`:表示该路径应该是一个字符设备文件。
# - `BlockDevice`:表示该路径应该是一个块设备文件。
# - `DirectoryOrCreate`:表示该路径应该是一个目录,如果不存在,Kubernetes 会自动创建它。
# - `FileOrCreate`:表示该路径应该是一个文件,如果不存在,Kubernetes 会自动创建它。
volumes:
- name: volume-name
  hostPath:
	path: /your-host-path # 必写,想要挂载的目录
	type: Directory # 可选
# secret类型
volumes:
  - name: secret-name
    secret:
	  secretName: secret—name

volumeMounts

  • 类型[]
  • 作用:用于实际在容器中挂载:
volumeMounts:
  - name: device-data-pose3d
    mountPath: /workspace/workspace/data/pose3d/test_data/3_pose3d
    readOnly: false
# 对于secret类型
volumeMounts:
	- name: config
	  mountPath: {{ printf "%s/%s.js" .Values.image.configDirPath .Values.release }}
	  subPath: CONFIG_FILE
	  type: File
	  readOnly: true

image

imagePullPolicy

imagePullPolicy是k8s Pod规范(Pod Spec)中一个定义在容器(Container)级别的字段。它的作用是告诉Kubelet(每个节点上的代理)在创建/更新Pod时应该如何拉取镜像。 总共有三个值可以用:

  • IfNotPresent:如果本地没有镜像的话,再拉取。
  • Always:总是拉取,不论是否存在镜像,Kubelet每次创建Pod时都会尝试从远程镜像仓库拉取最新的镜像。
  • Never:从不拉去,仅使用本地的镜像,如果本地不存在则报告ErrImageNeverPull错误。

helm chart语法

chart的模板使用了go template的写法,以下给出了一些便于快速理解的例子:

常见的chart的文件夹结构:

.
├── Chart.yaml  # 中
├── templates
│   ├── daemonset.yaml
│   └── _helpers.tpl
└── values.yaml