kubernetes
如果把容器化比作集装箱,其作用是打包程序所依赖的相关插件和库文件;
那么,k8s就好比是一个设施丰富且完善的船坞码头,他复杂管理这些集装箱,如何堆放才能更合理、更有效,就是k8s他要考虑和做的事情。
k8s部署架构

master节点:
又称控制平面,control plane
- kube-apiserver:
- 一个将k8s控制平面中的API暴露出来的服务,用于接受用户端的操作请求,这服务是k8s控制平面的前端。
- 无状态服务,用户可以运行多个kube-apiserver组件的实例,用于平衡实例的请求流量。
- 查看apiserver的版本信息[root@master1 kubernetes-starter]# curl localhost:8080/api
查看api server目前支持的资源对象种类# curl localhost:8080/api/v1 - 分别查询资源列表# curl localhost:8080/api/v1/pods
- pod 中的进程访问api server的services ,他是cluster ip中的第一个ip,监听https的443端口的# kubectl get services
- kuke-scheduler:
- 用于watch监听apiserver的资源变动(增删改查),并调度至合适的后端node节点,从而来创建pod资源
- kube-controller-manager
- 每个控制器都是独立的二进制文件
- 包括:Node COntroller、Replication Controller、Endpoint Controller和Services Account & Token Controller
- etcd
- 高可用、KV结构的k8s的后端数据存储组件
Node节点
数据平面:data plane,包括kubelet、kube-proxy和containerRuntime三个组件。
- kubelet:
- 运行在集群每个节点的客户端,需要确保相关容器运行在pod中;通过podspecs标签,描述容器的运行状态
- kube-proxy:
- 一个运行在集群每个节点的网络代理组件
- Container Runtime:
- 支持运行容器的底层环境软件
- 支持:docker、containerd、cri-o、rkelet等
cloud端
- cloud:
- 作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展对k8s集群与云上动态扩展的特性
Addons(附件组件)
使用kubernetes resources增加集群的功能,如DNS、web UI(Dashboard)、container Resource Monitoring、Cluster-level Logging等等
工作流程
- Master
- 用户通过(API、WebUI、CLI)向APIserver发送请求,kube-scheduler 组件监听APIserver的资源变动,同时从Node节点中选取最合适的节点开始调度,并把调度结果保存至Etcd中。
- Node
- kubelet 也会监听APIserver的资源变动,并在符合的NOde上通过kubelet调用相关的docker引擎进行后续打包和构建操作。

