Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Kubernetes集群问题排查

查看系统Event事件

kubectl describe pod <PodName> --namespace=<NAMESPACE>

该命令可以显示Pod创建时的配置定义、状态等信息和最近的Event事件,事件信息可用于排错。例如当Pod状态为Pending,可通过查看Event事件确认原因,一般原因有几种:

  • 没有可用的Node可调度
  • 开启了资源配额管理并且当前Pod的目标节点上恰好没有可用的资源
  • 正在下载镜像(镜像拉取耗时太久)或镜像下载失败

kubectl describe还可以查看其它k8s对象:NODE,RC,Service,Namespace,Secrets

Pod

kubectl describe pod <PodName> --namespace=<NAMESPACE>

NODE

kubectl describe node 192.168.1.20

RC

kubectl describe rc nginx-rc-1.17.0 --namespace=appblog

NAMESPACE

kubectl describe namespace appblog

Service

kubectl describe service nginx-service-1170 --namespace=appblog

查看容器日志

查看指定pod的日志

kubectl logs <pod_name> -n appblog
kubectl logs -f <pod_name> -n appblog    #类似 tail -f 的方式查看
kubectl logs --tail 200 -f <pod_name> -n appblog    #类似 tail -f 的方式查看
kubectl logs --tail 200 -f <pod_name> -n appblog |more    #类似 tail -f 的方式查看

查看上一个pod的日志

kubectl logs -p <pod_name>

查看指定pod中指定容器的日志

kubectl logs <pod_name> -c <container_name>

kubectl logs –help

查看k8s服务日志

journalctl

在Linux系统上systemd系统来管理kubernetes服务,并且journal系统会接管服务程序的输出日志,可以通过systemctl statusjournalctl -u -f来查看kubernetes服务的日志。

journalctl -u kube-scheduler

journalctl -xefu kubelet

journalctl -u kube-apiserver

journalctl -u kubelet |tail

journalctl -xe

docker logs

docker logs 容器id

日志文件

也可以通过指定日志存放目录来保存和查看日志

–logtostderr=false: 不输出到stderr
–log-dir=/var/log/kubernetes: 日志的存放目录
–alsologtostderr=false: 设置为true表示日志输出到文件也输出到stderr
–v=0: glog的日志级别
–vmodule=gfs*=2,test*=4: glog基于模块的详细日志级别

常见问题

Pod状态一直为Pending

kubectl describe <pod_name> --namespace=<NAMESPACE>
  • 正在下载镜像但拉取不下来(镜像拉取耗时太久)[一般都是该原因]
  • 没有可用的Node可调度
  • 开启了资源配额管理并且当前Pod的目标节点上恰好没有可用的资源

解决方法:

  • 查看该POD所在宿主机与镜像仓库之间的网络是否有问题,可以手动拉取镜像
  • 删除POD实例,让POD调度到别的宿主机上
上一篇 Kubernetes 1.15安装部署EFK日志收集系统
下一篇 kubernetes-dashboard卸载及其pod删除