K8S入门及简介
1、k8s简单理解:就是在服务器上安装了一个统一工作平台,所有的容器都可以在上面运行,运行的服务不需要考虑各类依赖,依赖都打包在容器里面;
2、k8s架构:
3、架构拆分
从大方面分为:master和node节点,以及一个cloud端
master节点组成:kube-apiserver、kube-scheduler、kube-controller-manager、etcd四个组件
- kube-apiserver:提供平台api暴露服务,用于接收用户的操作请求,是平台的入口前端;
- kube-scheduler:监听apiserver的资源变动,实行资源调度至合适的后端node节点上,从而创建pod资源
- kube-controller-manager:控制器管理器,每个控制器都是一个独立的二进制进程,包含:NodeController、ReplicationController、EndpointsController、ServiceAccount & TokenController
- etcd:key-value结构的k8s后端数据存储组件
备注:cloud-controller-manager:与云厂商提供的服务能力对接的组件
node节点组成:
- kubelet:运行在各个节点的客户端,接收APIserver的信息,确保pod处于目标状态中,通过podspecs标签描述容器的运行状态,定期向master汇报本节点的资源使用情况
- kube-proxy:运行在各个节点的网络代理组件
- Container Runtime:支持运行容器底层环境的软件
cloud端:
- 作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展k8s集群云上动态扩展的特性
Addons(附加组件):
使用k8s resource增加集群功能:如DNS,Web UI(Dashboard),container Resource Monitoring、cluster-level logging
4、工作流程概述
Master:
用户通过(api,Web UI,CLI)向APIserver发送请求,kube-scheduler监听APIserver的资源变动,同时从Node节点中选取最合适的节点开始调度,并把调度结果保存在Etcd中;
Node:
kubelet监听APIserver的资源变动,并在符合的Node上通过kubelet调用相应的docker引擎进行后续的打包和构建操作;