gpt4 book ai didi

kubernetes - 如何在Minikube上正确设置hostPath持久卷?

转载 作者:行者123 更新时间:2023-12-02 12:13:53 25 4
gpt4 key购买 nike

我目前正在做一个Lumen项目,我们在其中使用Minikube作为我们的开发环境。我们的主机的/Users/development/<project name>已安装在/var/www/html上,并且工作正常。
但是,由于整个/var/www/html/storage/framework目录具有 1001:1001 所有权这一事实,因此我面临此存储问题,其中文件写入无法在/var/www/html中进行。

这是我的部署规范:

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: apiserver
namespace: development
labels:
app: sample-app-name
spec:
selector:
matchLabels:
app: sample-app-name
tier: apiserver
replicas: 1
template:
metadata:
labels:
app: sample-app-name
tier: apiserver
spec:
containers:
- name: php-app
image: my-image:latest
resources:
requests:
cpu: 100m
memory: 100Mi
imagePullPolicy: Never
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/www/html"
name: host-mount
imagePullSecrets:
- name: dockercred
volumes:
- name: host-mount
hostPath:
path: "/Users/development/<app directory>"

我尝试将永久卷移动到其自己的单独文件中,并创建了一个pvc,但是仍然无法正常工作。
我还尝试了多种方法来使用初始化容器和安全上下文来更改目录权限,但是仍然始终将权限设置为** 1001:1001 *
我真的很在这里,所以任何帮助将不胜感激。

主机规格:
  • 操作系统:Ubuntu 18.04.3 LTS
  • Minikube版本:v0.30.0
  • Kubectl客户端版本:客户端版本:version.Info {主要:“1”,次要:“16”,GitVersion:“v1.16.2”,GitCommit:“c97fe5036ef3df2967d086711e6c0c405941e14b”,GitTreeState:“干净”,构建日期:“2019-10 -15T19:18:23Z“,GoVersion:” go1.12.10“,编译器:” gc“,平台:” linux / amd64“}
  • Kubectl服务器版本:服务器版本:version.Info {主要:“1”,次要:“10”,GitVersion:“v1.10.0”,GitCommit:“fc32d2f3698e36b93322a3465f63a14e9f0eaead”,GitTreeState:“干净”,构建日期:“2018-03 -26T16:44:10Z“,GoVersion:” go1.9.3“,编译器:” gc“,平台:” linux / amd64“}
  • Virtualbox版本:5.2.34 r133893(Qt5.9.5)

  • 编辑:(这是我在部署中使用的镜像的docker文件)
    FROM phpearth/php:7.1-nginx

    RUN apk add --no-cache php7.1-redis php7.1-pdo php7.1-pdo_pgsql php7.1-xdebug composer bash

    COPY ./nginx-default.conf /etc/nginx/conf.d/default.conf
    COPY ./xdebug.ini /etc/php/7.1/conf.d/xdebug.ini
    COPY ./www.conf /etc/php/7.1/php-fpm.d/www.conf
    RUN mkdir -p /var/www/storage/import
    RUN mkdir -p /var/www/storage/import/files
    RUN mkdir -p /var/www/storage/import/templates
    RUN mkdir -p /var/www/storage/logs
    RUN mkdir -p /var/www/storage/framework/sessions
    RUN mkdir -p /var/www/storage/framework/views
    RUN touch /var/www/storage/logs/lumen.log
    RUN chown -Rf 1000:1000 /var/www/
    # Install the blackfire client
    RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
    && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s http://packages.blackfire.io/binaries/blackfire-php/1.23.1/blackfire-php-alpine_amd64-php-71.tar.gz \
    && mkdir -p /tmp/blackfire \
    && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \
    && mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \
    && printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > /etc/php/7.1/conf.d/blackfire.ini \
    && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz

    最佳答案

    事实证明,这不是一个日益严重的问题。我一直指责hostPath坐骑
    因为当我尝试在/ var / www上运行ls -lah时,它始终将html目录的权限显示为 1001:1001 而不是www-data。

    最后,是PHP的用户未在正确的UID上运行。
    转储posix_getpwuid(posix_geteuid())显示以下结果:

    array:7 [
    "name" => "www-data"
    "passwd" => "x"
    "uid" => 82
    "gid" => 82
    "gecos" => "www-data"
    "dir" => "/var/www"
    "shell" => "/sbin/nologin"
    ]

    但是在我的Dockerfile中添加以下行之后: RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data,现在显示如下:
    array:7 [
    "name" => "www-data"
    "passwd" => "x"
    "uid" => 1000
    "gid" => 1000
    "gecos" => "www-data"
    "dir" => "/var/www"
    "shell" => "/sbin/nologin"
    ]

    我的API现在没有任何权限问题。

    关于kubernetes - 如何在Minikube上正确设置hostPath持久卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59484063/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com