项目总结
%%'' OR 1=1
这个作者很懒,什么都没留下…
展开
-
彻底解决容器化部署ftp
网上有不少ftp容器化部署教程,但涉及场景都很简单,大多是本地容器化部署。本文亲自示范各种docker 和 kubernetes下容器化ftp服务的方式。针对遇到的访问远程ftp server问题进行记录原创 2020-06-06 08:32:36 · 2781 阅读 · 1 评论 -
通过dockerfile设置镜像的时区和中文编码
本文详细介绍了通过dockerfile进行镜像时区的设置,解决部分场景下时间显示非北京时间问题,同时对常见的乱码出现原因进行了分析,并对镜像问题导致的中文乱码进行了彻底解决原创 2020-06-01 16:48:50 · 2394 阅读 · 1 评论 -
kubernetes平滑滚动升级服务 实现零宕机
本文介绍了通过readinessProbe 探针 和 preStop钩子测地解决 服务在发布升级过程中出现的宕机,服务访问异常问题原创 2020-05-31 16:37:21 · 1016 阅读 · 0 评论 -
golang中父子协程生命周期问题,以及通过context优雅关闭子协程
fmt.Println("main 函数 开始...") go func() { fmt.Println("父 协程 开始...") go func() { for { fmt.Println("子 协程 执行中...") timer := time.NewTimer(time.Second * 2) <-timer.C } }() time.Sleep(time.Second*5) fmt.Println("父 协程 退出...") }(.原创 2020-05-27 14:23:56 · 5913 阅读 · 2 评论 -
golang 利用mysql 实现分布式锁
需求背景我们的服务近期刚开始上线,之前在测试环境一直都是单实例运行。其中有一项功能是搜集kubernetes pod中的日志,上线之后发现,日志搜集有重复,问题定位较容易,因为重复数量恰好是我们线上服务的副本数,想到没有做分布式锁。线上运行的每个实例都在搜集每个pod的日志,导致日志重复。对于实现分布式锁,最常见的是通过zk、redis来实现,因为项目刚开始上线,目前暂不打算额外引入其他中间件,所以打算通过mysql来实现分布式锁。参考了以下两篇文章:mysql实现分布式锁简单实现依赖 MySQL原创 2020-05-19 21:30:26 · 1630 阅读 · 0 评论 -
kubernetes 灰度发布,deployment删除,无法级联删除pod,项目无法更新新版本功能
灰度发布流程线上发布,我们基于内部上线系统定制了一套发布流水线(包括测试、预发、正式等环境分别有对应的流水线),流水线大概包括分支代码合并、代码编译、镜像构建、金丝雀部署(灰度部署部分pod)、正式部署、删除金丝雀部署几个节点。后面几个部署节点都是通过调用阿里云ack(可理解为kubernetes)api接口创建deployment完成。这里只交代下大概的背景,以后我会详细说明灰度发布的整个流程。下面着重记录下今天遇到的问题起因:按照上述流程上线之后访问服务出现问题。检查线上部署deployment对原创 2020-05-12 00:15:06 · 1552 阅读 · 0 评论 -
使用kubernetes/docker容器化部署应用的注意点
最近遇到一个需求,把服务通过阿里云的容器服务kubernetes版部署上线,大概介绍下上线步骤以及注意点:# 使用保密字典存放代码中使用的账号、密码应用中一般都会涉及到数据库或者其他中间件的访问连接,这些连接一般都需要账号、密码,在项目中,一般都是配置到对应的配置文件,程序运行的时候从配置文件加载。但是线上的配置不可以直接推到仓库,否则会造成泄漏的风险。既然配置中不可以使用真正的线上数据库或者中间价账号、密码,那在所以使用kubernetes进行部署时,这些账号、密码怎么传递才更安全。一个可行的方案原创 2020-05-11 17:56:51 · 590 阅读 · 0 评论