K8S概述和特性
kubernetes,简称K8S, 是一个开源的用于管理云平台多个主机上的容器化的应用.
- k8s 是谷歌在2014年开源的容器化集群管理系统
- 适用k8s进行容器化应用部署
- 适用k8s利于应用扩展
- k8s目标是让部署容器化应用更加简洁和高效
特性:
-
自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器 -
自我修复(自愈能力)
当容器运行失败时,会对容器进行重启.
当所部署的Node节点有问题时,会对容器进行重新部署和重新调度.
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务 -
水平扩展
通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模裁剪. -
服务发现
用户不需要使用额外的服务发现机制,就能够基于kubernetes自身能力实现服务发现和负载均衡. -
滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新 -
版本回退
可以根据应用部署情况,对应用容器运行的应用进行历史版本即时回退 -
密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署. -
存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要. -
批处理
提供一次性任务、定时任务,满足批量数据处理和分析的场景.
K8S架构组件
Master组件(主控节点)
-
API Server
集群对外统一入口,将操作请求分发给其他组件,以RESTful方式,交给etcd存储 -
controller-manager
处理集群中常规后台任务,一个资源对应一个控制器(controller), -
scheduler
用于节点调度,选择node节点部署应用 -
etcd
存储系统,用于保存集群相关的数据
Node组件(工作节点)
-
kubelet
master在node节点的代表, 用于管理本机容器 -
kube-proxy
提供网络代理,负载均衡等操作
K8S核心概念
Pod
-
最小部署单元
在k8s中创建和管理的、最小的可部署的计算单元. -
一组容器的集合
Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器,这些容器相对紧密地耦合在一起.
在非云环境中,在同一个物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用.
多个并置、同管的容器组织在一个Pod中是一种相对高级的使用场景.只有在一些场景中,容器之间紧密关联时才应该使用这种模式. -
共享上下文
存储、网络命名空间、IP地址和端口空间、容器运行声明. -
短暂的生命周期
Pods被调度到节点,保持在这个节点上直到被销毁.
重启Pod中的容器和重启Pod不要混淆.Pod不是进程,而是容器运行的环境.在被删除之前,Pod会一直存在.
Controller
-
确保预期Pod副本的数量
当需要横向扩展某个服务时,可以通过增加Pod副本的数量实现 -
有/无状态应用部署
-
确保所有Node运行于同一个Pod
-
一次性/定时任务创建、执行
Service
- 定义一组Pod访问规则