Kubernetes常见名词简析/解释/解析
一、名词概念解析
集群
集群顾名思义,集体群体,指一组节点,这里的节点所指的可以是物理服务器或者虚拟机,在这些机器上装载了k8s环境,那么这一组机器就是一个k8s集群;Master
-
Master - 管理集群的一个节点,主节点;协调集群中的所有活动,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。
-
除master外的其他node(工作节点),集群中的工作机器;
每一个工作节点都需要有一个kubelet服务,这是与master节点或k8s环境(pod和容器)的通讯代理; -
处理master节点下发到当前节点的任务,按照podSpec描述来管理Pod和其他容器(主要通过调用apiserver来进行通讯)
默认监听:10250 、10255、10248、4194 四个端口
-
10250 kubelet API Port
kubelet与apiserver的通讯端口,工作节点定期去请求apiserver来获取master的下发的任务,节点可通过该端口来获取node的资源及状态 -
10248 健康检查端口
kubelet的健康检查端口,kubelet的启动参数配置–healthz-port 和 --healthz-bind-address 可指定监听的地址和端口
e.g.curl http://xxx.xx.xx.xx:10248/healthz
-
4194 cAdvisor 监听
可获取该节点的环境信息及node上的容器状态等,管理界面url:http://localhost:4194
启动参数 --cadvisor-port 指定
e.g.curl http://xxx.xxx.xx:4194/metrics
-
10255 只读的API
该接口只以只读的形式暴露pod和node信息,访问改端口不需要认证与授权
获取pod的接口
e.g. curl http://xxx.xx.xx.xx:10255/pods
获取节点信息接口(磁盘、网络、CPU、内存等信息)
e.g.curl http://xxx.xx.xx.xx:10255/spec
Pod
紧密关联的容器集合,k8s调度的基本单位。支持一个pod里多个容器共享网络及文件系统,pod使用manifest(yaml或json)来定义
Label
识别kubernetes对象的标签,以key/value的方式附加到对象上;label与对象的关系可以是一对多;如多个pods都可使用同一个标签;
Namespace
直译 - 名称空间 - 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分不同的项目组或用户组;
常见的pods、services、deployments等都属于某一个namespace(默认是default);
而Node、PersistenVolumes等则不属于任何的namespace;
Deployment -
Deployment确保任何时候都有指定数量的Pod的副本在运行;例为某个pod创建了Deployment并指定了3个副本;则会创建3个pod,并且持续监控它们;如果某个pod
不响应
,则deployment会替换它们,保持总数为3 -
若之前不响应的Pod恢复了,那么现在就有四个Pod的。此时deployment会将其中一个终止保持总数是3、如果在运行中的副本总数改为5,那么deployment会立即启动2个新的pod,保证总数为5.deployment还支持回滚和滚动升级;
Service -
Service 是应用服务的抽象,通过labels为应用提供负载均衡和服务发现。匹配labels的Pod IP 和端口列表组成endpoints,由kube-proxy负责将服务ip负载均衡到这些endpoints上。
-
每个 Service 都会自动分配一个 cluster IP(仅在集群内部可访问的虚拟地址)和 DNS 名,其他容器可以通过该地址或 DNS 来访问服务,而不需要了解后端容器的运行。
二、基本概念与组件
master - 控制节点包含的组件有如下: -
kube-apiserver 集群控制的入口,提供HTTP REST服务
-
kube-controller-manager: Kubernetes集群中资源对象的自动化控制中心
-
kube-scheduler 负载Pod的调度
-
Node k8s集群中的工作节点,工作负载由master节点分配,主要是运行容器应用。
其中Node节点包含以下组件- kubelet:负责Pod的创建、启动、监控、重启、销毁等工作,同时与master节点协作,实现集群管理的基本功能。
- Kube-proxy: 实现kubernetes Service 的通信和负载均衡运行容器化(Pod)应用
-
Pod k8s最基本的调度单元,每个pod由一个或多个业务容器和一个根容器(Pause)组成。一个pod表示一个应用的实例。
-
ReplicaSet 是Pod副本的抽象,解决Pod的扩容和伸缩
-
Deployment 表示部署,在内部使用ReplicaSet来实现。可以通过deployment来生成相应的ReplicaSet来完成Pod的创建
-
Service 是k8s最重要的资源对象,可对应微服务架构中的微服务,定义了服务的访问入口,服务的调用者通过这个地址访问后端的pod实例。svc通过label selector和后端的Pod建立关系,deployment保证pod副本的数量,也是保证服务的伸缩性