【k8s】Kubernetes初步

1、k8s架构图绘制

在这里插入图片描述

2、k8s工作流程图绘制

在这里插入图片描述

为了帮助您绘制Pod创建过程的时序图,我将使用Markdown语法来描述这个过程。由于Markdown本身并不直接支持时序图的绘制,我们可以使用简单的文本和列表来模拟时序图的结构。下面是一个简化版的Pod创建过程的Markdown描述:

Pod 创建的时序图

  1. 用户发起创建Pod请求

    • kubectl create pod <pod-definition>
  2. API Server 接收请求

    • 验证请求
    • 将Pod定义存储到Etcd
  3. Controller Manager 被通知

    • 如果Pod由某个Controller管理,则Controller Manager会处理Pod的创建逻辑
  4. Scheduler 选择节点

    • 根据资源需求、亲和性/反亲和性等策略选择合适的节点
    • 将Pod绑定到选定的节点
  5. kubelet 收到Pod绑定信息

    • 从API Server获取Pod的最新状态
    • 下载容器镜像(如果尚未下载)
    • 创建容器
    • 启动容器
  6. kubelet 监控容器状态

    • 定期检查容器健康状况
    • 更新Pod状态到API Server
  7. API Server 更新Pod状态

    • 存储最新的Pod状态到Etcd

在这里插入图片描述

3、什么是Kubernetes

它是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本。Borg是谷歌内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。

环境不一致使得应用部署出现了各种问题,从而产生了Docker容器来解决应用部署的问题。而大集群上容器的部署、伸缩和管理的各种问题,衍生出来了容器编排引擎,比较出名的有K8S(Kubernetes) 和 Docker Swarm。

Kubernetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境的容器编排,Kubernetes名字太长了,叫起来有点麻烦,而Kubernetes首字母与结尾字母之间有8个字母,因此被称作K8S。

如果我们使用Kubernetes:

1、与业务无关的底层代码或功能模块,都可以立刻从我们的视线中消失

2、不必再费心于负载均衡器的选型和部署实施问题

3、不必再考虑引入或自己开发一个复杂的服务治理框架

4、不必再头疼于服务监控和故障处理模块的开发

K8S 部署方式演变

随着互联网的发展,在应用程序部署方式上主要经历了三个时代:

  • 1.传统部署:互联网早期,会直接将应用程序部署在物理机上

优点:简单,不需要其它技术的参与

缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响

  • 2.虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境

优点:程序环境不会相互产生影响,提供了一定程度的安全性

缺点:增加了操作系统,浪费了部分资源

  • 3.容器化部署:与虚拟化类似,但是共享了操作系统

优点:

可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等

运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦

容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署

4、Kubernetes作用

Kubernetes提供了完善的管理工具(开发、部署、测试、运维、监控)因此,Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式完备的分布式系统开发和支撑平台。

Kubernetes同时具有完备的集群管理能力:

1、故障自愈

2、服务发现与负载均衡

3、自动部署与回滚

4、自动伸缩(扩容与缩容)

5、Kubernetes基本组成

1、Master

Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集群的管理和控制,基本上Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后面执行的所有命令基本都是在Master上运行的

Master上运行的核心组件:

Kubernetes API Server
(kube-apiserver):

提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程。

Kubernetes Controller Manager
(kube-controller-manager):

Kubernetes里所有资源对象的自动化控制中心,可以将其理解为资源对象的“大总管”。

Kubernetes Scheduler
(kube-scheduler):

负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”。

2、Node

Node是Kubernetes集群中的工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上。

Node上运行的核心组件:

kubelet:

负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。

kube-proxy:

实现Kubernetes Service的通信与负载均衡机制的重要组件。

3、Etcd

etcd 的官方将它定位成一个可信赖的分布式键值存储服务,保存了整个集群的状态,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。

4、Pod

Pod是Kubernetes最重要的基本概念,我们看到每个Pod都有一个特殊的被称为“根容器”的Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器。

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值