kubernetes集群快速认识
kubernetes集群认识
kuberneters是开源的一个容器集群管理系统,简称k8s。
现在我们已经有了docker,为什么还需要使用k8s呢?
- 容器实列越来越多,我们很难去管理。
- 我们怎么去保障容器的分布式部署(高可用,高并发)。
通过上面的图,我们可以看到,docker在容器引擎层,kubernetes在容器编排层;容器引擎主要负责容器生命周期的管理,而k8s可以高效的管理这些容器;docker引擎主要负责容器的资源隔离、资源限制,这些都是k8s本身不具备的,所以k8s需要借助容器引擎的能力才能正常工作;总之,容器是提供应用级别的一个抽像,主要去管理应用,而k8s是提供应用级别集群的抽象。
k8s集群架构
从上图我们可以看到k8s主要由master节点和node节点组成
Mster节点组件
- API-Server
- scheduler
- controller-manager
- etcd(可以单独部署)
Node节点组件
- kubelet
- kube-proxy
- docker
组件功能简介
Mster组件
- kube-apiserver:集群的统一入口,各组件协调者,以RESfulAPI提供接口服务,所有对象资源的增删改查操作都交给APIserverr处理后再交给etcd存储。
- contro-manager:处理集群中常规后台任务,一个资源对应一个控制器,而controllerManager就是负责管理这些控制器的。
- schedule:根据调度算法为新创建的pod选择一个node节点,可以任意部署,可以部署再同一个节点上,也可以部署再不同的节点上。
- etcd:分布式键值存储系统,用于保存集群状态数据,比如:pod、service等对象信息。
Kubernetes基本概念
- Pod
最小部署单元
一组容器的集合
一个pod中共享网络命名空间,
pod是短暂的
- Controllers
deployment(无状态应用部署)
statefulset(有状态应用部署)
deemonset:确保所有node运行同一个pod
job一次新任务
cronjob定时任务
- Service
防止pod失联,定义一组pod的访问策略
- Label
标签,附加到某个资源上,用于关联对象、查询和筛选
- Namespace
命名空间,将对象逻辑上隔离