TsukiQWQ 2025-10-31 10:35 采纳率: 0%
浏览 4

k8s的node重启后pod重置了

在尝试将ambari使用k8s封装部署的过程中发现,当我的机器重启后,这个pod会被清空重建,并且它的IP会修改,这导致在页面上进行初始化后,这个pod重建之后,服务直接就异常了。尝试使用过持久化卷,但是由于ambari自定义的内容比较灵活,所以只能持久化根目录,但是docker并不允许持久化根目录,而且我认为持久化卷也不应该是把所有的数据都放进去,我认为持久化卷只应该创建在数据目录里面做备份,以防这个pod出问题了,无法访问导致的数据丢失

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-10-31 11:01
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    你在使用k8s部署ambari服务时,遇到了一个问题:当机器重启后,pod会被清空重建,并且IP会修改,这导致服务异常。

    解决方案

    1. 使用StatefulSet: StatefulSet是k8s提供的用于管理有状态应用的控制器。它可以保证pod的ID和IP不会改变,即使机器重启了。
    2. 使用PersistentVolumeClaim: 你已经尝试使用持久化卷了,但是可能需要调整PV和PVC的配置来确保数据的持久化。
    3. 使用ConfigMap和Secret: 如果ambari服务依赖于配置文件或密钥,可以使用ConfigMap和Secret来存储和管理这些数据。这样即使pod重建了,配置文件和密钥也不会丢失。

    核心代码

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ambari
    spec:
      serviceName: ambari
      replicas: 1
      selector:
        matchLabels:
          app: ambari
      template:
        metadata:
          labels:
            app: ambari
        spec:
          containers:
          - name: ambari
            image: ambari/ambari-server
            volumeMounts:
            - name: ambari-pvc
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: ambari-pvc
        spec:
          accessModes: [ "ReadWriteOnce" ]
          resources:
            requests:
              storage: 1Gi
    
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ambari-config
    data:
      ambari.properties: |-
        # ambari配置文件内容
    
    apiVersion: v1
    kind: Secret
    metadata:
      name: ambari-secret
    data:
      ambari.key: |-
        # ambari密钥内容
    

    注意

    • 这些代码片段是示例,需要根据你的实际需求进行调整。
    • 使用StatefulSet和PersistentVolumeClaim需要了解k8s的相关概念和配置。
    • 使用ConfigMap和Secret需要了解k8s的配置管理机制。
    评论

报告相同问题?

问题事件

  • 创建了问题 10月31日