Kubernetes Volume之Projected Volumes投射卷

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

Kubernetes Volume之Projected Volumes投射卷abstract.png

实践

所谓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

效果如下所示

Kubernetes Volume之Projected Volumes投射卷

figure 1.jpeg

然后我们使用投射卷将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 Volume之Projected Volumes投射卷

figure 2.jpeg

参考文献

  1. Kubernetes in Action中文版 Marko Luksa著
  2. 深入剖析Kubernetes 张磊著

原文始发于微信公众号(青灯抽丝):Kubernetes Volume之Projected Volumes投射卷

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/41895.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!