Projected Volume

为容器提供预先定义好的数据.

有4种:

  • Secret
  • ConfigMap
  • Downward API
  • ServiceAccountToken

1. Secret

image.png

创建 secret:

  1. $ kubectl create secret generic user --from-file=./username.txt
  2. $ kubectl create secret generic pass --from-file=./password.txt

查看:

  1. $ kubectl get secrets

使用 yaml 创建:

image.png

编写前需要使用 base64:

image.png

在生产环境需要开启 Secret 加密插件.

2. ConfigMap

与 Secret 的区别是, ConfigMap 无须加密.

image.png

3. Downward API

让Pod里的容器能够直接获取这个Pod API对象本身的信息.

暴露 metadata.labels 信息给容器:

image.png

fieldRef 可以声明使用:

image.png

resourceFieldRef 可以声明使用:

image.png

通过环境变量声明使用:

image.png

4. ServiceAccountToken

image.png

ServiceAccountToken 是特殊的 Secret.

image.png

容器健康检查和恢复机制

需要注意的是’Kubemetes中并没有Docker的Stop语义。所以虽说是Restan(重启)’实际上却是重新创建了容器。

  • pod.spec.restartPolicy, Always
  • pod的恢复过程永远发生在当前节点上’而不会跑到别的节点上

PodPreset 对象:

  • 预先定义 pod 字段填充模板

image.png

  1. $ kubectl create -f preset.yaml
  2. $ kubectl create -f pod.yaml

PodPreset 只是修改 Pod 对象, 而不会修改 Deployment 等.