想请教一下老师,我单位现有一套基于Dubbo+Zookeeper的微服务互联网金融系统,先准备做一些容器云方面的探索,将部分子系统使用K8S来进行部署;但遇到了一些问题:
1.Zookeeper位于K8S集群外部,外部子系统如何才能=调用到容器内的应用提供的服务,因为容器内的应用注册到zk上的url是pod的ip地址,外部无法访问。
2.关于日志持久化的问题,我单位需要对应用系统产生的日志备份上传到日志备份服务器,这该如何实现呢?期待老师能抽空解答一下。。
1、基于docker术语采用host模式,基于k8s术语采用nodeport模式,将注册地址改为主机地址,外部zookeeper对主机地址可见即可。
2、1)规范先行,应用日志和中间件日志的日志路径、命名均进行规范化配置;2)、容器启动挂载卷,应用日志和中间件日志均规范化输出至日志挂载卷;3)、挂载卷:A)存储分散管理,容器挂载SLAVE节点的磁盘卷,由于容器重启后漂移,节点管理困难;B)存储集中管理,各SLAVE节点挂载分布式存储提供存储集中管理,容器挂载集中管理的卷,应用日志和中间件日志可集中化管理,方便查询和采集等处理
4)规范后的日志路径和命名,无论是采用分散管理还是集中管理,备份均很方便,当然集中管理最为方便
关于第一个问题,可以在容器部署模板里的env部分定义一个变量,并声明valueFrom.fieldRef.fieldPath的值为status.hostIP,这样容器启动后就可以通过环境变量获取到宿主机的IP地址。
关于第二个问题,我们是后台通过自研的日志收集引擎,将Pod的stdout日志或者PVC中日志文件进行自动收集,并发送到ELK的。
收起第一个问题: