1 k8s核心功能
1.1 自动装箱
基于容器对运行环境的资源配置要求自动部署容器
1.2 自我修复
容器失败时会对容器进行重启 当所部属的node节点有问题时,会对容器进行重新部署或重新调度 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
1.3 水平扩展
通过简单的命令,用户ui界面或基于CPU等资源的使用情况,对容器进行规模扩大或规模裁剪
1.4 服务发现
用户不需要使用额外的服务发现机制就可以基于k8s自身能力实现服务发现和负载均衡
1.5 滚动更新
可以根据应用变化,对应用容器运行的应用,进行一次批量的更新
1.6 版本回退
可以根据部署情况,对应用容器运行的应用,进行历史版本及时回退
1.7 密钥和配置管理
在不需要从新构建镜像的情况下,可以部署更新密钥和应用配置,类似热部署
1.8 存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。存储系统可以来自本地目录,网络存储,公有云服务等
1.9 批处理
提供一次性任务,定时任务,满足批量数据处理和分析的场景
2 k8s集群架构组件
主要包括两部分
- Master Node:作为控制节点,对集群进行调度管理;Master Node由API Server、Scheduler、Cluster State Store和Controller-Manger Server所组成;
- Worker Node:作为真正的工作节点,运行业务应用的容器;Worker Node包含kubelet、kube proxy和Container Runtime;
2.1 master组件
- apiserver
集群统一入口,以restful方式,交给etcd存储 - scheduler
节点调度,选择node节点应用部署 - controller-manager
处理集群中常规后台任务,一个资源对应一个控制器 - etcd
存储系统,用于保存集群相关数据
2.2 node组件
- kubeelet
master派到node组件的代表,管理本机容器 - kube-proxy
提供网络代理,负载均衡等操作
3 核心概念
3.1 pod
最小部署单元 包含一组容器 共享网络 生命周期是短暂的,重启后即失效
3.2 controller
确保预期副本的数量 有状态/无状态应用部署 确保一组node运行同一个pod 一次性任务和定时任务调度
3.3 service
定义一组pod的访问规则
|