0%

Kubernetes Volume之Projected Volumes投射卷

这里介绍Kubernetes卷中的Projected Volumes投射卷

abstract.png

实践

所谓Projected Volumes投射卷,可以实现为容器提供预先定义好的数据。故从容器的角度来看,卷中的数据是被K8s投射到容器当中的。即,Projected Volumes投射卷可以将若干现有的卷源映射到同一个目录下。当前,投射卷支持以下几种类型的卷源

  • Secret
  • ConfigMap
  • DownwardAPI
  • ServiceAccountToken

故在演示投射卷之前,我们先通过Secret、ConfigMap定义一些数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 创建 ConfigMap 资源
apiVersion: v1
# 资源类型
kind: ConfigMap
metadata:
name: my-configmap-1
data:
mysql.ip: 196.168.1.2
mysql.password: "123456"

---

# 创建 Secret 资源
apiVersion: v1
kind: Secret
# 用户自定义类型的Secret, 该字段未显式设置则默认为Opaque
type: Opaque
metadata:
name: my-secret-1
# 值使用原文
stringData:
es.url: localhost:3307
es.user: Aaron
es.password: Bob

效果如下所示

figure 1.jpeg

然后我们使用投射卷将ConfigMap、Secret、DownwardAPI中的数据投射到容器下。配置如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
apiVersion: apps/v1
# 资源类型
kind: ReplicaSet
metadata:
# RS名称
name: my-mongodb-app
spec:
# 副本数量
replicas: 1
# 标签选择器
selector:
matchLabels:
app: db
# Pod 模板
template:
metadata:
# 标签信息
labels:
app: db
spec:
# 容器信息
containers:
- name: my-mongodb-app
image: mongo
volumeMounts:
# 将名为my-config-data的卷挂载到容器内到指定路径
- name: my-config-data
mountPath: /usr/MyData
# 卷信息
volumes:
# 定义名为my-config-data的投射卷
- name: my-config-data
projected:
sources:
# 使用ConfigMap作为投射卷的数据来源
- configMap:
# 将名为my-configmap-1的ConfigMap作为投射卷的数据来源
# 并将ConfigMap中所有条目全部暴露为容器中的文件, 其中文件名为条目的Key名
name: my-configmap-1
# 使用Secret作为投射卷的数据来源
- secret:
# 将名为my-secret-1的Secret作为投射卷的数据来源
name: my-secret-1
items:
# 将Secret中名为es.user的条目暴露为容器中的文件, 其中文件名为MyEsUser
- key: es.user
path: MyEsUser
# 将Secret中名为es.password的条目暴露为容器中的文件, 其中文件名为MyEsPassword
- key: es.password
path: MyEsPassword
# 使用DownwardAPI作为投射卷的数据来源
- downwardAPI:
items:
# 将Pod的名称写入到名为 myPodName 的文件当中
- path: myPodName
fieldRef:
fieldPath: metadata.name

效果如下所示

figure 2.jpeg

参考文献

  1. Kubernetes in Action中文版 Marko Luksa著
  2. 深入剖析Kubernetes 张磊著
请我喝杯咖啡捏~

欢迎关注我的微信公众号:青灯抽丝