gpt4 book ai didi

docker - hostpath.so 中的只读文件系统无法挂载卷

转载 作者:行者123 更新时间:2023-12-02 11:39:14 28 4
gpt4 key购买 nike

当我提供主机路径时,它显示它是只读文件系统,因为我是 kubernetes 的新手我没有找到任何其他方式请告诉我有没有其他方式实现卷,我正在这样做在 GKE 上
这是我的 yaml 代码

apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "10"
creationTimestamp: "2019-11-22T10:52:16Z"
generation: 17
labels:
app: dataset
name: dataset
namespace: default
resourceVersion: "283767"
selfLink: /apis/apps/v1/namespaces/default/deployments/dataset
uid: 26111fe8-0d16-11ea-a66e-42010aa00042
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
app: dataset
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: dataset
spec:
containers:
- env:
- name: RABBIT_MQ_HOST
valueFrom:
configMapKeyRef:
key: RABBIT_MQ_HOST
name: dataset-config
- name: RABBIT_MQ_USER
valueFrom:
configMapKeyRef:
key: RABBIT_MQ_USER
name: dataset-config
- name: RABBIT_MQ_PASSWORD
valueFrom:
configMapKeyRef:
key: RABBIT_MQ_PASSWORD
name: dataset-config
- name: DATASET_DB_HOST
valueFrom:
configMapKeyRef:
key: DATASET_DB_HOST
name: dataset-config
- name: DATASET_DB_NAME
valueFrom:
configMapKeyRef:
key: DATASET_DB_NAME
name: dataset-config
- name: LICENSE_SERVER
valueFrom:
configMapKeyRef:
key: LICENSE_SERVER
name: dataset-config
- name: DATASET_THUMBNAIL_SIZE
valueFrom:
configMapKeyRef:
key: DATASET_THUMBNAIL_SIZE
name: dataset-config
- name: GATEWAY_URL
valueFrom:
configMapKeyRef:
key: GATEWAY_URL
name: dataset-config
- name: DEFAULT_DATASOURCE_ID
valueFrom:
configMapKeyRef:
key: DEFAULT_DATASOURCE_ID
name: dataset-config
- name: RABBIT_MQ_QUEUE_NAME
valueFrom:
configMapKeyRef:
key: RABBIT_MQ_QUEUE_NAME
name: dataset-config
- name: RABBIT_MQ_PATTERN
valueFrom:
configMapKeyRef:
key: RABBIT_MQ_PATTERN
name: dataset-config
image: gcr.io/gcr-testing-258008/dataset@sha256:8416ec9b023d4a4587a511b855c2735b25a16dbb1a15531d8974d0ef89ad3d73
imagePullPolicy: IfNotPresent
name: dataset-sha256
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: ./data/uploads
name: dataset-volume-uploads
- mountPath: ./data/thumbnails
name: dataset-volume-thumbnails
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /build/uploads
type: ""
name: dataset-volume-uploads
- hostPath:
path: /build/thumbnails
type: ""
name: dataset-volume-thumbnails
status:
availableReplicas: 2
conditions:
- lastTransitionTime: "2019-11-23T07:19:13Z"
lastUpdateTime: "2019-11-23T07:19:13Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2019-11-23T06:31:03Z"
lastUpdateTime: "2019-11-23T07:24:42Z"
message: ReplicaSet "dataset-75b46f868f" is progressing.
reason: ReplicaSetUpdated
status: "True"
type: Progressing
observedGeneration: 17
readyReplicas: 2
replicas: 3
unavailableReplicas: 1
updatedReplicas: 1

这是我对 pod 的描述
    Path:          /build/uploads
HostPathType:
dataset-volume-thumbnails:
Type: HostPath (bare host directory volume)
Path: /build/thumbnails
HostPathType:
default-token-x2wmw:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-x2wmw
Optional: false
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 96s default-scheduler Successfully assigned default/dataset-75b46f868f-wffm7 to gke-teric-ai-default-pool-41929025-fxnx
Warning BackOff 15s (x6 over 93s) kubelet, gke-teric-ai-default-pool-41929025-fxnx Back-off restarting failed container
Normal Pulled 2s (x5 over 95s) kubelet, gke-teric-ai-default-pool-41929025-fxnx Container image "gcr.io/gcr-testing-258008/dataset@sha256:8416ec9b023d4a4587a511b855c2735b25a16dbb1a15531d8974d0ef89ad3d73" already present on machine
Normal Created 2s (x5 over 95s) kubelet, gke-teric-ai-default-pool-41929025-fxnx Created container
Warning Failed 1s (x5 over 95s) kubelet, gke-teric-ai-default-pool-41929025-fxnx Error: failed to start container "dataset-sha256": Error response from daemon: error while creating mount source path '/build/uploads': mkdir /build/uploads: read-only file system

所以这就是问题所在,即使我动态地授予 chmod 权限,它也不允许进行写入操作。我尝试过持久卷它也不起作用,所以请告诉我我必须以哪种方式挂载卷。

最佳答案

  • 首先,不要使用hostPath,去持久化存储
  • 如果您需要存储一些数据,我会使用 StatefulSets 而不是 Deployment。

  • 我能够以 root 用户身份在我的 GKE 实例上手动创建两个 hostPath。

    我想您必须为 hostPath 指定类型才能创建请求目录(如果它不存在)。 type: DirectoryOrCreate您可以阅读更多关于 hostPath和可用的类型值。
    此外,如果您在容器内使用用户的 hostPath 权限必须匹配节点上的所有权,因此它会变得更加复杂,当然,您可以以 root 身份运行它,但不推荐这种方式。

    总而言之,只需使用 google 提供的持久存储。如果您遇到权限问题,您可能需要 init contaner更改权限或您必须设置正确 fsGroup为您的容器。

    关于docker - hostpath.so 中的只读文件系统无法挂载卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59005523/

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