Kubernetes(1) 快速搞懂K8S的基础概念

快速搞懂K8S的基础概念

Kubernetes是Google团队发起的开源项目,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩,主要实现语言为Go语言。

Kubernetes构建与Google数十年经验,一大半来源于Google生产环境规模的经验。结合了社区最佳的想法和实践。

在分布式系统中,部署,调度,伸缩一直是最为重要的也最为基础的功能,Kubernetes就是希望解决这一序列的问题的。

一、什么是Kubernetes
Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到‘ks’这个词,也就是“K8S”,它是通过8个字母“ubernete”替换为“8”而导致的一个缩写。
Kubernetes为什么要用“舵手”来命名呢?比如:这是一艘载着一堆集装箱的轮船,轮船在大海上云这集装箱奔波,把集装箱送到它们该去的地方。之前其实有一个概念叫做 container,container这个英文单词也有另外一个意思就是“集装箱”。Kubernetes也就借着这个寓意,希望成为运送集装箱的一个轮船,来帮助我们管理这些集装箱,也就是管理这些容器。
这个就是为什么会选用Kubernetes这个词来代表这个项目的原因。更具体一点来说:Kubernetes是一个自动化的容器编排平台,它负责应用的部署、应用的弹性以及应用的管理,这些都是基于容器的。

二、Kubernetes的核心功能
1、服务发现与负载的均衡;
2、容器的自动装箱,我们也会把它叫做scheduling,就是“调度”,把一个容器放到一个集群的某一个机器上,Kubernetes会帮助我们去做存储的编排,让存储的声明周期与容器的生命周期能有一个链接;
3、Kubernetes会帮助我们去做自动化的容器的恢复。在一个集群中,经常会出现宿主机的问题或者说是0S的问题,导致容器本身的不可用,Kubernetes会自动地对这些不可用的容器进行恢复;
4、Kubernetes会帮助我们去做应用的自动发布与应用的回滚,以及与应用相关的配置密文的管理;
5、对于Job类型任务,Kubernetes可以去做批量的执行;
6、为了让这个集群、这个应用更富有弹性,Kubernetes也支持水平的伸缩。

三、Kubernetes的架构
Kubernetes架构是一个比较典型的二层架构和Server-Client架构。Master作为中央的管控节点,会去与Node进行一个连接。
所有UI的、clients、这些user侧的组件,只会和Master进行连接,把希望的状态或者想执行的命令下发给Master,Master会把这些命令或者状态下发给相应的节点,进行最终的执行。

Kubernetes的Master包含四个主要的组件:API Server、Controller、Scheduler以及etcd。
1、API Server:顾名思义是用来处理API操作的,Kubernetes中所有的组件都会和API Server进行连接,组件与组件之间一般不进行独立的连接,都依赖于API Server进行消息的传送;
2、Controller:是控制器,它用来完成对集群状态的一些管理、比如第一个自动对容器进行修复、第二个自动进行水平扩张,都是由Kubernetes中的Controller来进行完成的;
3、Scheduler:是调度器,“调度器”顾名思义就是完成调度的操作,就是把一个用户提交的Container,根据它对CPU、对memory请求大小,找一台合适的节点,进行放置;
4、etcd: 是一个分布式的一个存储系统,API Server中所需要的这些原信息都被放置在etcd中,etcd本身是一个高可用系统,通过etcd保证整个Kubernetes的Master组件的高可用性。

四、Kubernetes的组件
Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件;
1、Kubernetes API Server
作为Kubernetes系统的入门,其封装了核心对象的增删改查操作,以RESTful API借口方式提供给外部客户和内部组件调用。维护的REST对象持久化到Etcd中存储。
2、Kubernetes Scheduler
为新建立的Pod进行节点(node)选择(及分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器。
3、Kubernetes Controller
负责执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。
4、Replication Controller
管理维护Replication Controller,关联Replication Controller 和 Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。
5、Node Controller
管理维护Node,定期检查Node的监控状态,标识出(失效|未失效)的Node节点。
6、Namespace Controller
管理维护Namespace,定期清理无效的Namespace,包括Namespace下的API对象,比如Pod、Service等。
7、Service Controller
管理维护Service,提供负载以及服务代理。
8、EndPoints Controller
管理维护EndPoints ,关联Service和Pod,创建EndPoints 为Service的后端,当Pod发生变化时,实时更新EndPoints。
9、Service Account Controller
管理维护Service Account,为每个Namespace创建默认的Service Account,同事为Service Account创建Service Account Secret。
10、Persistent Volume Controller
管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。
11、Daemon Set Controller
管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。
12、Deployment Controller
管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和Pod的更新。
13、Job Controller
管理维护Job,为Job创建一次性任务Pod,保证完成Job执行完成的任务数目
14、PodAutoscaler Controller
实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时进行Pod的伸缩动作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值