Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何使用kustomize将内存中的存储替换为持久存储_Kubernetes_Kubernetes Pvc_Kustomize - Fatal编程技术网

Kubernetes 如何使用kustomize将内存中的存储替换为持久存储

Kubernetes 如何使用kustomize将内存中的存储替换为持久存储,kubernetes,kubernetes-pvc,kustomize,Kubernetes,Kubernetes Pvc,Kustomize,我正在尝试使用kustomize将Grafana部署的内存存储替换为持久存储。我试图做的是删除内存存储,然后映射持久存储。但当我部署它时,它会给我一个错误 错误 部署“grafana”无效:spec.template.spec.containers[0]。volumeMounts[1]。名称:未找到:“grafana存储” Kustomize版本 {Version:kustomize/v4.0.5 GitCommit:9e8e7a7fe99ec9fbf801463e8607928322fc524

我正在尝试使用
kustomize
Grafana
部署的内存存储替换为
持久存储
。我试图做的是删除
内存存储
,然后映射
持久存储
。但当我部署它时,它会给我一个错误

错误

部署“grafana”无效:spec.template.spec.containers[0]。volumeMounts[1]。名称:未找到:“grafana存储”

Kustomize版本

{Version:kustomize/v4.0.5 GitCommit:9e8e7a7fe99ec9fbf801463e8607928322fc5245构建日期:2021-03-08T20:53:03Z GoOs:linux GoArch:amd64}

kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- https://github.com/prometheus-operator/kube-prometheus
- grafana-pvc.yaml
patchesStrategicMerge:
- grafana-patch.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-storage
  namespace: monitoring
  labels:
    billingType: "hourly"
    region: sng01
    zone: sng01
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: ibmc-file-bronze
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  template:
    spec:
      volumes:
        # use persistent storage for storing users instead of in-memory storage
        - $patch: delete  <---- trying to remove the previous volume
          name: grafana-storage
        - name: grafana-storage
          persistentVolumeClaim:
            claimName: grafana-storage
      containers:
        - name: grafana
          volumeMounts:
            - name: grafana-storage
              mountPath: /var/lib/grafana

grafana pvc.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- https://github.com/prometheus-operator/kube-prometheus
- grafana-pvc.yaml
patchesStrategicMerge:
- grafana-patch.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-storage
  namespace: monitoring
  labels:
    billingType: "hourly"
    region: sng01
    zone: sng01
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: ibmc-file-bronze
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  template:
    spec:
      volumes:
        # use persistent storage for storing users instead of in-memory storage
        - $patch: delete  <---- trying to remove the previous volume
          name: grafana-storage
        - name: grafana-storage
          persistentVolumeClaim:
            claimName: grafana-storage
      containers:
        - name: grafana
          volumeMounts:
            - name: grafana-storage
              mountPath: /var/lib/grafana

grafana patch.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- https://github.com/prometheus-operator/kube-prometheus
- grafana-pvc.yaml
patchesStrategicMerge:
- grafana-patch.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-storage
  namespace: monitoring
  labels:
    billingType: "hourly"
    region: sng01
    zone: sng01
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: ibmc-file-bronze
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  template:
    spec:
      volumes:
        # use persistent storage for storing users instead of in-memory storage
        - $patch: delete  <---- trying to remove the previous volume
          name: grafana-storage
        - name: grafana-storage
          persistentVolumeClaim:
            claimName: grafana-storage
      containers:
        - name: grafana
          volumeMounts:
            - name: grafana-storage
              mountPath: /var/lib/grafana

apiVersion:apps/v1 种类:部署 元数据: 标签: app:grafana 姓名:格拉法纳 名称空间:监视 规格: 模板: 规格: 卷数: #使用持久性存储来存储用户,而不是在内存中存储
-$patch:delete这个
$patch:delete
似乎不像我预期的那样工作

在kustomize github上打开一个问题并询问开发人员可能会很好


虽然这是我尝试过的补丁,而且似乎有效:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  template:
    spec:
      volumes:
        - name: grafana-storage
          emptyDir: null
          persistentVolumeClaim:
            claimName: grafana-storage
      containers:
        - name: grafana
          volumeMounts:
            - name: grafana-storage
              mountPath: /var/lib/grafana

基于

从理论上讲,以下几点也应该起作用:

spec:
  volumes:
    - $retainKeys:
      - name
      - persistentVolumeClaim
      name: grafana-storage
      persistentVolumeClaim:
        claimName: grafana-storage

但实际上并非如此,我认为这是因为kustomize有自己的战略合并实现(与k8s不同)。

非常感谢您的帮助。我尝试了您在
部署中提到的方法,效果很好。非常感谢你。删除了
$patch:delete
部分。仅供参考:我已将建议的问题提交给kustomize Peoples:,让我们看看。