美文网首页
k8s 问题记录

k8s 问题记录

作者: Robin92 | 来源:发表于2022-04-24 19:06 被阅读0次

    关键注意解决方法。

    kubectl 命令 The connection to the server localhost:8080 was refused

    [root@k8s-node1 ~]# kubectl get nodes
    The connection to the server localhost:8080 was refused - did you specify the right host or port?
    

    执行机器对不对

    我所用的 Kubernetes v1.5.2 集群只有 master 节点(安装了 apiserver 的)可以执行此命令,所以先检查节点是不是有问题。其他版本如 kubeadm 安装的,另作考虑。

    etcd 启动失败

    调查环境时发现 etcd 服务退出了,且启动不起来,通过 journalctl -xe -u etcd 查看到最后一条 read wal error (proto: Record: illegal tag 0 (wire type 0)) and cannot be repaired 信息。
    通过百度查到这个可能是 protobuf 定义的下标为 0 的请求信息。
    重装了 etcd 还是启动不起来。
    同时偶然从 ETCD_DATA_DIR 目录中看到名为 wal 目录并尝试将其删除 rm /var/lib/etcd/default.etcd/member/wal/*,重新启动 etcd 成功。
    然后启动 kube-apiserver 成功,并使用 kubectl get nodes 成功。

    systemctl 启动失败调查方法

    这里是 kubelet 启动失败

    image.png

    通过 journalctl -xe -u kubelet 查看日志,发现端口绑定不上,进而发现原来 IP 绑错了(x.x.x.130 是master 节点,当前在 x.x.x.129 节点)

    image.png

    改动后(注意查看下是否有其他地方配置错误),重启成功,通过 master 节点获取 kubectl get nodes 查到此节点。

    docker 私有库

    # vim /etc/sysconfig/docker
    
    # Modify these options if you want to change the way the docker daemon runs
    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=172.16.156.128:5000'
    

    在配置文件 /etc/sysconfig/docker 的 OPTIONS 中加入 --insecure-registry=<host>:5000

    基础镜像拉取错误

    image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest

    这是因为 kubelet 指定了此镜像作为基础架构镜像,可以更改此配置镜像,使用私有库中的镜像。

    # cat /etc/kubernetes/kubelet
    KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
    

    创建 Service 后无法通过结点地址访问

    问题描述:创建了 NodePort 类型的 Service 后,发现无法通过结点 IP 访问(超时);进一步发现在集群 master 中用 curl ClusterIP:clusterPort 也无法访问成功(超时);但在 pod 所有的结点 curl dockerIP:port 可以正常返回。

    原因:docker 环境跨结点无法访问,是安装的 flannel 的问题。查看原来的教程,原来是 docker iptables 规则没有改。

    image.png

    修改:快速配置 iptables -P FORWARD ACCEPT;固化配置参考 配置flannel网络

    虚拟机磁盘被占满

    问题来源:我从 k8s 相关的虚拟机上拷贝出来一个虚拟机学习 zookeeper,但发现 zookeeper 服务老挂,启动 zk 时看日志是写不进去了。经过 df . 命令查看磁盘空间已经使用了 100%。

    定位:由于我们的 zk 的目录是在 /tmp 下,所以偶然在 /tmp 下执行 ls 发现都阻塞了很久。用正则列取文件的时候会报错文件太多。

    ➜  /tmp ls 
    kube-scheduler.localhost.kube.log.ERROR.20220606-015851.13284
    kube-scheduler.localhost.kube.log.INFO.20220606-014534.12925
    kube-scheduler.localhost.kube.log.WARNING.20220604-183909.655
    kube-scheduler.localhost.kube.log.WARNING.20220604-201409.666
    ... # 省略 n 条
    ➜  /tmp ls kube*
    zsh: argument list too long: ls
    

    解决:停掉了所有 k8s 相关的服务,然后分段删除 /tmp 下无用的 k8s 相关的文件。

    systemctl disable kube-apiserver kube-controller-manager kube-proxy kubelet nfs
    systemctl stop kube-apiserver kube-controller-manager kube-proxy kubelet nfs
    

    删除后执行 df 看到磁盘只占用了 27%。

    ➜  /tmp df . 
    Filesystem              1K-blocks    Used Available Use% Mounted on
    /dev/mapper/centos-root  17811456 4665036  13146420  27% /
    

    这些文件是什么?(待解决)

    相关文章

      网友评论

          本文标题:k8s 问题记录

          本文链接:https://www.haomeiwen.com/subject/ekztyrtx.html