容器之k8s(四)
容器编排与CI/CD(持续集成/持续交付)
流程图:
常见CI/CD工具:
,其中Bamboo与Jira集成。
k8s微服务落地
红色为有状态服务,不太方便进行弹性扩缩容,这种应用建议云服务现有产品,如mysql,redis。rabbitmq由于阿里云没有进行很好的支撑,所以改为部署在自己的k8s集群中。
白色为无状态服务,需要经常进行灵活的弹性扩缩容,这种应用部署在自己的k8s集群中。
微服务部署步骤
1)云后台服务(mysql,redis),如果使用本地k8s集群部署,难点较多,涉及到高可用,数据库代理mycat等与k8s的集成问题,待后期扩展。
1.k8s部署mysql
1)vim mymysql.yaml
2)kubectl apply -f mymysql.yaml
3) 使用navicat验证部署
2.k8s部署redis
2)基础架构服务(计算节点,kubernetes集群)
3)容器直接部署(rabbitmq),同样使用单节点部署,没有解决高可用问题,待后期扩展。
1.vim myrabbitmq.yaml
遇到的坑:
1.版本号不知道怎么写,使用命令kubectl api-versions可以查看所有可用版本号
2.使用apps版本号需要指定selector属性
3.容器一直初始化状态,到不了running,不知道怎么排查。需要查看pod日志信息,具体指令:kubectl describe pod +pod_name,查看deployment日志信息什么也看不到,必须查看pod日志才行。
2.访问192.168.3.201:31199验证部署
4)代码改造(修改eureka配置,数据库配置),eureka也是单节点部署,没有解决高可用问题,待后期扩展。
5)制作并发布镜像(编译,镜像制作,镜像上传),可以使用自建仓库,也可以使用阿里云现成的镜像仓库服务
6)容器和服务部署(deployment,service)