一、Kubernetes概述
- Kubernetes(简称K8s)是谷歌在2014年开源的容器化集群管理系统
- 使用K8s进行容器化应用部署
- 使用K8s利于应用扩展
- K8s目标实施让部署容器化应用更加简洁和高效
二、Kubernetes特性
(1)自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)自我修复(自愈能力)
当容器失败时,会对容器进行重启
当所部署的Node节点有问题时,会对容器进行重新部署和重新调度
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
(3)服务发现
用户不需要使用额外的服务发现机制,就能够基于K8s自身能力实现服务发现和负载均衡
(4)滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次或批量式更新
(5)版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本及时回退
**(6)密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署
(7)存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph)等、公共云存储服务
(8)批处理
提供一次性任务,定时任务,满足批量数据处理和分析的场景
三、Kubernetes集群架构组件
-
Master组件
(1)kube-apiserver
集群统一入口,以Restful方式,交给etcd存储
(2)Scheduler
对工作节点进行调度,选择Node节点应用部署
(3)controller-manager
处理集群中常规后台任务,一个资源对应一个控制器
(4)etcd
存储系统,用于保存集群相关的数据 -
Node组件
(1)kubelet
相当于Master派出的Node节点代表,管理本机容器
(2)proxy
提供网络代理、负载均衡等操作
四、Kubernetes核心概念
- Pod
(1)最小部署单元
(2)一组容器的集合
(3)共享网络
(4)生命周期是短暂的 - Controller
(1)确保预期的Pod副本数量
(2)无状态、有状态应用部署
(3)确保所有的Node运行同一个Pod
(4)一次性任务和定时任务 - Service
定义一组Pod的访问规则