k8s基础

一. 容器、虚拟机概念

在这里插入图片描述

特性容器虚拟机
启动速度秒级分钟级
性能接近原生较弱,表现有限
内存消耗很小较多
硬盘消耗MB级别GB级别
运行密度单机最大支持上千容器单机一般支持几十个
隔离性安全安全
迁移性优秀一般

二. Docker,镜像、容器

Docker是一个开源的应用容器引擎,可以让开发者打包应用及依赖包到一个可移植的镜像中,发布到Linux/Windows机器上

  1. 镜像:是一个文件的副本,可以被特定的软件/硬件识别。是一个可执行的程序,静态的概念。
  2. 容器:是通过执行镜像文件生成的。是动态的概念。可以通过镜像运行生成多个容器。iso镜像文件可以运行生成在多个操作系统也就是容器。

三. Kubernetes

Kubernetes, 即K8S

  1. 背景:
    从上文我们了解了以Docker为首的容器化技术,解决了因环境、配置及程序本身不同而造成的各种部署配置的问题,Docker 将它们统一在容器镜像之上。部署的复杂度虽然解决了,但是在生产环境中,会涉及到多个容器,这些容器必须跨多个服务器主机进行部署。随着用户使用越来越多的容器进行封装和运行应用程序,必将会导致容器的管理和编排变得更加困难,不得不对容器实施分组,以便跨所有容器提供网络、安全、监控等服务,所以容器编排系统应需而生。

  2. K8S的概念
    K8S是用来对docker容器进行管理和编排的工具,一个基于docker构建的调度服务,可以提供资源调度、均衡容灾、服务注册、动态扩容等能力。一个具体的Kubernetes集群包含一个Master节点和一群Node节点,Master节点负责管理和控制,Node节点是工作负载节点,里面是具体的容器,每个容器中部署的是具体的服务,如下图所示。

在这里插入图片描述

四. Master节点

主要由四部分组成:API Server、Scheduler、Controller Manager、Etcd,具体作用如下:

  1. API Server: 可以理解为整个集群的对外接口,它提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据

  2. Scheduler:负责集群内部的资源调度,如负责某个请求的Pod到某个Node节点上。在调度时,

  3. Controller Manager:负责管理集群的各种资源,保证资源处于预期的状态。它由多种分别管理各类资源

  4. Etcd:负责保存K8S集群的配置信息和各种资源的状态信息,当数据发生变化时,Etcd会快速的通知K8S相关组件。

五. Node节点

主要是由Pod、kubelet、kube-proxy、Docker、Fluentd等部分组成,各部分的具体作用如下:

Pod:Pod是Kurbernetes进行创建、调度和管理的最小单位,一个pod由一个或多个容器组成,pod中共享存储和网络,在同一个Docker主机上运行。pod内部可以运行一个或多个容器,一般情况下为了便于管理,一个pod下只运行一个容器。Kubernetes不会直接管理容器,而是管理Pod。Pod的作用是管理线上运行的应用程序,在通常情况下,在服务上线部署时,Pod通常被用来部署一组相关的服务,即一个调用链上的服务。

kubelet: kubelet是Master在Node节点上的代理,每个Node节点都会启动一个kubelet进程,用来处理Mater节点下发到Node节点的任务,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、管理Pod生命周期、获取容器和节点的状态等工作。当Scheduler确定某个Node上运行Pod之后,会将Pod的具体配置信息发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向Master报告运行状态。

kube-proxy: 负责负载均衡、路由转发,具体来说,其负责将访问service的TCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡。Proxy是为了解决外部网络能够访问跨机器集群中容器提供的应用服务而设计的,运行在每个Node上。Proxy提供TCP/UDP sockets的proxy,每创建一种Service,Proxy主要从etcd获取Services和Endpoints的配置信息(也可以从file获取),然后根据配置信息在Minion上启动一个Proxy的进程并监听相应的服务端口,当外部请求发生时,Proxy会根据Load Balancer将请求分发到后端正确的容器处理。

Docker/Container Runtime:运行容器的引擎,Pod内部运行的都是具体的容器,这个容器是由Docker引擎创建的,Docker引擎是node节点的基础服务。(补充:Docker 运行时在 Kubernetes 的2021年底发布1.23版本中被移除,不再被支持,需要切换到其他符合标准的容器运行时,如 containerd或 CRI-O。)

Fluentd:提供集群日志采集、存储与查询的功能。

介绍完Master和Node它们分别的组件,我们知道了Pod是K8S创建、调度和管理的最小单位,那么一个Pod具体是怎么创建的呢?参考如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爽朗地狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值