首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库伯奈特斯什么时候从卷里取东西,什么时候放进卷?

库伯奈特斯什么时候从卷里取东西,什么时候放进卷?
EN

Stack Overflow用户
提问于 2021-01-29 18:07:29
回答 2查看 83关注 0票数 0

我看到了以下两种类型的volumeMounts

代码语言:javascript
复制
volumeMounts:
- mountPath: <path>
  name: someName

代码语言:javascript
复制
volumeMounts:
- name: someNameHere
  mountPath: <somePathHere>

这两者有什么区别?我们何时将内容放入卷中,何时从卷中获取内容?

例如,在链接中,initContainer更新卷,但是nginx容器从该卷获取数据。类似地,侧字符读取卷。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  selector:
    matchLabels:
      app: myapp-dep
  template:
    metadata:
      labels:
        app: myapp-dep
    spec:
      initContainers:
      - name: ssl-cert-creation
        image: deekshithsn/openssl
        command: ["/bin/sh"]
        args: ["-c","mkdir -p /etc/nginx/ssl;openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl/nginx.key -x509 -days 365 -out /etc/nginx/ssl/nginx.crt -subj '/C=GB/ST=London/L=London/O=Global Security/OU=IT Department/CN=example.com'"]
        volumeMounts: 
          - name: ssl-cert
            mountPath: /etc/nginx/ssl
      containers:
      - name: myapp-dep
        image: deekshithsn/nginxhttps
        command: ["/home/auto-reload-nginx.sh"]
        ports:
        - containerPort: 443
        - containerPort: 80
        livenessProbe:
            httpGet:
              path: /index.html
              port: 80
            initialDelaySeconds: 30
            timeoutSeconds: 1
        volumeMounts:
          - mountPath: /etc/nginx/ssl
            name: ssl-cert
          - mountPath: /etc/nginx/conf.d
            name: nginx-files
          - mountPath: /var/log/nginx
            name: logs

      - name: sidecar-logs
        image: xueshanf/awscli
        command: ["/bin/sh"]
        args: ["-c","cp /root/scripts/syncs3.sh /root/syncs3.sh;chmod 777 /root/syncs3.sh;while true; do sh /root/syncs3.sh; sleep 10;done"]
        volumeMounts:
          - name: logs
            mountPath: /var/log/nginx
          - name: aws-credentials
            mountPath: /root/.aws/config
            subPath: config
          - name: aws-credentials
            mountPath: /root/scripts/syncs3.sh
            subPath: syncs3.sh
      volumes:
        - name: ssl-cert
          emptyDir: {}
        - name: logs
          emptyDir: {}
        - name: aws-credentials
          configMap:
            name: "aws-config"
        - name: nginx-files
          configMap:
            name: "nginx-config"

  replicas: 2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-29 18:29:28

它们在语义上是一样的。VolumeMounts是一个具有mountPathname两个键的哈希映射。库伯内特斯对他们的解释没有什么不同。

如果您查看的是json表示,而不是yaml,它可能更清楚(键的顺序并不重要)

代码语言:javascript
复制
{
  "volumeMounts": [
    {
      "mountPath": "<path>",
      "name": "name"
    }
  ]
}
代码语言:javascript
复制
{
  "volumeMounts": [
    {
      "name": "someNameHere",
      "mountPath": "<somePathHere>"
    }
  ]
}

卷挂载指定要安装在容器内指定的文件系统位置上的卷。是否读取或写入该卷完全取决于容器中运行的应用程序。是否可以读写取决于文件权限,就像在任何挂载上一样。

更改是否传播到共享相同挂载的其他容器取决于安装传播设置。默认值是None,在这种情况下,它们不会。

票数 2
EN

Stack Overflow用户

发布于 2021-01-29 18:56:04

代码语言:javascript
复制
volumeMounts:
- mountPath: <somePathHere>
  name: someNameHere
代码语言:javascript
复制
volumeMounts:
- name: someNameHere
  mountPath: <somePathHere>

第一和第二两者都是相同的,存储在卷someNameHere中的所有内容都被安装到路径somePathHere的Pod中。卷安装在图像中指定的路径上。这意味着卷是用pod路径安装的,现在读/写取决于应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65959630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档