在之前的文章中我们介绍了从传统部署方式到虚拟化再到容器部署方式的演变,随着容器数量规模的不断增大,我们急需一个大规模容器编排系统。Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的可弹性运行的分布式系统开发和支撑平台。
Kubernetes具有以下特性:
Kubernetes属于主从设备模型(Master-Slave架构),由Master和Node节点组成。它的工作方式为 Kubernetes Cluster = N Master Node + N Worker Node:N主节点+N工作节点;N>=1。
Kubernetes组件架构如下图,其中包含Master节点的控制平面组件(Control Plane Components)和worker节点的Node 组件:
Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。
Node 节点下包含组件:
除了核心组件,还有一些常用的Add-ons:
Pod 是 kubernetes 中可以创建和部署的最小也是最简的单位。代表着集群中运行的进程。在Kubenetes中,所有的容器均在Pod中运行,一个Pod可以承载一个或者多个相关的容器。同一个 Pod 中的容器会自动地分配到同一个 node 上。同一个 Pod 中的容器共享资源、网络环境和依赖,它们总是被同时调度。逻辑上的一组 Pod,一种可以访问它们的策略 —— 通常称为微服务。Service 所针对的 Pod 集合通常是通过选择算符来确定的。
在Kubernetes中,Service是分布式集群架构的核心。一个Service对象拥有如下关键特征:
概念上来讲,K8S 集群的服务,其实就是负载均衡或反向代理。
对于上面的组件架构图,我在B站刷到了一个非常有意思且易于理解的比喻,我先上图:
Master节点理解为一个集团总公司,其中Controller manager是公司的高层决策者,他将决策下发到API server秘书部,API server秘书部将决策备份到etcd资料库中保存起来,并通知给Scheduler调度者由他调度项目由哪个或者哪几个分厂去做,Scheduler调度者将结果反馈到API server秘书部,秘书部将调度结果存放到etcd资料库,并按调度结果来通知到各个分厂,然后通知Cloud controller manager外联部也就是外部云厂商。每个分厂中的kubelet厂长负责控制当前节点该搞哪些项目和不搞哪些项目,由API server秘书部通知kubelet厂长调度结果。kube-proxy是每个分厂的门卫大爷,他们知道每个分厂都在搞哪个项目,当有领导视察某个项目在哪个分厂时,由kube-proxy门卫大爷告知地址,并且大爷们之间信息是同步的。
API server秘书部是去总部访问的唯一入口;
kube-proxy门卫大爷是集群中控制网络的唯一入口;
我们的kubectl也是通过api-server才能传达给controller-manager。
参考:
https://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/overview/components/
https://www.kubernetes.org.cn/
https://www.yuque.com/leifengyang/oncloud/ghnb83
END
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有