k8s集群故障解决思路与方法

目录

熟悉架构

HA的架构

常用命令:

排查思路与顺序

故障现象

常见故障例

参考:


  1. 熟悉架构

  2. 常用命令:

    1. 基础网络 :
      • iptables/nslookup/curl/tracerroute/route/ping/tcpdump/ss -nltp/ip a/等
    • etcd集群状态:
      • etcdctl --cert-file /etc/etcd/ssl/etcd.pem --key-file /etc/etcd/ssl/etcd-key.pem --ca-file /etc/etcd/ssl/ca.pem --endpoints https://$CP1_IP:2379cluster-health
    • calico网络状态:
      • calicoctl node status
    • k8s服务与PODS状态:
      • kubectl get pods --all-namespaces -o wide
      • kubectl get svc --all-namespaces -o wide
      • kubectl describe pods <PODNAME> -n <NAMESPACE>
    • 容器状态与日志:
      • docker ps -a |grep <KEY>
      • docker logs <ContainerID>
  3. 排查思路与顺序

    • 基础网络-->etcd集群->api->calico网络->cubeDNS->基础组件->其它SVC与PODS

      • 基础网络的故障,会导致etcd集群故障,etcd又会导致kube-apiserver故障,apiserver故障导致整个集群无法访问;

      • 故障现象五花八门,同一种现象解决的办法不一定相同,不同的版本解决方法不一定相同;
      • 在保证集群基础组件运行正常的前提下,容器的日志往往比较准确的反应问题的实质
      • 经验+baidu/google/bing
  4. 故障现象

    • 容器不断重启

    • dashboard无法打开

    • 命令无法执行
    • 网络不通
    • 域名无法解析
    • 。。。
  5. 常见故障例

    • 安装时下载镜相类问题

      • 问题: 下不到calico镜相,可以用阿里云转一下,master上4个全要下,node上只要node/cni

        • # 阿里云镜相服务https://cr.console.aliyun.com/repository/
        • docker pull registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-1
        • docker pull registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-2
        • docker pull registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-3
        • docker pull registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-4
        • docker tag registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-1 quay.io/calico/kube-controllers:v3.2.3
        • docker tag registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-2 quay.io/calico/cni:v3.2.3
        • docker tag registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-3 quay.io/calico/node:v3.2.3
        • docker tag registry.cn-zhangjiakou.aliyuncs.com/yanghaitao/myhub:3.2.3-4 quay.io/coreos/etcd:v3.3.9
    • 权限类问题
      • kubectl 使用$HOME/.kube/config(即/etc/kubernetes/admin.conf)的配置来访问集群
    • 网络类问题
      • 问题一:calico 网络问题:
        • 现象:像单master安装时一样apply后,发现calico node一直不正常,重启,coredns也是;
        • 查询原因:查calico-etcd有三个,member list只有一个,官网只有单master的介绍,etcd.yaml是个daemonset, 会在每个master上启一个etcd pod, 可导致calico etcd的服务不正常, 连锁反应是calico node/coredns/dashboard等都不正常;
        • 解决方法一:
          • 把calico etcd的daemonset 改为deployment, replicas 设为1
        • 方法二:
        • 方法三:
          • 用打标签的方法让calico etcd只运行在指定的master上,临时解决方法,没法高可用;
      • 问题二:kubeadm init 后,无coredns/kube-proxy的pods出现:
        • 调通外部网络
    • 其它问题:
      • 问题三:k8s集群kubeadm的官方介绍方法有两种:
        • 方法一是使用k8s自身的etcd,安装起来速度慢,常出现莫名的故障;
        • 方法二即自建外部etcd的方法,速度快且稳定,install.sh采用此方法;
      • 问题四:重新安装
      • 问题五:etcd备份
        • etcd集群数据:/var/lib/etcd
        • calico etcd数据: /var/etcd

往期链接:

    进入公众号 -> 输入help或index

                                  

                                                   Linux命令速查,如lsof

猜你喜欢

转载自blog.csdn.net/weixin_39798643/article/details/84064841