首页 文章

Kubernetes将主机路径安装到容器内的特定位置

提问于
浏览
1

我正在尝试将一堆docker-compose文件翻译成kubernetes yamls . 我已经使用了kompose,这让我分道扬but,但是我被卡在多个容器的一个特定部分上 .

这是其中一个容器 . 请注意,docker容器正在 /u/data/. . ./var/lib/mysql . 这实际上是必要的,因为mysql目录包含数据库和配置 .

server1-backend-mysql:
image: mysql
container_name: server-backend-mysql
restart: always
volumes:
   - /u/data/server-backend-mysql:/var/lib/mysql
networks:
  - eolnet

在Kubernetes实现这一目标的正确方法是什么?请注意,对于k8,我将安装一个nfs卷(这仅用于测试目的) .

我确实调查了hostpath,但到目前为止还没有运气 .

1 回答

  • 2

    声明Pod时,请在 spec.volumes 处指定音量,然后在 spec.containers[*].volumeMounts 处指定音量:

    apiVersion: v1
    kind: Pod
    metadata:
      name: server1-backend-mysql
    spec:
      containers:
      - image: mysql
        name: mysql
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-data
      volumes:
      - name: mysql-data
        hostPath:
          path: /u/data/...
          type: Directory
    

    声明 DeploymentStatefulSet (您应该执行而不是声明Pod)时,将相应的配置移动到 spec.template.spec.volumesspec.template.spec.containers[*].volumeMounts . 有关更多信息,请查看documentation .


    作为与您的问题无关的旁注:如果您计划从NFS卷运行MySQL,请记住可以从NFS运行MySQL,但是not something that MySQL is really optimized for . 请务必相应地配置MySQL服务器,并检查您的环境是否允许您使用网络块设备(而不是网络文件系统),如Ceph RBD卷或类似设备 .

相关问题