• SuperMap 云原生常见问题解决办法-keycloak启动异常


    有些客户在使用iManager for K8S 云套件的产品的时候,偶尔会遇到机器异常重启的情况,比如说服务器断电,重启后可能会出现云套件启动异常的情况,比如说keycloak启动不了,一直抛出异常导致服务无法正常使用。本篇文章就结合实际案例来给大家详解如何处理这种情况。
    问题现象:iManager能够正常登录访问,但是站点中的云套件无法正常访问,查看容器组发现keycloak一直在抛错无法正常启动。排错步骤如下:
    步骤一
    如果有k8s dashboard ui界面的客户可以通过ui界面进行排查,如果没有就可以通过命令来进行操作

    //查看icloud-native-4命名空间下所有pods的状态,这里的“4”要根据实际的id值来替换,后续内容涉及到此值都要根据实际的值进行替换
    kubectl get pods -n icloud-native-4  -o wide 
    //正常的pod状态为running,运行数/副本数为相同的则状态正常,如果是0/1或者1/2这种就是不正常的
    
    • 1
    • 2
    • 3

    在本案例中输出结果为keycloak容器组异常,状态为0/1
    步骤二
    尝试恢复容器状态

    //方法一,直接删除异常pod,pod会自动重建
    kubectl delete pod keycloak -n icloud-native-4
    //方法二,伸缩异常pod的副本数
    kubectl scale sts keycloak --replicas=0 -n icloud-native-4
    //待状态变为0/0后伸缩为1
    kubectl scale sts keycloak --replicas=1 -n icloud-native-4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果两种方法都不管用,keycloak状态依然为0/1,那么就应该查看日志以辅助解决

    kubectl logs keycloak -n icloud-native-4
    
    • 1

    在这里插入图片描述
    从日志中能看出keycloak在操作数据库的时候报错数据库被锁(Lock owned during cleanup),keycloak连接的数据为keycloak-postgresql,尝试重启keycloak-postgresql

    //重启keycloak-postgresql
    kubectl delete pod keycloak-postgresql -n icloud-native-4
    
    • 1
    • 2

    重启后可能还是一样的报错,继续下一步
    步骤三
    清空keycloak-postgresql挂载,重启keycloak-postgresql

    1. 找到keycloak-postgresql的实际挂载目录
    //查询命名空间下的pvc 找到kc-pg的pv,输出keycloak-postgresql的pvc名称
    kubectl get pvc -n icloud-native-4|grep keycloak-postgresql
    //使用keycloak-postgresql的pvc名称查看实际目录
    kubectl describe pv pvc-92266626-5aac-4899-9a54-a90d777bc84b
    
    • 1
    • 2
    • 3
    • 4
    1. 找到keycloak-postgresql的挂载目录后,将目录里的内容备份,将keycloak-postgresql伸缩为0,可以在UI界面【部署】找到keycloak-postgresql,设置伸缩0,也可以使用命令
    kubectl scale deployment keycloak-postgresql --replicas=0 -n icloud-native-4
    
    • 1
    1. 清空keycloak-postgresql的挂载目录,伸缩为1
    kubectl scale deployment keycloak-postgresql --replicas=1 -n icloud-native-4
    
    • 1
    1. 清空keycloak-postgresql的挂载目录会导致云套件的用户,角色,服务实例授权被清空,所以后续需要重新设置新增的用户,角色,重新对服务实例进行授权。
      操作完以上步骤后,待keycloak-postgresql,keycloak启动,状态恢复正常,pods列表显示iserver-gateway和iserver-servicelist无法正常启动。以上就是该案例的解决步骤,如果按照这些步骤还没有正常恢复的话,可以在文章下方给我们留言也可以拨打4008900866联系我们的iManager支持人员协助解决。
  • 相关阅读:
    Spring之@Column的注解详解
    JavaEE 多线程下的HashTable、HashMap、ConcurrentHashMap
    mysql索引失效的几种情况
    《Java基础知识》Java ArrayList源码分析3
    优维低代码实践:打包发布
    TPU编程竞赛|算丰助力2023 CCF大数据与计算智能大赛!
    Hive之存储和压缩
    如何使用透明贴图实现火焰效果
    springboot+vue社区水电管理系统
    ElasticSearch 之 文本搜索
  • 原文地址:https://blog.csdn.net/supermapsupport/article/details/128016745