1

当挂载类型为hostPath的卷时, kubernetes 文档为每个操作系统和每个驱动程序提供名称 VM 。

然而,它缺少这种情况:

  • 操作系统:Linux
  • 驱动程序:kvm
  • 主机文件夹:/home
  • 虚拟机文件夹:???

这是我想使用的目标部署,以避免在每次更改代码后重新创建图像。

这仅适用于开发环境。在生产环境中,代码将直接在图像中。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: php-hostpath
spec:
  replicas: 1
  template:
    metadata:
  labels:
    app: php-hostpath
spec:
  containers:
  - name: php-hostpath
    image: php:7.0-apache
    ports:
    - containerPort: 80
    volumeMounts:
      - name: vol-php-hostpath
        mountPath: /var/www/html
  volumes:
  - name: vol-php-hostpath
    hostPath:
      path: /hosthome/amine/DockerProjects/gcloud-kubernetes/application/06-hostPath-volume-example-minikube/src/

谢谢...

4

1 回答 1

2

基于this doc,主机文件夹共享尚未在KVM驱动程序中实现。这是我实际使用的驱动程序。

为了克服这个问题,有两种解决方案:

  • 使用virtualbox驱动程序,以便您可以通过将 localhost 上的路径更改为来挂载 hostPath/home/THE_USR/.../hosthome/THE_USR/...

  • 根据命令将您的卷挂载到 minikube 虚拟机$ minikube mount /home/THE_USR/...。该命令将返回您在 minikube VM 上安装的卷的路径。举个例子。

例子

(a) 在 minikube 虚拟机上挂载一个卷

minikube mount命令返回该路径 /mount-9p

$ minikube mount -v 3 /home/amine/DockerProjects/gcloud-kubernetes/application/06-hostPath-volume-example-minikube
Mounting /home/amine/DockerProjects/gcloud-kubernetes/application/06-hostPath-volume-example-minikube into /mount-9p on the minikubeVM
This daemon process needs to stay alive for the mount to still be accessible...
2017/03/31 06:42:27 connected
2017/03/31 06:42:27 >>> 192.168.42.241:34012 Tversion tag 65535 msize 8192 version '9P2000.L'
2017/03/31 06:42:27 <<< 192.168.42.241:34012 Rversion tag 65535 msize 8192 version '9P2000'

(b) 部署路径的规范

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: php-hostpath
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: php-hostpath
    spec:
      containers:
      - name: php-hostpath
        image: php:7.0-apache
        ports:
        - containerPort: 80
        volumeMounts:
          - name: vol-php-hostpath
            mountPath: /var/www/html
      volumes:
      - name: vol-php-hostpath
        hostPath:
          path: /mount-9p

(c) 检查安装卷是否正常工作

amine@amine-Inspiron-N5110:~/DockerProjects/gcloud-kubernetes/application/06-hostPath-volume-example-minikube$ kubectl exec -ti php-hostpath-3498998593-6mxsn bash
root@php-hostpath-3498998593-6mxsn:/var/www/html# cat index.php 
<?php
echo "This is my first docker project";
root@php-hostpath-3498998593-6mxsn:/var/www/html# cat index.php                                                                                                                                 
<?php

echo 'This is my first hostPath on kubernetes';
root@php-hostpath-3498998593-6mxsn:/var/www/html# cat index.php 
<?php

echo 'This is my first hostPath on kubernetes';
root@php-hostpath-3498998593-6mxsn:/var/www/html# 

注意:这种卷挂载只是开发环境。如果我在生产环境中,代码将不会被挂载:它将在图像中。

希望它可以帮助别人。

于 2017-03-31T03:39:53.033 回答