这里介绍Kubernetes卷中的Projected Volumes投射卷
实践
所谓Projected Volumes投射卷,可以实现为容器提供预先定义好的数据。故从容器的角度来看,卷中的数据是被K8s投射到容器当中的。即,Projected Volumes投射卷可以将若干现有的卷源映射到同一个目录下。当前,投射卷支持以下几种类型的卷源
-
Secret -
ConfigMap -
DownwardAPI -
ServiceAccountToken
故在演示投射卷之前,我们先通过Secret、ConfigMap定义一些数据
# 创建 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
效果如下所示
然后我们使用投射卷将ConfigMap、Secret、DownwardAPI中的数据投射到容器下。配置如下所示
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
效果如下所示
参考文献
-
Kubernetes in Action中文版 Marko Luksa著 -
深入剖析Kubernetes 张磊著
原文始发于微信公众号(青灯抽丝):Kubernetes Volume之Projected Volumes投射卷
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/41895.html