代码之家  ›  专栏  ›  技术社区  ›  Larry Cai

如何使用hostPath将单个文件映射到kubernetes pod?

  •  7
  • Larry Cai  · 技术社区  · 9 年前

    我有一个自己的nginx配置 /home/ubuntu/workspace/web.conf 由脚本生成。我宁愿把它放在下面 /etc/nginx/conf.d default.conf

    下面是 nginx.yaml

    apiVersion: v1
    kind: Pod
    metadata:
        name: nginx
    spec:
        volumes:
          - name: webconf
            hostPath:
              path: /home/ubuntu/workspace/web.conf
        containers:
          - image:  nginx
            name: nginx
            ports:
              - containerPort: 18001
                protocol: TCP                               
            volumeMounts:
              - mountPath: /etc/nginx/conf.d/web.conf
                name: web
    

    $ kubectl create -f nginx.yaml
    pod "nginx" created
    $ kubectl exec -it nginx -- bash
    root@nginx:/app# ls -al /etc/nginx/conf.d/
    total 12
    drwxr-xr-x 1 root root 4096 Aug  3 12:27 .
    drwxr-xr-x 1 root root 4096 Aug  3 11:46 ..
    -rw-r--r-- 2 root root 1093 Jul 11 13:06 default.conf
    drwxr-xr-x 2 root root    0 Aug  3 11:46 web.conf
    

    它适用于docker容器 -v hostfile:containerfile .

    顺便说一句:我用minikube 0.21.0 在…上 Ubuntu 16.04 LTS kvm

    2 回复  |  直到 9 年前
        1
  •  10
  •   coreypobrien    9 年前

    尝试使用 subPath 钥匙在你的 volumeMounts 这样地:

    apiVersion: v1
    kind: Pod
    metadata:
      name: singlefile
    spec:
      containers:
      - image: ubuntu
        name: singlefiletest
        command:
          - /bin/bash
          - -c
          - ls -la /singlefile/ && cat /singlefile/hosts
        volumeMounts:
        - mountPath: /singlefile/hosts
          name: etc
          subPath: hosts
      volumes:
      - name: etc
        hostPath:
          path: /etc
    

    例子:

    $ kubectl apply -f singlefile.yaml
    pod "singlefile" created
    $ kubectl logs singlefile
    total 24
    drwxr-xr-x. 2 root root 4096 Aug  3 12:50 .
    drwxr-xr-x. 1 root root 4096 Aug  3 12:50 ..
    -rw-r--r--. 1 root root 1213 Apr 26 21:25 hosts
    # /etc/hosts: Local Host Database
    #
    # This file describes a number of aliases-to-address mappings for the for 
    # local hosts that share this file.
    ...
    
        2
  •  1
  •   Larry Cai    9 年前

    kvm minikube使用。

    path: /home/ubuntu/workspace/web.conf
    

    $ ls -al /home/ubuntu/workspace # in minikube host
    total 12
    drwxrwxr-x 2 ubuntu ubuntu 4096 Aug  3 12:11 .
    drwxrwxr-x 5 ubuntu ubuntu 4096 Aug  3 19:28 ..
    -rw-rw-r-- 1 ubuntu ubuntu 1184 Aug  3 12:11 web.conf
    $ minikube ssh
    $ ls -al /home/ubuntu/workspace # in minikube vm
    total 0
    drwxr-xr-x 3 root root 0 Aug  3 19:41 .
    drwxr-xr-x 4 root root 0 Aug  3 19:41 ..
    drwxr-xr-x 2 root root 0 Aug  3 19:41 web.conf
    

    我不知道为什么kvm主机文件夹共享代表会这样。

    minikube mount 命令,请参见 host_folder_mount.md

    推荐文章