Posts Tagged ‘docker’

docker 无法联网(无法ping网关)问题解决

Wednesday, May 5th, 2021

环境 : 操作系统:centos7 docker版本: docker 20.10.5 现象 : 最近一台服务器修复补丁,升级系统之后,发现docker内的所有容器都无法访问网络 ,甚至连docker 自己本身的网关 172.17.0.1都无法ping通,不过docker网络内的其他容器是可以ping通的。 尝试的几种解决办法: 1. 操作系统 ipv4转发 net.ipv4.ip_forward = 1 检查该配置项,确认是正常的,跟这儿无关。 2. 检查docker 状态 发现系统日志中docker状态、日志也无异常。 3. 重装docker 重置配置文件将当前版本的docker直接卸载 ,重新安装 ,docker的安装目录清空,再次尝试依旧无法访问。 推测根本的原因为:docker自动创建的桥接网络docker0 无法转发数据,根据另一位朋友遇到的问题,根据这个思路,对于我们本身来说,操作系统内核无法升级,因为升级内核 会导致这台服务器raid 硬盘无法加载,只能换一种思路。 最后解决后的方法是: 1.  将原来的docker0连接删除 2. 然后手动创建docker0桥接 重启docker服务后,一切恢复正常了。

阿里云容器服务ACS升级1.18.8-aliyun.1 踩坑记录

Sunday, February 7th, 2021

公司的项目的云服务提供方均为阿里云,为了减少运维成本,也基本基于阿里云的产品进行构建。 当然这样做有好处,也有不足,好处是:大大减少了相关产品运维成本更加方便。 不足就是一旦用上了阿里云的这种相关产品以后基本不太可能迁移他处,迁移成本过大。 阿里云的容器服务ACS产品(我们采用的是托管版本),一般半年期一个大版本升级,要持续跟进阿里云的升级进度,否则就会进入非维护期的产品系列了。 不过每次升级其实都是提心吊胆。最近一直提示可更新至1.18.8-aliyun.1版本,遂几个集群逐一开始升级,一般情况是没有问题的。 可今天就出现了幺蛾子。 其中一个集群在升级时死活不行(相同配置的其他集群OK): 遇到这种情况只能寻求阿里云官方帮助解决,官方的工单服务还是不错的。最终得到的回复是其中一个Node资源不足引起的。 其实整体Node资源占用率仅为30%左右,而CPU一般在10%以下,每个node机器配置为:8核64G,上面业务Pod数10个左右,每个内存资源占用大概2G,很难理解哪块资源会不足,由于情况紧急并未深究此原因,紧急解决之。 最终的解决办法是先取消升级,排空该Node,再重新升级集群解决此问题。 当然阿里云给出的第一套建议是直接从集群中删除此node,升级完成后再添加回来,这个方法基本可以解决100%的node异常问题,但由于我们这节点上手动安装了dns等其他服务无法采用该方式,只能放弃。

debian安装docker后无法login的问题

Friday, December 11th, 2020

背景: 由于centos即将停更,后续业务系统准备迁移至debian系统,由于之前所有业务系统全是centos系列产品,必须对debian进行相关测试,今天发现刚装完docker发现无法login登录。 问题现象: docker login 登录时报错如下: 系统环境: Debian 10.7 buster Docker版本:Docker version 20.10.0, build 7287ab3 解决办法: sudo apt-get install gnupg2 pass -y

K8S集群中高并发应用undertow线程数不足引起的重启

Thursday, July 16th, 2020

问题 在高并发环境时间段,K8S集群中,前端接口应用被强制重启,其中未有异常日志。 环境 项目采用Spring Cloud微服务架构,全部打包docker镜像。 undertow做Web容器 – undertow版本—— 2.0.28.Final。 使用阿里云K8S容器服务部署。 Spring Boot版本——2.2.1.RELEASE。 原因 直接说原因吧,由于undertow web容器,采用了默认配置,没有手动分配线程数,而导致默认线程数过小,系统响应超时,而集群心跳检测时无法响应,认为应用已经挂掉,则强制重启了应用。 默认情况下,undertow的工作线程是以系统获取的CPU个数为基础分配计算的,当CPU数与2取最大值=io-worker,测试了一下,容器内部获取CPU为1,则 io-worker =2。 而workerThreads= ioThreads * 8 ,实际值则为16,一个实例仅16个线程,明显无法满足需求,导致大量等待请求,最终被强制重启。 undertow官方源码可参考如下: https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/Undertow.java ioThreads = Math.max(Runtime.getRuntime().availableProcessors(), 2); workerThreads = ioThreads * 8; 解决办法 最简单的办法,则是手动配置workerThreads值,这个是比较重要的参数,根据服务器的配置设置相应的值,一般来说最少128以上吧。

docker push时卡住的问题

Wednesday, April 15th, 2020

现象 晚上9点半时,接到项目组电话,线上正式环境要进行发布时,自动化流程jenkins一直卡住不动,部分镜像无法推送到中心仓库,项目无法发布。 解决 首先考虑网络原因,目前中心仓库使用的阿里云,部分成功,部分不成功,判断阿里云的网络应该是正常的,ctrl+c 中断,反复重试依旧如此,卡住半个多小时无任何响应,也不报错。 最终尝试重启了一下持续集成服务器的docker,发现一切恢复正常,用这么多年docker头一次出现该现象 ,难道是最新版本的bug?或许吧。

云服务器批量维护之安全更新升级

Thursday, April 9th, 2020

背景介绍 目前服务皆基于K8S集群构建,团队需要周期性对系统进行安全维护更新,今天又踩一坑,集群中机器分批维护,维护之前排空节点,统一的命令维护更新,结果是绝大部分机器OK,唯独其中一台机器出现如下图故障。 另外发现出现问题的都是集中在阿里云张家口的数据中心,位于北京的数据中心的集群一切OK,不知是否跟这个有关系 。 解决过程 因为本次升级,更新了系统内核,不过一向相信centos的稳定性,对于官方的更新还是比较抱有信心,但偏偏出现了问题。 第一步,判断是由于更新内核引起的,于是回退内核到上一版本,回退之后可以正常启动进入系统,想卸载掉最新内核 却发现rpm -qa 命令都无法执行。 第二步,随后联系阿里云客服协助进行,阿里云技术搞了N长时间也没搞定,结果我们被告知,回退到上一个版本内核就可以了更新内核是可能会引起类似的问题,相当于白问,还是跟我们原来解决方式一样,但依旧没根本上解决问题。 最终解决办法(还是得靠自己): 由于该机器仅仅是K8S中的一个节点,这么多节点升级唯独这一个机器出现问题,由于之前我们保持良好的系统快照备份习惯,所以关机回滚至当天凌晨的系统快照。 回滚成功后,再启动机器,重启系统更新,内核也更新到了最新版本,再次重启一切OK,该节点在集群内正常上线。 总结: 对于服务器的维护,平时一定要制定良好的规范,并需要不断完善,一定要按照规范、流程来操作,切不可“随心所欲”以致造成严重后果。


正在读取数据……