【问题标题】:Pods are not restarting after initial minikube installation初始 minikube 安装后 Pod 未重新启动
【发布时间】:2020-10-27 21:08:32
【问题描述】:

我正在使用 helm 在 Linux VM 中部署的 minikube 上安装 pod。 Minikube 正在使用 docker 驱动程序。

当我最初安装 pod 时,一切正常,但是当 minikube 重新启动时,持久卷无法访问。

例如 mariadb 的 helm chart 说它应该以 mysql 用户身份安装。 minikube 似乎忽略了 helm chart 并将其安装为具有 777 权限的 root 用户。 minikube restart 重启后,pod 以 mysql 启动,因此无法访问具有 pid 的目录,即使可以访问,数据库表也不可见。

还有其他人看过吗? pod 在完整的 K8S 集群中运行良好,因此这似乎是一个 minikube 问题。

我在 Mariadb、rabbitmq 和 key cloak 上看到了同样的问题

什么时候起作用

PersistentVolumeClaims Normal Scheduled <unknown> default-scheduler Successfully assigned default/mariadb-slave-0 to minikube Normal Pulled 2m46s kubelet, minikube Container image "docker.io/bitnami/mariadb:10.3.23-debian-10-r44" already present on machine Normal Created 2m46s kubelet, minikube Created container mariadb Normal Started 2m46s kubelet, minikube Started container mariadb 

重启后

Name: mariadb-master-0 Namespace: default Priority: 0 Node: minikube/172.17.0.2 Start Time: Wed, 08 Jul 2020 14:43:21 -0400 Labels: app=mariadb chart=mariadb-7.6.1 component=master controller-revision-hash=mariadb-master-d95c68d44 release=mariadb statefulset.kubernetes.io/pod-name=mariadb-master-0 Annotations: <none> Status: Running IP: 172.18.0.7 IPs: IP: 172.18.0.7 Controlled By: StatefulSet/mariadb-master


Containers: mariadb: Container ID: docker://9fa565d16e4628655068eca1b585582ec8a136467f0120dae33bb91abf54eae4 Image: docker.io/bitnami/mariadb:10.3.23-debian-10-r44 Image ID: docker-pullable://bitnami/mariadb@sha256:36bed267af44b9a8d4788a47b769aa4c126967c46d3fb80aefe9fc19d82aaeb4 Port: 3306/TCP Host Port: 0/TCP State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: Error Exit Code: 1

仪表板日志

github.com/bitnami/bitnami-docker-mariadb mariadb 18:52:05.47 Submit issues and feature requests at github.com/bitnami/bitnami-docker-mariadb/issues mariadb 18:52:05.47 mariadb 18:52:05.48 INFO ==> ** Starting MariaDB setup ** mariadb 18:52:05.49 INFO ==> Validating settings in MYSQL_/MARIADB_ env vars mariadb 18:52:05.49 INFO ==> Initializing mariadb database mkdir: cannot create directory '/bitnami/mariadb/data': Permission denied 

【问题讨论】:

  • 您好@user3645171,能否请您在重启后添加mysql数据库pod的kubectl describe?
  • 当它工作时看起来像:
  • PersistentVolumeClaims Normal Scheduled default-scheduler 成功将 default/mariadb-slave-0 分配给 minikube Normal 拉取 2m46s kubelet, minikube 容器镜像 "docker.io/bitnami/mariadb:10.3.23-debian -10-r44" 机器上已经存在 Normal Created 2m46s kubelet, minikube Created container mariadb Normal Started 2m46s kubelet, minikube Started container mariadb
  • 重启后:
  • 名称:mariadb-master-0 命名空间:默认优先级:0 节点:minikube/172.17.0.2 开始时间:2020 年 7 月 8 日星期三 14:43:21 -0400 标签:app=mariadb chart= mariadb-7.6.1 component=master controller-revision-hash=mariadb-master-d95c68d44 release=mariadb statefulset.kubernetes.io/pod-name=mariadb-master-0 注释: 状态:运行 IP:172.18.0.7 IP:IP:172.18.0.7 控制者:StatefulSet/mariadb-master

标签: kubernetes kubernetes-helm minikube


【解决方案1】:

正如我在 cmets 中提到的,您应该添加 initContainer 以准备具有正确权限的卷。

就我在稳定的 mariadb 图表中检查而言,这可以在数据库图表 values.yaml 中进行编辑。


在 bitnami mariadb github 上有对此的描述。

调整持久卷挂载点的权限

由于镜像默认以非root身份运行,因此需要调整持久卷的所有权,以便容器可以向其中写入数据。

默认情况下,图表配置为使用 Kubernetes 安全上下文自动更改卷的所有权。但是,此功能不适用于所有 Kubernetes 发行版。作为替代方案,此图表支持在将卷挂载到最终目的地之前使用 initContainer 更改卷的所有权。

您可以通过将 volumePermissions.enabled 设置为 true 来启用此 initContainer。


另外还有相关的github issue。


我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2017-10-07
    • 1970-01-01
    • 2012-12-31
    • 2023-03-11
    • 2018-11-06
    相关资源
    最近更新 更多