标签: volumes

Kubernetes使用azureFile持久化卷

我正在尝试使用azureFile创建持久卷但是我不断收到以下错误.

MountVolume.SetUp failed for volume "kubernetes.io/azure-file/2882f900-d7de-11e6-affc-000d3a26076e-pv0001" (spec.Name: "pv0001") pod "2882f900-d7de-11e6-affc-000d3a26076e" (UID: "2882f900-d7de-11e6-affc-000d3a26076e") with: mount failed: exit status 32 Mounting arguments: //xxx.file.core.windows.net/test /var/lib/kubelet/pods/2882f900-d7de-11e6-affc-000d3a26076e/volumes/kubernetes.io~azure-file/pv0001 cifs [vers=3.0,username=xxx,password=xxx ,dir_mode=0777,file_mode=0777] Output: mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) 
Run Code Online (Sandbox Code Playgroud)

我还尝试在其中一个正在运行kubernetes的VM上安装共享,这样做有效.

我使用以下配置来创建pv/pvc/pod.

apiVersion: v1
kind: Secret
metadata:
  name: azure-secret
type: Opaque
data:
  azurestorageaccountkey: [base64 key]
  azurestorageaccountname: [base64 accountname]

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  azureFile:
    secretName: azure-secret
    shareName: test
    readOnly: false


kind: Pod …
Run Code Online (Sandbox Code Playgroud)

azure volumes kubernetes azure-files persistent-volumes

5
推荐指数
1
解决办法
1582
查看次数

kubernetes 部署将 Secret 安装为文件夹而不是文件

我有一个配置文件作为 kubernetes 中的秘密,我想将其安装到容器内的特定位置。问题在于,在容器内创建的卷是一个文件夹,而不是其中包含机密内容的文件。有办法解决吗?我的部署如下所示:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: jetty
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jetty
  template:
    metadata:
      labels:
        app: jetty
    spec:
      containers:
        - name: jetty
          image: quay.io/user/jetty
          ports:
            - containerPort: 8080
          volumeMounts:
          - name: config-properties
            mountPath: "/opt/jetty/config.properties"
            subPath: config.properties
          - name: secrets-properties
            mountPath: "/opt/jetty/secrets.properties"
          - name: doc-path
            mountPath: /mnt/storage/
          resources:
            limits:
              cpu: '1000m'
              memory: '3000Mi'
            requests:
              cpu: '750m'
              memory: '2500Mi'
      volumes:
      - name: config-properties
        configMap:
          name: jetty-config-properties
      - name: secrets-properties
        secret: 
          secretName: jetty-secrets
      - name: doc-path …
Run Code Online (Sandbox Code Playgroud)

volumes kubernetes kubernetes-secrets

5
推荐指数
1
解决办法
1万
查看次数

Gitlab Docker-in-Docker CI\CD 方案:如何传递卷

假设我在 Gitlab 上有存储库并遵循以下部署方案:

  1. 在主机服务器上使用 docker 执行器设置 docker 和 gitlab-runner。
  2. .gitlab-ci.yml设置 docker-compose 中,与依赖项一起构建和建立我的服务。
  3. 通过将提交推送到分支来设置要触发的管道production

正如Gitlab 指南中建议的那样,我放置了/etc/gitlab-runner/config.toml以下几行:

  executor = "docker"
  [runners.docker]
    image = "alpine"
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
Run Code Online (Sandbox Code Playgroud)

但我的书docker-compose.yml完全被忽略了。假设我有具有以下结构的 git 存储库:

.gitlab-ci.yml
docker-compose.yml
user_conf.d/app.conf
Run Code Online (Sandbox Code Playgroud)

并有卷:./user_conf.d:/etc/nginx/user_conf.d. 当我检查/etc/nginx/user_conf.d容器内部时,我发现一个空文件夹而不是app.conf里面的文件夹。

所以问题是:如何正确地将卷传递到从 Gitlab runner 的 docker 执行器启动的 docker 容器。

PS配置如下:

.gitlab-ci.yml

.gitlab-ci.yml
docker-compose.yml
user_conf.d/app.conf
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

image:
  name: docker/compose:latest

services:
  - docker:dind
stages:
  - deploy

deploy:
  stage: deploy
  only:
    - …
Run Code Online (Sandbox Code Playgroud)

deployment volumes gitlab docker gitlab-ci-runner

5
推荐指数
1
解决办法
3820
查看次数

在部署更新时重新附加卷声明

我正在使用持久卷声明将数据存储在容器中:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-pvc
  labels:
    type: amazonEBS
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
Run Code Online (Sandbox Code Playgroud)

规范中的声明:

spec:
  volumes:
  - name: test-data-vol
    persistentVolumeClaim:
      claimName: test-pvc
  containers:
  - name: test
    image: my.docker.registry/test:1.0
    volumeMounts:
    - mountPath: /var/data
      name: test-data-vol
Run Code Online (Sandbox Code Playgroud)

当我第一次启动它时,这个卷安装正确。但是当我尝试更新容器映像时:

-    image: my.docker.registry/test:1.0
+    image: my.docker.registry/test:1.1
Run Code Online (Sandbox Code Playgroud)

此卷无法挂载到新 pod:

# kubectl get pods
test-7655b79cb6-cgn5r       0/1     ContainerCreating   0          3m
test-bf6498559-42vvb        1/1     Running             0          11m

# kubectl describe test-7655b79cb6-cgn5r
Events:
  Type     Reason                 Age   From                                                  Message
  ----     ------                 ----  ----                                                  -------
  Normal   Scheduled …
Run Code Online (Sandbox Code Playgroud)

persistence volumes kubernetes kubectl

4
推荐指数
2
解决办法
6128
查看次数

默认容器“container-1”来自:container-1、container-2

在 K8s 中我正在练习示例6.1。具有两个共享相同卷的容器的 Pod:来自《kubernetes in Action》一书的Fortune-pod.yaml 。在卷概念中,我的 Pod 包含 2 个容器,其中一个容器未运行,请指导我哪里做错了。成功运行 Pod。在检查容器的日志时,我收到以下错误:

Defaulted container "fortune-cont" out of: fortune-cont, web-server 
Run Code Online (Sandbox Code Playgroud)

但在 pod 描述事件中,它看起来像这样。

Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  40m                  default-scheduler  Successfully assigned book/vol-1-fd556f5dc-8ggj6 to minikube
  Normal   Pulled     40m                  kubelet            Container image "nginx:alpine" already present on machine
  Normal   Created    40m                  kubelet            Created container web-server
  Normal   Started    40m                  kubelet            Started container web-server
  Normal   Created    39m (x4 over 40m)    kubelet            Created container fortune-cont …
Run Code Online (Sandbox Code Playgroud)

volumes kubernetes minikube

4
推荐指数
1
解决办法
9058
查看次数

如何获取 docker 卷的创建日期

如何在不使用 Windows 的 docker gui 的情况下获取 docker 卷的创建日期。对于 debian linux 来说,没有 GUI。在带有 docker 扩展的 VS Code 中,也无法查看创建日期。

通过检查这是可能的,但如果我有许多具有神秘名称的卷,则很难确定最后创建的是哪一个

Linux 终端有没有一种方便的方法来列出那些已排序的日期?

我尝试检查 ---> docker 卷检查

date volumes inspect docker

4
推荐指数
1
解决办法
1097
查看次数

Powershell脚本将VolumeID与DriveLetter进行比较

我有一个运行带有源C的wbadmin的powershell脚本到目标iSCSI卷,该卷由其卷ID(\?\ Volume {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx})指定.备份本身运行得很好,我只是想在脚本中添加一个异地备份功能.遗憾的是,robocopy无法使用卷ID作为复制作业的源,并将其作为未知参数拒绝.

有没有办法方便地从卷ID获取实际的驱动器号,以便我可以在调用robocopy之前替换它?

"mountvol"的输出看起来非常有前途,但如果有一个PowerShell集成功能,我最好使用它.

我已经尝试过Get-PSDrive和Get-Volume,似乎无法让他们输出VolumeID.

powershell volumes drive-letter

3
推荐指数
1
解决办法
1280
查看次数

Docker命名卷位置Mac

我正在使用Docker for Mac 1.12.1并有一个docker compose文件启动wordpress和mysql服务

撰写文件

version: '2'
services:
  db:
    container_name: mysql_db
    image: mysql:5.7
    volumes:
      - "./.data/db:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    container_name: wordpress
    depends_on:
      - db
    image: wordpress:latest
    links:
      - db
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: wordpress
    volumes:
      - wordpress/:/var/www/html/

volumes:
    wordpress:
Run Code Online (Sandbox Code Playgroud)

但是,在成功完成所有操作后,我无法找到Mac上存在命名卷的位置.

MacBookAir:wordpress carlwainwright$ docker volume inspect wordpress_wordpress
[
    {
        "Name": "wordpress_wordpress",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/wordpress_wordpress/_data",
        "Labels": null,
        "Scope": "local"
    }
]
MacBookAir:wordpress carlwainwright$ ls -l /var/lib/docker/volumes/wordpress_wordpress/_data/ …
Run Code Online (Sandbox Code Playgroud)

macos wordpress volumes docker docker-compose

3
推荐指数
1
解决办法
1809
查看次数

使用 MongoDB 的 docker-compose.yml 数据不会持久保存到主机卷

在我的 Mac 上安装 docker 和 MongoDB 镜像。当我使用 docker run 命令中直接指定的卷启动容器时,即使停止容器后数据也会保留。但当我通过 这样做时,同样不起作用docker-compose.yml。有人可以建议该文件有什么问题docker-compose.yml吗?

当我这样做时,数据会被持久化:

docker run --name mongodb -v /Users/shrap7/projects/mongodb/data:/data/db --rm -d mongo

但是当我尝试同样的操作时docker-compose.yml- 它不会保留数据。

version: '3.4'
services:
    mongodb:
       image: mongo:latest
       container_name: "mongodb"
       volumes:
          - /Users/shrap7/projects/mongodb/data:/data/db
       ports:
          - 27017:27017
Run Code Online (Sandbox Code Playgroud)

我尝试使用双引号,尝试相对路径,即./data:/data/db,但没有运气。谢谢。

volumes mongodb docker docker-compose

3
推荐指数
1
解决办法
2843
查看次数

Digital Ocean 管理的 Kubernetes 卷处于挂起状态

这并不是数字海洋特有的,如果能够验证这是否是预期的行为,那就太好了。

我正在尝试使用 ElasticSearch本身的 Helm Chart 在 DO 管理的 Kubernetes 集群上设置 ElasticSearch 集群

他们说我需要storageClassName在 a 中指定 avolumeClaimTemplate才能使用托管 kubernetes 服务提供的卷。对于 DO,这是do-block-storages根据他们的文档。似乎也没有必要定义 PVC,舵图应该自己定义。

这是我正在使用的配置

# Specify node pool
nodeSelector:
    doks.digitalocean.com/node-pool: elasticsearch

# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"

# Allocate smaller chunks of memory per pod.
resources:
  requests:
    cpu: "100m"
    memory: "512M"
  limits:
    cpu: "1000m"
    memory: "512M"

# Specify Digital Ocean storage
# Request smaller persistent volumes.
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  storageClassName: …
Run Code Online (Sandbox Code Playgroud)

volumes elasticsearch digital-ocean kubernetes

3
推荐指数
1
解决办法
2445
查看次数