近期项目小结2019-10

作者: ragpo | 来源:发表于2019-11-11 21:38 被阅读0次

项目背景

这个客户是个法国中型电商,此前使用的是数人云的mesos容器云平台,现准备迁移至 Openshift,本次项目的目标就是平滑迁移并且不改变应用架构。

客户的Mesos现状

  • 网络:
    容器网络全部采用host模式,性能几乎无损,因为客户之前采用overlay的网络走了些坑,hostnetwork模式稳定可追溯。
  • 存储:
    mesos宿主机采用的是ESXI虚拟机,容器的数据直接使用hostpath映射到虚拟机上,虚拟机的路径使用ceph的文件cephfs进行多副本备份。
  • CI/CD
    使用Jenkins+shell脚本进行ci/cd发布,Jenkins的网络和存储也采用上诉网络和存储模式。

应用现状

spring cloud技术栈,还有tengine、nodejs、varnish等中间件

实施过程中的一些关键技术点

  • 应用启动命令中含有宿主机IP环境变量
    在spring cloud的应用启动命令中含有一个$HOST环境变量,这个在mesos的容器里面是有的,但是在openshift是没有的,这个环境变量是获取当前容器IP,也就是容器的宿主机IP,这时候可以使用downward API获取到相应的环境变量,将宿主机IP(fieldPath:status.podIP)设置为环境变量名为HOST,容器就可以获取到相应的值了。
    解决方法:在deployment内添加如下字段:
    spec:
      containers:
        - env:
            - name: HOST
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.podIP
  • 在容器不健康时不重启容器
    通常在配置了健康检查(readiness和liveness)后,在readiness检查没有通过时会将pod从服务可用列表中移除,在liveness检查没有通过时会重启pod中的容器;这个需求的原因是,当发现一个pod不正常时,想直接进入pod查看事故现场,方便排查问题,容器重启后有些东西就看不到了。
    解决方法:是配置readiness,不配置liveness,这样应用有问题就不会重启了。
  • 优雅终止pod
    容器在启动时会想eureka注册中心注册自己,但是有时候在pod被delete或者更新时,没有向eureka注销自己,造成服务其实已经停止或者不可用时,注册中心还留存着旧的信息,所以希望在终止容器前主动向注册中心注销。
    解决方法:通过prestop在删除容器前向eureka注销自己来解决
  • 更新策略:蓝绿部署
    比如现在应用有10个pod,希望在更新的时候也创建10个新的pod,并且在10个新的pod ready之后再逐步替换旧的10个pod。
    解决方法:在deployment文件中添加如下:maxSurge: 100%就是新pod复制你旧pod的数量,maxUnavailable: 0%是新版本的应用不可用数量为0,也就是新pod全部ready后才会替换旧的
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    name: jenkins
  strategy:
    activeDeadlineSeconds: 21600
    resources: {}
    rollingParams:
      intervalSeconds: 1
      maxSurge: 100%
      maxUnavailable: 0%
      timeoutSeconds: 600
      updatePeriodSeconds: 1
    type: Rolling
  • 服务发现
    mesos自带的服务发现是consul,openshift使用的service做服务发现,不过service的服务发现性能不如consul,
    最佳的方案还是使用consul。

相关文章

  • 近期项目小结2019-10

    项目背景 这个客户是个法国中型电商,此前使用的是数人云的mesos容器云平台,现准备迁移至 Openshift,本...

  • 近期项目小结

    自定义应用 Pod 的启动命令 在使用 openshift 提供的 S2I 方式进行镜像的构建和启动 pod ...

  • iOS--近期项目小结

    1、Mac上查看.pdm文件 最近的项目处理中,用到了.pdm文件.但是奈何在Mac上面打不开,网上找到了一个可以...

  • 近期小结

    我是一个非常懒惰的人,经常不想动,但是无意中发现了简书,又机缘巧合下加了个群,天天看着群友们练习,慢慢也对自己有了...

  • 近期小结

    最近朋友圈里一位好友发了这样的一段话,恰巧也和我这段时间的反思相合,引用如下: 遭遇背叛,才会懂得忠诚的可贵。 被...

  • 近期小结

    闺蜜说我这一个月分为三个状态,十天躁郁颓十天明媚平静十天自我反思。 这一波的躁郁程度有点高,顶点完全是小炸...

  • 近期小结

    好久没写小结了,最近过得异常普通,没有什么情绪,每天基本都是一样的。也要努力学习了,下周四级考试,下下周数学考试太...

  • 近期小结

    一晃发现已经有很长时间没有在简书上写过文章啦,捂脸。 下半年换了份工作,新的方向,学习与适应,最大的收获是弄清了自...

  • 近期 小结

    写了这么久的小文章,里里外外把自己剖析了个遍,把读到的有限的文章心得体会分享过后,进入焦虑区的地带。 自己陷入到一...

  • 近期小结

    离端午小长假还有几个小时, 办公室早已洋溢着一份假期前的喜悦与激动,虽然只比平时休息日多了一天, 但感觉还是...

网友评论

    本文标题:近期项目小结2019-10

    本文链接:https://www.haomeiwen.com/subject/vnwtictx.html