快递100是中国领先的快递物流信息服务商,国家高新技术企业、新基建代表企业。作为中国领先的快递物流信息服务商,集查询快递、寄快递、企业寄件、企业物流、小微商家、快递云打印、API接口等一体化的物流解决方案。目前拥有个人注册用户1.2亿,企业客户60万,加盟驿站8000家,快递从业者100余万,日查询量3亿次,年寄递包裹量达8亿。
随着业务的发展,业务规模在不断扩大,业务复杂度在不断提高,以前的一些单体应用也变得越来越庞大,就好像一个类的代码行越来越多,分而治之,切成多个类应该是更好的解决方法,所以一个庞大的单体应用分出多个小应用也更符合这种分治的思想。
同时复杂的单体应用出现异常问题时,给我们带来的排查难度也在逐步增加,技术改革势在必行。
经过前期技术调研,确定了目前业界推崇的主流云平台技术架构:docker容器平台+k8s容器编排平台组合;初期我们在测试环境使用的是kubeadm工具完成了k8s平台的搭建。在引入k8s过程中,也遇到过各种问题,最近出现的一个问题做下记录。
前些天公司的测试环境k8s 集群出现了一个问题:在执行任何 kubectl 命令时都会出现以下错误:
我们知道 6443 是 k8s APIServer 的默认端口,可以看到6443端口是“refused”,接下来进行异常排查过程。
-
1.检查端口
先检查下端口是不是侦听状态
netstat -antp|grep 6443
发现没有结果返回,那就说明APIServer服务没有正常运行 -
2.检查服务
在使用 kubeadm 搭建的 k8s集群里,APIServer 都是以容器的方式在 docker 里运行的
kubectl get pods -n kube-system
可以看到 容器的状态已经是 Exited 了,说明容器异常退出了,获取events日志可以看到一条信息,
Unable to create storage backend: config (&{ /registry [https://127.0.0.1:2379] /etc/kubernetes/pki/apiserver-etcd-client.key /etc/kubernetes/p