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具体是怎么创建的呢?参考如下:

原文地址:https://cloud.tencent.com/developer/article/2158036

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340