Projected Volume
为容器提供预先定义好的数据.
有4种:
- Secret
- ConfigMap
- Downward API
- ServiceAccountToken
1. Secret

创建 secret:
$ kubectl create secret generic user --from-file=./username.txt$ kubectl create secret generic pass --from-file=./password.txt
查看:
$ kubectl get secrets
使用 yaml 创建:

编写前需要使用 base64:

在生产环境需要开启 Secret 加密插件.
2. ConfigMap
与 Secret 的区别是, ConfigMap 无须加密.

3. Downward API
让Pod里的容器能够直接获取这个Pod API对象本身的信息.
暴露 metadata.labels 信息给容器:

fieldRef 可以声明使用:

resourceFieldRef 可以声明使用:

通过环境变量声明使用:

4. ServiceAccountToken

ServiceAccountToken 是特殊的 Secret.

容器健康检查和恢复机制
需要注意的是’Kubemetes中并没有Docker的Stop语义。所以虽说是Restan(重启)’实际上却是重新创建了容器。
- pod.spec.restartPolicy, Always
- pod的恢复过程永远发生在当前节点上’而不会跑到别的节点上
PodPreset 对象:
- 预先定义 pod 字段填充模板

$ kubectl create -f preset.yaml$ kubectl create -f pod.yaml
PodPreset 只是修改 Pod 对象, 而不会修改 Deployment 等.
