微服务迁移K8S踩坑记录

遇到问题

  1. 阿里云免密拉取 deployment 配置不能创建serviceAccount 使用default

  2. 数据库白名单问题:按网段添加所有白名单解决

  3. jenkins 的构建队列 queueId 为短期数据,过期查询会404,要在构建发生时 使用 queueId 获取 buildNumber,后续api接口用 buildNumber 来调用

  4. 跨平台构建镜像,要使用docker buildx

  5. 基础镜像 alpine 时区问题,构建时使用 apk add –no-cache 避免 apk update 生成缓存

  6. 有些服务依赖时区信息,需要安装 apk add tzdata

  7. 虚机通过 nacos 不能正常对 pod 发起 rpc 调用

  8. 配置了多个域名解析 nslookup beta-cloud.**.com

  9. 老服务没有停,rpc 请求受到影响

  10. 阿里云slb 不支持挂ip、pod。新申请了内外网两个slb接域名请求,两个ecs部署nginx转发到 k8s

  11. 灰度服务也参与rpc请求,要及时清理

  12. pod 需要平滑退出 增加 preStop: exec: command: [“sleep”, “3”]

  13. accessModes有三种,ReadWriteOnce(被单个node读写), ReadOnlyMany(被多个nodes读), ReadWriteMany(被多个nodes读写)。之前阿里云 jenkins 报错存储冲突,应该和jenkins挂载配置的这个有关系 jenkins ReadWriteOnce模式的盘和 pod 里的 go-cache 发生了冲突。

  14. 部署多个Ingress Controller,限制内网nginx处理内网转发,外网处理外网 。通过 kubernetes.io/ingress.class 这个注释绑定

  15. nfs 读取大量小文件时性能差,可以开启缓存,或者考虑hostpath方式存储

  16. 某python程序采集不到标准输出里的日志 ,配置的 tty stdin 后设置启动命令 /bin/sh -c /app/start.sh 后正常采集

  17. 踩坑 jenkins 重启后,jenkins pvc 被删除了,导致服务启不来。重启后配置的域名丢失导致调不通

  18. 数据库密码改了,服务一直重启,always 策略频繁拉镜像造成docker 拉镜像的并发被用尽了。