业务目标,k8s 目标:
1、上线发布:实现无缝隙灰度发布和蓝绿发布
2、流量分发,转发:实现服务注册,发现,直接用k8s云原生实现;实现弹性扩缩容,实现流量分配到不同的k8s集群,
3、CI/CD 自动化发布。搭建gitlab,自动发布release分支代码,打包镜像,发布到k8s集群.
一、概览图片
二、整个k8s架构
1、kubectl: 从命令行接受参数
2、master-node(中央管理):control-manager(控制整个集群的状态的管理,通过etcd感知,如2个pod挂了一个)→scheduler 去调度→api-server(发送给kubelet去调度,拉起)。
api-server:上游是,从命令行和control-manager,去下达指令的地方。下游是, 与kubelet 对接的。
3、worker-node(工作管理):pod,kubelet,kube-proxy
4、、kubelet:创建pod,与api-server的唯一通道
etcd:整个集群的存储
三、重要概念
pod,deployment,service
pod:
一个pod对应多个contanir,不过一般情况下是一对一。是可以一对多的。
一个pod有一个ip,动态的ip;worker node的节点ip是不变的,静态的ip
pod和contaner 共享一个ip,共享一个暴露出端口。可以给每个pod打标签。
deployment:
一个deployment对应就是如何部署容器,有几个备份,就是对应部署哪一块的pod。部署多少个备份的pod,pod内部的容器是怎么样的。pod开出的endpoint是怎么样的。
kube-proxy:(相当于nginx,做内部的路由,转发。)
service:
固定的clietip,服务注册和服务发现的功能
帮助理解,参考文章: