资讯专栏INFORMATION COLUMN

【容器云 UK8S】镜像库和容器常见问题:Node故障处理和预防节点OOM

Tecode / 2166人阅读

摘要:节点作为承载工作负载的实体,是一个非常重要的对象,在实际运营过程中,节点会出现各种问题,本文简要描述下节点的各种异常状态及排查思路。预防节点该文档为预防节点的开源方案,不提供,仅做参考,请谨慎使用。

节点作为承载工作负载的实体,是 Kubernetes 一个非常重要的对象,在实际运营过程中,节点会出现各种问题,本文简要描述下节点的各种异常状态及排查思路。

节点状态说明

节点情况说明处理办法
ReadyTrue 表示节点是健康的,False 表示节点不健康,Unkown 表示节点失联
DiskPressureTrue 表示节点磁盘容量紧张,False 反之
MemoryPressureTrue 表示节点内存使用率过高,False 反之
PIDPressureTrue 表示节点有太多进程在运行,False 反之
NetworkUnavailableTrue 表示节点网络配置不正常,False 反之

节点常用命令

  1. 查看节点状态
kubectl get nodes
  1. 查看节点事件
kubectl describe node ${NODE_NAME}

在上述两个命令看不出端倪的时候,还可以借助Linux的相关命令来辅助判断,这个时候我们就需要登录节点,通过linux相关命令来检查节点状态。

  1. 检查节点联通性

    3.1 网络检查: 我们可以从集群的Master节点,使用 Ping 命令去检查该节点的网络是否可达;
    3.2 健康检查: 登录UCloud控制台,从云主机页面查看该节点是否处于Running状态,包括查看CPU、内存使用率,确认节点是否处于高负载;

  2. 查看节点组件状态
system status kube-proxy

system status kubelet
  1. 查看组件日志
journalctl -u kubelet 

journalctl -u kube-proxy

通过上述命令来查看节点中的两个核心组件,kube-proxy 和 kubelet 的状态是否正常,如果不正常,错误原因是什么。

预防节点OOM

该文档为预防节点OOM的开源方案,不提供SLA,仅做参考,请谨慎使用

原理

在用户态实时获取available内存,当小于阈值时开始依据策略发送sigterm与kill信号杀死进程

使用方法

  1. -M 参数实现oom-protector内存杀进程阈值 第一个参数为sigterm信号阈值,第二个参数为kill信号阈值,以分割,单位只支持KB;
  2. --avoid参数可以避免杀死符合条件的进程;
  3. --prefer参数可以优先杀死符合条件的进程;

进程删除主要依据

根据oom_score 分值来杀进程,如系统上有自行启动的进程且oom_score_adj未设置为-1000,就有被杀死的可能。

备注: 该程序无法阻止瞬时内存暴增引发的内存宕机,依旧需要设置pod合理的资源requests与limits。

部署示例

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: oom-protector
  name: oom-protector
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: oom-protector
  template:
    metadata:
      labels:
        app: oom-protector
    spec:
      hostPID: true
      containers:
      - image: uhub.service.ucloud.cn/uk8s/earlyoom:alpine
        name: earlyoom
        args:
        - -p
        - -M  
        - "307200204800"
        - --avoid  
        - "docker|kubelet|containerd|sshd"
        securityContext:
          capabilities:
            add:
            - KILL
        resources:
          requests:
            memory: "32Mi"
            cpu: "50m"
          limits:
            memory: "64Mi"
            cpu: "100m"

实时文档欢迎访问https://docs.ucloud.cn/uk8s/troubleshooting/node_debug_summary

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/126289.html

相关文章

  • 容器 UK8S镜像容器常见问题:如何在UK8S中Build镜像?一个PVC可以挂载到多个p

    摘要:镜像库常见问题如何在中镜像的和两个版本,目前节点没有安装服务,不支持在节点镜像。如果需要让容器时间与宿主机时间一致,可以使用的方式将宿主机上的时区文件挂载到容器中。一个可以挂载到多个吗不支持多点读写,如需要多点读写请使用。镜像库常见问题如何在UK8S中Build镜像?UK8S的1.12.7和1.13.5两个版本,目前Master节点没有安装Docker服务,不支持在Master节点Build...

    Tecode 评论0 收藏0
  • 容器 UK8S镜像制作与容器常见问题:为什么节点已经异常了,但是 Pod 还处在 Runnin

    摘要:对于节点已经登陆不了的情况,如果希望快速恢复可以在控制台找到对应主机断电重启。与绑定完成,插件完成后续的挂载和等工作。UK8S 人工支持对于使用 UK8S 遇到的本文档未涉及的问题,如果需要人工支持,请添加下面公钥信任,并提供主机的 uhost-idssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGIFVUtrp+jAnIu1fBvyLx/4L4GNsX+6v8...

    Tecode 评论0 收藏0
  • 容器 UK8S镜像容器常见问题:存储插件问题之Flexv插件导致pod删除失败

    摘要:存储插件问题插件导致删除失败现象描述使用插件自动创建绑定到,删除时,有可能导致处于状态,不能正常删除。版本插件版本问题原因重启后找不到对应的插件。日志中会报的错误,进而导致卡在的状态。存储插件问题Flexv插件导致pod删除失败现象描述使用flexv插件自动创建pv绑定到pod,删除pod时,有可能导致pod 处于Terminating状态,不能正常删除。kubernetes版本: 1.13...

    Tecode 评论0 收藏0
  • 集群节点配置推荐 容器 UK8S

    摘要:对于存储资源,的节点默认系统盘。节点创建时可选择数据盘挂载亦可在节点创建完成后在主机侧挂载,如节点挂载有数据盘,将用于存放本地镜像的,否则本地镜像等将保存在系统盘。 集群节点配置推荐本篇目录1. Master 配置推荐2. 如何选择 Node 配置大小1. Master 配置推荐Master 规格跟集群规模有关,集群规模越大,所需要的 Master 规格也越高,不同集群规模的,Master ...

    ernest.wang 评论0 收藏2218
  • 容器 UK8S镜像容器常见问题:集群 ULB 误删处理

    摘要:集群误删处理前置操作负载均衡分内网和外网两种,在误删情况下,首先需要重建,并且保证原地址不变。集群误删创建时类型需要与的类型相匹配,服务类型为时指定报文转发,为时指定请求代理类型删除集群内原根据文档重新绑定和使用已有创建服务。集群 ULB 误删处理前置操作负载均衡(ULB)分内网和外网两种,在误删情况下,首先需要重建 ULB,并且保证原 ULB IP 地址不变。对于内网 ULB,需要联系技术...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<