springCloud架构
SkyWalking zipkin 分布式链路追踪工具
用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。
统一配置中心,例如:Apollo,Disconf
-
制作镜像(应用程序、运行环境、文件系统)
基础镜像:Debian 或 应用程序的运行环境镜像
应用程序:Go,Java,Python ....
运行环境:不同的语言都需要有特定的运行环境(例如java需要jdk)
文件系统:忽略 -
控制器管理Pod
Deployment:无状态部署
StatefulSet:有状态部署(MySQL、Mongodb、Redis ...)
DaemonSet:守护进程部署
Job & CronJob:批处理 -
暴露应用
Service定义了Pod的逻辑集合和访问这个集合的策略,
Service引入为了解决Pod的动态变化,提供服务发现和负载均衡,
支持Cluster IP,NodePort以及LocalBalancer三种类型,
Service的底层实现主要实现有iptables和ipvs两种网络模式,推荐ipvs,
使用CoreDNS解析Service名称,
通过Label关联Pod。 -
对外发布应用(ingress)
通过Service关联Pod,
基于域名访问,
通过Ingress Controller实现Pod的负载均衡(支持TCP/UDP 4层和HTTP 7层)。
最后在Ingress前面部署外网用户统一入口实现七层代理/四层转发(Nginx、HaProxy...) -
日志采集
Pod在运行的时候会产生应用日志,需要将其日志文件信息采集到统一的数据库中存储,然后从一个平台中展示
易给开发查阅日志信息和错误日志信息,易于排查问题
主流方案:FileBeat + ELK(高性能和解耦:+kafka) -
监控
不管是k8s集群Master还是Node,以及Pod,我们需要知道它们运行的具体状况,
占用多少资源,剩余多少资源,就得通过监控的方式去实现。
主流方案:Prometheus + Grafana + ...Export