- 博客(60)
- 收藏
- 关注
原创 logging-operator 部署fluentd-bit日志报kubernetes链接错误
1、排查fluentd容器到kubernetes api server的联通性,进入容器中curl kubernetes.default.svc.local:443 发现是能访问的。因为logging-operator中定义支持是否启用kubernetes的变量,所以在fluentd-bit的crd中添加关闭kubernetes的变量即可。某项目使用logging-operator部署fluentd-bit进行日志采集,发现启动的fluentd-bit有大量的的链接kubernetes报错。
2025-02-21 18:15:08
318
原创 prometheus out of bound 问题处理
运行面promtheus因为调整资源,进行了pod重启,导致控制面的一级 prometheus报错,监控数据无法显示。5、删除queries.active 文件。3、删除 chunks_head 目录。1、停止 prometheus 服务。6、启动 prometheus 服务。4、删除 lock 文件。2、删除 wal 目录。
2024-11-18 20:52:55
337
原创 envoyFilter导致的webSockets协议无法正常工作
开始怀疑难道envoy无法处理次socket,尝试将请求头部分的内容删除,模拟请求发现可以请求通了,然后想到请求头大小导致的,集群做过一次变更,调整了envoy的请求头大小限制,但是这个限制是1G,不可能业务请求头能有这么大,然后删除了创建的envoyfilter,发现业务这个websocket的服务可以正常访问了,百思不得其解。生产项目有一个socket请求经过网关一直无法响应,其它接口服务都能正常处理。
2024-10-22 15:07:45
1139
原创 调整istio得请求头大小限制
在istio-system分区创建一个EnvoyFilter,作用于全局网关实例,yaml如下:metadata:spec:labels:match:listener:filter:#proxy:patch:value:input:map:websocket:action:name: skip。
2024-09-29 11:01:01
510
原创 istio 网关开启https访问链接重置
后来自己查询相关istio官方文档,猜测可能是证书存在问题,然后根据官方提供的方式生成证书,重新配置,发现可以正常访问了。通过模拟访问,查看网关日志实例,并未有相关请求日志进入。后来一度认为是开发版本的问题,也找咱们相关网关开发查看,也并未发现问题。2、检查网关实例的日志发现无异常,调用网关的接口,查看相应的路由是否添加进去,发现路由添加成功的。一上云租户使用平台提供的istio网关,开启https,然后发现访问一直链接重置。1、检查代理的服务,进行了模拟访问是正常的,排除代理服务的问题。
2024-09-24 14:54:32
596
原创 haproxy程序崩溃问题处理
查询相关haproxy官网显示,确实存在这个问题,需要将haproxy升级到2.8.4以上,最终自己做了一个haproxy 2.9.9版本的镜像,推送到k8s环境进行观察和高可用测试,发现并无问题后,更新至生产环境,后面就没出现过次问题。线上一k8s环境告警出节点失联,通过排查和k8s的api建立链接失败,检查发现haproxy出现了重启,对应的日志显示出程序运行崩溃,这个情况根据日志追溯,发现曾多次崩溃,后续也在其他k8s环境也有出现。
2024-09-23 11:30:03
1019
1
原创 对容器做iptables防火墙规则
iptables -I DOCKER -s 192.168.133.130(放行备库mysql) -p tcp --dport 3306 -j ACCEPT。
2024-06-06 09:01:59
201
原创 pod删除后,kubelet无法回收子路径
在巡检查看一些kubelet日志的时候发现,kubelet日志中有大量的无法移除子路径的报错,对应的pod都是已经删除的。
2024-04-19 09:27:23
308
原创 k8s集群配置NodeLocal DNSCache
在当今的体系结构中,运行在 ‘ClusterFirst’ DNS 模式下的 Pod 可以连接到 kube-dns serviceIP 进行 DNS 查询。node-local-dns 接口不能绑定 kube-dns 的集群 IP 地址,因为 IPVS 负载均衡使用的接口已经占用了该地址。:集群内的服务基本都是通过域名进行访问,coredns在解析压力大时会存在慢或者丢包的情况,导致服务之间解析异常。1、 使用当前的 DNS 体系结构,如果没有本地 kube-dns/CoreDNS 实例,则具有最高。
2024-01-11 10:42:37
2229
原创 解决kubelet报failed to get imageFs info: non-existent label \“docker-images\“
主机重启后,kubelet比docker先启动,会对不健康的pod进行一个资源回收的过程,这个时候docker还没正常启动,kubelet无法调用docker的socket接口对镜像回收,会导致每五分钟一次的循环检查,默认到100次就会触发gc,会导致kubelet的pleg不健康,这个启动顺序还是很重要的。一环境主机重启后,查看kubelet日志经常有大量无法回收镜像文件报错,会导致kubelet的pleg不健康,从而导致kubelet发生重启。
2024-01-08 16:55:40
2366
原创 istio配置http1.0协议
有些任务场景中需要用到istio的http1.0协议,但是这个配置默认是没开启的,需要在istiod的配置中添加对应的环境变量参数即可。
2024-01-08 16:37:56
624
原创 k8s中pod的hostport端口突然无法访问故障处理
既然访问不通那就先给服务做个全面检查,看看哪里出了问题,看下sftp日志,也没有啥关键报错,接下来查看了下sftp服务的svc端口,发现通过svc地址和端口是能正常访问的,通过pod IP去访问也是可以,这就很奇怪了,唯独用主机ip加hostport端口就访问不通。租户告知生产环境的sftp突然无法访问了,登录环境查看sftp服务运行都是正常的,访问sftp的hostport端口确实不通。: 跟租户沟通,看看能否重启服务试试,发现重启完服务,还是老样子,通过hostport访问依然不通。
2023-11-28 17:06:07
1294
原创 一次harbor升级导致镜像项目访问无权限问题
1、根据报错反馈没权限,当时认为可能用户对这个项目是不是权限上有些问题,在harbor的镜像项目用户一栏,查看项目所在的用户是admin,镜像项目也是公开的,按理说权限应该没啥问题的,然后尝试添加一个用户进去,然后绑定到这个镜像项目,并赋予管理员权限,然后用此用户登录harbor,进入这个镜像项目还是报无权限,但是在harbor上新创建项目是没啥问题。如上改为以后无问题,也能有权限进入项目查看镜像了。3、开始登录harbor的pg库进行镜像项目的更改,先查看需要更改的项目,如下。
2023-08-25 17:51:39
644
原创 kubernetes中特定域名使用自定义DNS服务器出现的解析异常
从如上分析来看,既然在coredns中已经配置了外部转发dns服务,租户如果继续在服务中还配置外部dns服务地址,就会导致应用服务会有两个dns nameserver,首先会访问集群内部域名地址会解析到pod中配置的那个外部dns服务中,会出现解析不了的情况,就反馈失败,然后轮到集群内部定义的dns服务就会正常解析成功。把在服务中配置dnscongfig相关参数去掉,让服务统一走集群内的coredns进行转发处理即可。
2023-07-14 17:12:19
1408
原创 systemd管理自动挂载nfs
在维护的环境中,不少组件使用到nfs存储,有时候主机批量关机重启的时候,无法实现自动挂载,就需要手动去挂载,这是很费力又浪费时间的事。虽然nfs自动挂载写到了/etc/fstab里面了,但是遇到一些复杂挂载时候,可能会导致开机启动过程中卡死的情况。在一些较新的 Linux 发行版中,/etc/rc.local 文件的执行时机已经被修改,其不再能够保证在系统启动时最后执行。Where=/data2 # where 配置的是nfs client需要挂载的路径,此处路径名要和文件名一致。
2023-04-09 17:57:08
1418
原创 解决docker报eeror: write unix /var/run/docker.sock->@ write:broken pipe
docker故障排查
2022-10-21 17:07:43
2607
原创 calico vxlan interface down,导致 calico-node 无法添加路由
关于calico vxlan模式下,无法正常下发路由
2022-07-13 17:10:24
1394
原创 对etcd进行数据拆分
我们现在是一个k8s集群,多个租户共同使用,包括如果后期有新用户上云,申请到的资源同样也会以node节点的形式加入到现有的master节点,这样当一定规模的服务运行在集群中,势必会增加etcd的负担,整个ku8集群的数据都是存放在etcd中,只有进行合理的拆分,才能提升etcd的性能。进行etcd拆分的情况如下图:老版本的etcd仍然提供服务,只存储pod、svc等信息。新版本的etcd提供着存储ku8的events信息。之前就是因为把所有数据存放到一套etcd集群,出现events信息太多导致et
2022-04-24 14:21:44
1303
1
原创 关于文件句柄数和文件描述符的区分
在一次生产环境上,用户那边反馈服务连接redis异常,经过查看redis的日志,报打开文件数过多,通过lsof去查看文件句柄数确实超过了主机限制的句柄数,只能先重启redis进行释放连接数,进行恢复业务。上面是一个处理过程,但是后面和对方人员关于程序是否是打开那么多文件句柄数,产生分歧,对方认为一个进程打开的文件句柄数量可以使用,如下命令进行统计:ls -l /proc/pid1/fd/ | wc -l 进行统计为此,我到自己环境上验证一番,给予解释,争吵是解决不了问题,唯有真理服人了,首先
2022-02-17 17:54:47
1591
原创 Ingress进行灰度发布
现在一些业务在有新版本上线时,通常新版本即使在自己本地测试后,发布到线上环境也可能会出现一些问题,就会回滚到老版本,现在我们新版本的上线都会采取灰度发布,先让一小部分的流量请求到新版本,其余流量请求到老版本,等新版本验证没问题,逐渐让流量都请求到新版本,然后下架老版本。下面就用ingress来做下灰度发布,首先还是需要部署两个服务,一个代表老版本,一个代表新版本,我这边还是用nginx来测试,两个nginx服务部署如下:然后用ingress去分别代理这两个服务,我们这里采取权重的策略,来做流量的分发,达
2022-02-10 10:48:48
3033
原创 Ingress对服务做限流
随着现在更多环境的服务进行上云,对网关这块能实现的功能也比较关注,除了能正常的实现代理的作用,还需要可以进行比如:熔断,链路追踪,限流等,这里主要操作下对ingress的限流。首先还是需要在k8s集群上部署一个服务用来进行测试,我这里部署了一个nginx的pod,然后用ingress代理这个nginx服务,最后在ingress上做限流操作,通过访问ingress查看是否达到限流的作用。下面创建ingress的yaml来代理nginx这个服务并做限流,如下:apiVersion: extensions
2022-02-09 15:53:15
5420
原创 Ingress的代理配置
Ingress的部署这里省略,我的另外一篇博客上已经详细介绍部署过程,这里我们主要操作是给ingress添加域名,并做反向代理。先在k8s上部署一个nginx的pod,然后用ingress来代理这个nginx的pod,实现访问ingress地址就代理到对应的nginx服务,部署nginx服务,并测试能正常访问:接下来用ingress来代理这个部署好的nginx服务,编写ingress代理nginx的yaml如下:apiVersion: extensions/v1beta1kind: Ingress
2022-02-08 17:40:20
3050
原创 部署Ingress
在k8s上部署服务的时候,我们经常通过svc暴露的端口提供对外访问,如果在k8s上部署的服务比较多的话,这样不仅不安全还会使用过多的端口资源,通过部署Ingress可以作为集群内部服务唯一的入口。原理部分就不多说了,其原理和nginx差不多,接下来进行部署,ingress部署分为nginx官方的版本和kubernetes官方的版本,我这边是以部署k8s官方版本的ingress为主,部署ingress的yaml地址如下:https://raw.githubusercontent.com/kubernet
2022-02-08 14:58:13
2052
原创 kubernetes中给服务部署探针
当我们把服务部署到kubernetes集群上,除了基本的监控告警来锁定服务异常,通过人为干预来检查和恢复外,其实kubernetes也提供了针对服务的存活检查,那就是探针。可以通过探针检查服务的存活状态,一旦服务不正常,超过自己设置的检查数,就会重新拉起服务,接下来我们可以配置一个服务做演示:一、首先创建一个服务kubectl create deploy test1 --image=nginx:latest二、进入test的deployment中添加对应的livenessProbe探针并做相关的服务
2021-12-15 14:47:02
1265
1
原创 解决openshift中node节点上的容器无法解析域名
问题描述:因业务增长,需要添加新的node节点到openshift的集群,以满足业务的需求,但是节点加进openshift集群后,发现在主机上用域名和端口的形式是可以访问已经部署的服务,但是在新node节点上启动的容器,进入容器中,用域名加端口的形式访问,报错无法解析,curl 容器的svc ip加端口是没有问题的,具体访问情况如下:在主机上进行测试在新节点的容器内访问服务: 解决问题过程:openshift的解析是通过本地的dnsmasq进行解析的,通过查看容器里面的reslove.conf
2021-12-13 14:37:09
1231
原创 cannot access upload: Transport endpoint is not connected
用户反馈集群中一个服务无法正常上传下载文件了,然后到管理节点查看对应的pod,然后进入pod容器中,到对应的文件上传下载路径,发现目录的所属主和文件权限都变的异常,如下:图中红色圈出来的就是文件上传下载的目录,试着给它权限和执行任何命令都报 cannot access upload: Transport endpoint is not connected。接下来就只能看下这个目录对应挂载盘是否有问题,发现读写是没有问题的,说明存储是ok的,接着看下共享存储的gfs是否正常,发现gfs状态都不正常了,如图
2021-09-10 13:22:50
1864
原创 部署containerd运行时
配置介绍:192.168.247.133 centos7.2 cpu 2 内存2192.168.247.151 centos7.2 cpu 2 内存 2192.168.247.152 centos7.2 cpu 2 内存 2前期配置:关闭防火墙:systemctl stop firewalldSELINUX=disabled主机名称设置:Hostnamectl set-hostname xxxx添加系统参数:设置必需的 sysc
2021-08-22 16:30:06
744
原创 简单部署个minio服务器
简介:MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。应用场景:我之前维护的租户项目以及我自己搭建的博客平台有用到fastdfs,但总体使用上还是觉得minio最佳,比如:fastdfs在相关官方文档上没有minio这么完善;没有minio这种对象存储读写性能佳;minio还提供了方便操作的
2021-08-07 22:05:17
636
原创 Check that device-mapper is available in the kernel
一次主机重启,主机上的docker无法启动,发现docker的挂载盘没有挂上,然后选择手动挂载,结果报错说lv不在,报错截图如下: 接着只能查看下lv到底在不在了,查询如下:通过上图可以看到,lv是存在的,只不过device-mapper显示在内核中是不可用的。解决办法:通过升级内核,升级如下:1、 先下载kernel的安装包,直接进行yum install 2、更改内核启动顺序2.1、grub2-set-default 0 && grub2-mkconfig -o /etc/
2021-07-18 13:25:28
418
原创 网卡mtu值引起的服务访问异常处理过程
一、现象说明我们在k8s集群上部署服务,发现在72段主机上的服务访问是都没有问题的;但是在161段主机有的服务可以访问;有的访问没有返回值;其中在161段主机访问没有返回值的服务;到服务所在的主机是可以访问的。二、解决过程针对上述现象,我们确定了这两个段的ip是在一个vpc的,互相访问是没有问题的,不然也不可能存在有的访问有返回值,有的没有返回值,截图如下: 上图是我把grafana调到161段主机上curl就不正常了,重新把它调度到72段就能正常访问,后面我们部署了个nginx到161段发现也能正
2021-07-09 13:24:30
1384
原创 记录一次mongodb服务无法启动的处理方法
在租户的一个uat环境中,有一套psa模式的mongo,发现其中一个pod是挂掉了,试着重启下pod,也是无法启动起来,这个时候只能看下日志了,发现如下报错: 根据以上报错信息,然后ssh到对应pod的节点主机上,删除掉mongod.lock和WriredTiger.lock这两个文件,然后重启mongo的pod,就正常运行了。...
2021-07-02 13:38:08
337
原创 iptables防火墙对容器暴露的端口做安全限制
1、对容器暴露的3306端口进行封堵:iptables -t mangle -A PREROUTING -p tcp --dport 3306 -m comment --comment “iptables20210527” -j DROP2、查看mangle表的规则: 3、删除mangle表中对应的PREROUTING链的规则:iptables -t mangle -D PREROUTING 24、允许某个ip可以访问:先同意:iptables -t mangle -A PREROUTIN
2021-05-27 17:49:25
518
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人