赞
踩
K8S的全称为Kubernetes (K12345678S), PS:“嘛,写全称也太累了吧,不如整个缩写”。
作用
由来
含义
GitHub
https://github.com/kubernetes/kubernetes
证书
版本
K8S的目标是让部署容器化应用简单高效。
●单机使用,无法有效集群
●随着容器数量的上升,管理成本攀升
●没有有效的容灾、自愈机制
●没有预设编排模板,无法实现快速、大规模容器调度
●没有统一的配置管理中心工具
●没有容器生命周期的管理工具
●没有图形化运维管理工具
k8s提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能
弹性伸缩
自我修复
服务发现和负载均衡
自动发布(默认滚动发布模式)和回滚
集中化配置管理和密钥管理
存储编排,支持外挂存储并对外挂存储资源进行编排
任务批处理运行
K8S是属于主从设备模型(Master-Slave 架构),即有Master 节点负责集群的调度、管理和运维,slave 节点是集群中的运算工作负载节点。
在k8s中,主节点一般被称为Master 节点,而从节点则被称为Worker Node节点,每个Node都会被Master分配一些工作负载。
Master组件可以在群集中的任何计算机上运行,但建议Master节点占据一个独立的服务器。因为Master 是整个集群的大脑,如果Master所在节点宕机或不可用,那么所有的控制命令都将失效。除了Master,在K8S集群中的其他机器被称为Worker Node节点,当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上去。
核心组件
kubectl (管理员入口)
Kube-apiserver
kube-controller-manager
运行管理控制器,是k8s集群中处理常规任务的后台线程,是k8s集群里所有资源对象的自动化控制中心。
在k8s集群中,一个资源对应一个控制器,而Controller manager 就是负责管理这些控制器的。
由一系列控制器组成,通过API Server监控整个集群的状态,并确保集群处于预期的工作状态,比如当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
这些控制器主要包括:
控制器 | 功能 |
---|---|
NodeContrpller(节点控制器) | 负责在节点出现故障时发现和响应。 |
Replication Controller ( 副本控制器) | 负责保证集群中一个RC (资源对象Replication Controller) 所关联的Pod副本数始终保持预设值。可以理解成确保集群中有且仅有N个Pod实例,N是RC中定义的Pod副本数量。 |
Endpoints Controller (端点控制器) | 填充端点对象(即连接Services 和Pods) ,负责监听Service 和对应的Pod 副本的变化。可以理解端点是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的endpoint。 |
Service Account & Token Controllers (服务帐户和令牌控制器) | 为新的命名空间创建默认帐户和API访问令牌。 |
ResourceQuotaController(资源配额控制器) | 确保指定的资源对象在任何时候都不会超量占用系统物理资源。 |
Namespace Controller (命名空间控制器) | 管理namespace的生命周期。 |
Service Controller (服务控制器) | 属于K8S集群与外部的云平台之间的- -个接口控制器。 |
Kube- scheduler
●预算策略( predicate )
●优选策略(priorities )
etcd
Kubelet
Kube-Proxy
在每个Node节点上实现Pod网络代理,是Kubernetes Service 资源的载体,负责维护网络规则和四层负载均衡工作。
负责写入规则至iptables、 ipvs实现服务映射访问的。
Kube-Proxy本身不是直接给Pod提供网络,Pod 的网络是由Kubelet 提供的,Kube-Proxy 实际上维护的是虚拟的Pod集群网络。
Kube-apiserver通过监控Kube-Proxy 进行对Kubernetes Service的更新和端点的维护。
在K8S集群中微服务的负载均衡是由Kube-proxy实现的。Kube-proxy是K8S集群内部的负载均衡器。它是一个分布式代理服务器,在K8S的每个节点上都会运行一个Kube-proxy 组件。
docker或rocket
容器之间可以通过localhost访问,容器之间相互共享数据,可以挂载同一个数据卷
不同容器不能通过localhost访问,不能挂载同一个数据卷
控制器 | 说明 |
---|---|
Deployment | 无状态应用部署。Deployment 的作用是管理和控制Pod 和ReplicaSet, 管控它们运行在用户期望的状态中。 |
Replicaset | 确保预期的Pod 副本数量。ReplicaSet 的作用就是管理和控制Pod, 管控他们好好干活。但是,Replicaset 受控于Deployment。 |
Daemonset | 确保所有节点运行同一类Pod,保证每个节点上都有一一个此类Pod运行,通常用于实现系统级后台任务。 |
Statefulset | 有状态应用部署 |
Job | 一次性任务。根据用户的设置,Job 管理的Pod把任务成功完成就自动退出了。 |
Cronjob | 周期性计划性任务 |
与Label 类似的,还有Annotation (注释) 区别在于有效的标签值必须为63个字符或更少,并且必须为空或以字母数字字符( [a-z0-9A-Z])开头和结尾,中间可以包含横杠(-)、下划线(_)、点(.)和字母或数字。注释值则没有字符长度限制。
Service就是用来解决这个问题的核心概念。
- Service是K8S 服务的核心,屏蔽了服务细节,统一对外暴露服 务接口,真正做到了“微服务”。比如我们的一个服务A,部署了3个副本,也就是3个Pod;
对于用户来说,只需要关注一.个Service的入口就可以,而不需要操心究竞应该请求哪一 个Pod。- 优势非常明显:一方面外部用户不需要感知因为Pod上服务的意外崩溃、K8S重新拉起Pod 而造成的IP变更,外部用户也不需要感知因升级、变更服务带来的Pod替换而造成的IP变化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。