【Kubernetes(K8S)】学习记录一:概念总结


前言-背景

容器是捆绑和运行应用程序的好方法。在生产环境中,您需要管理运行应用程序的容器并确保没有停机时间。例如,如果容器发生故障,则需要启动另一个容器。如果系统处理这种行为会不会更容易?

这就是Kubernetes拯救的方式!Kubernetes为您提供了一个弹性运行分布式系统的框架。它负责您的扩展要求,故障转移,部署模式等。

1、什么是Kubernetes?

Kubernetes简称K8S,是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明性配置和自动化。它拥有庞大,快速发展的生态系统。Kubernetes服务,支持和工具广泛可用。

Kubernetes为您提供:

  • 服务发现和负载平衡
  • 存储编排
  • 自动部署和回滚
  • 自动装箱
  • 自我修复
  • 密钥和配置管理

Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。下面这张图是Kubernetes的架构图:
在这里插入图片描述

2、Kubernetes组件

Kubernetes主要由以下几个核心组件组成:

  • etcd 保存了整个集群的状态;
  • apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime 负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡;
2.1、集群

简单的说是:多个人在一起做同样的事

集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

2.2、分布式

简单的说是:多个人在一起做不同的事
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。

2.3、etcd

所有master的持续状态都存在etcd的一个实例中。这可以很好地存储配置数据。因为有watch(观察者)的支持,各部件协调中的改变可以很快被察觉。

一致且高度可用的键值存储,用作Kubernetes的所有群集数据的后备存储。

2.4、Node

节点,是Kubernetes中的工作机器,以前称为a minion。节点可以是VM或物理机,具体取决于集群。每个节点都包含运行pod所需的服务,并由主组件管理。节点上的服务包括容器运行时,kubelet和kube-proxy。

目前,有三个组件与Kubernetes节点接口交互:节点控制器,kubelet和kubectl

2.5、Pod

pod,是Kubernetes应用最小,最简单的在创建或部署Kubernetes对象模型单元的基本执行单元。Pod表示在集群上运行的进程。

Kubernetes集群中的Pod可以以两种主要方式使用:

  • 运行单个容器的Pod
  • 运行多个需要协同工作的容器的Pod

Pod旨在支持多个协作流程(作为容器),形成一个有凝聚力的服务单元。Pod中的容器自动位于群集中的同一物理或虚拟机上,并共同调度。容器可以共享资源和依赖关系,彼此通信,并协调它们何时以及如何终止

2.6、Controller Manager

Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

2.7、kube-proxy

kube-proxy是在集群中的每个节点上运行的网络代理,实现Kubernetes 服务的一部分将一组Pod上概念。

kube-proxy维护节点上的网络规则。这些网络规则允许通过群集内部或外部的网络会话与Pod进行网络通信。

kube-proxy使用操作系统数据包过滤层(如果有)并且可用。否则,kube-proxy会转发流量本身

2.8、kubelet

kubelet负责管理pods和它们上面的容器,images镜像、volumes、etc。

2.9、Scheduler

调度器把未调度的pod通过binding api绑定到节点上。调度器是可插拔的,并且我们期待支持多集群的调度,未来甚至希望可以支持用户自定义的调度器。

2.10、Container Runtime

Runtime指的是容器运行环境.

Kubernetes支持多个容器运行时:Docker, containerd,cri-o, rktlet以及Kubernetes CRI(容器运行时接口)的任何实现

2.11、 CRD(CustomResourceDefinition)自定义资源

CustomResourceDefinition(CRD)是 v1.7 新增的无需改变代码就可以扩展 Kubernetes API 的机制,用来管理自定义对象。

2.12 、APIServer

APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd

3、各组件之间的关系图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、学习网址

官网:
https://kubernetes.io/
K8S中文社区:
https://www.kubernetes.org.cn/k8s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值