k8s学习(一)k8s简介
目录一、简介二、核心组件三、核心概念一、简介 Kubernetes是容器集群管理系统,用于管理云平台中多个主机上的容器化的应用,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。可以在物理或虚拟机的 Kubernetes 集群上运行容器化应用,Kubernetes 能提供一个以“容器为中心的基础架构”。主要功能包括: 基于容器的应用部署、维护和滚动升级 负载均衡和服务发现
一、简介
Kubernetes是容器集群管理系统,用于管理云平台中多个主机上的容器化的应用,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。可以在物理或虚拟机的 Kubernetes 集群上运行容器化应用,Kubernetes 能提供一个以“容器为中心的基础架构”。
主要功能包括:
基于容器的应用部署、维护和滚动升级
负载均衡和服务发现
跨机器和跨地区的集群调度
自动伸缩
无状态服务和有状态服务
广泛的 Volume 支持
插件机制保证扩展性
特点:
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg的开源版本。
二、核心组件
Kubernetes 主要由以下几个核心组件组成:
etcd 保存了整个集群的状态;
apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
kubelet 负责维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理;
Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡。
除了核心组件,还有一些推荐的Add-ons:
kube-dns负责为整个集群提供DNS服务;
Ingress Controller为服务提供外网入口;
Heapster提供资源监控;
Dashboard提供GUI;
Federation提供跨可用区的集群;
Fluentd-elasticsearch提供集群日志采集、存储与查询。
三、核心概念
1、Container
Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。
由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序。这种一对一的应用镜像关系拥有很多好处。使用容器,不需要与外部的基础架构环境绑定, 因为每一个应用程序都不需要外部依赖,更不需要与外部的基础架构环境依赖。完美解决了从开发到生产环境的一致性问题。
容器同样比虚拟机更加透明,这有助于监测和管理。尤其是容器进程的生命周期由基础设施管理,而不是被进程管理器隐藏在容器内部。最后,每个应用程序用容器封装,管理容器部署就等同于管理应用程序部署。
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
2、Pod
Kubernetes 使用 Pod 来管理容器,Pod 就像是豌豆荚一样,它由一个或者多个容器组成。Pod 是 Kubernetes 调度的基本单位。Pod 内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
3、Replication Controller
Kubernetes复制控制器RC是K8s集群中最早的保证Pod高可用的API对象,适用于长期伺服型的业务类型。
4、Replica Set
Kubernetes副本集RS是新一代RC,提供同样的高可用能力,区别主要在于RS后来居上,能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为Deployment的理想状态参数使用。
5、Deployment
部署是一个比RS应用模式更广的API对象,可以是创建一个新的服务,更新一个新的服务,也可以是滚动升级一个服务。以K8s的发展方向,未来对所有长期伺服型的的业务的管理,都会通过Deployment来管理。
6、Service
RC、RS和Deployment只是保证了支撑服务的微服务Pod的数量,这些服务集群的统一入口是通过Service提供,每个Service会对应一个集群内部有效的虚拟IP,集群内部通过虚拟IP访问一个服务。
7、Namespace
Namespace 是对一组资源和对象的抽象集合,可以用来将系统内部的对象划分为不同的项目组或用户组,为集群提供虚拟隔离。
8、Node
Node是Pod真正运行的主机,可以物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt)、kubelet和kube-proxy服务。
9、Job
Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
10、CronJob
CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。’
11、StatefulSet
StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计)。
12、DaemonSet
DaemonSet保证在每个Node上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用。
更多推荐
所有评论(0)