基于Kubernetes v1.25.0和Docker部署高可用集群(说明篇)

news2024/11/16 11:57:53

目录描述

  • Kubernetes组件说明

  • 特定接口CRI、CNI、CSI

  • Kubernetes v1.25集群创建方案选择

一、Kubernetes组件说明

Docker 的运行机制

运行机制详解:
  • docker client:命令行输入的docker命令就是一个docker客户端

  • docker Engine:Engine也就是引擎,client与Engine间有一定的连接接口

  • containterd:docker引擎去调用containterd,再去连接到containterd-shim(中间的一个切片/垫片类似),再去连接到runC,再去运行containter(也就起容器)

  • 其中containterd和runC组成了docker的运行环境,叫做容器运行时,以上是docker运行的基本框架

补充说明:docker与kubernetes的区别是:docker是管理当前主机上的容器,k8s是管理多台主机、跨平台的分布式管理系统。Kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能。

kubernetes核心组件:

k8s master节点:提供控制功能,完成领导性的任务
  • kube-APIserver:相当于对外的总联络中心,对外提供一个总的接口,所以外部访问都要通过apiserver

  • etcd:数据库,存储相关的k8s资源

  • kub-Scheduler:计划调度器,把k8s的各种工作下发给具体来完成任务的node节点

  • kub-controller-Manager:控制器,网络控制器、卷控制器、服务控制器、node控制器等,来管理各种资源

k8s node节点:提供工作能力,来执行实际的工作任务
  • kubelet:作为连接master和node间的桥梁,接受来自master的下发任务,负责维护pod和容器的生命周期

  • kub-proxy:实现pod网络代理,是service的透明代理兼四层负载均衡功能,核心能力将service的访问请求转发到后端多个pod实例上

二、特定接口CRI、CNI、CSI

Kubernetes提供了三个特定功能的接口,kubernetes通过调用这几个接口,来完成相应的功能。

1. 容器运行时接口CRI: Container Runtime Interface

kubernetes 对于容器的解决方案,只是预留了容器接口,只要符合CRI标准的解决方案都可以使用。CRI容器运行时,早期和主流的是docker,后经生态发展,目前其他的也有多种了,比如containerd,dokcer不再是唯一选择

2. 容器网络接口CNI: Container Network Interface

kubernetes 对于网络的解决方案,只是预留了网络接口,只要符合CNI标准的解决方案都可以使用。CNI容器网络接口:通过跨网络与容器进行通信,依赖于网络插件实现能力,如Flannel、calico

3. 容器存储接口CSI: Container Storage Interface

kubernetes 对于存储的解决方案,只是预留了存储接口,只要符合CSI标准的解决方案都可以使用此接口非必须。应对不同的存储类型提供接口,让工作节点把数据在某个地方做持久化保存

补充说明:容器运行时接口(CRI),是kubernetes定义的一组gRPC服务。Kubelet作为客户端,基于gRPC协议通过Socket和容器运行时通信。CRI 是一个插件接口,它使 kubelet 能够使用各种容器运行时,无需重新编译集群组件。Kubernetes 集群中需要在每个节点上都有一个可以正常工作的容器运行时, 这样 kubelet 能启动 Pod 及其容器。容器运行时接口(CRI)是 kubelet 和容器运行时之间通信的主要协议。

CRI包括两类服务:镜像服务(Image Service)和运行时服务(Runtime Service)

  • 镜像服务提供下载、检查和删除镜像的远程程序调用

  • 运行时服务包含用于管理容器生命周期,以及与容器交互的调用的远程程序调用。

OCI(Open Container Initiative,开放容器计划)定义了创建容器的格式和运行时的开源行业标准,包 括镜像规范(Image Specification)和运行时规范(Runtime Specification)

市面上常用的容器引擎有很多,dockershim, containerd 和cri-o都是遵循CRI的容器运行时

补充说明:什么是容器运行时:如下

简单来说,就是一个程序运行的集合,程序运行都需要一套环境,例如Java要运行,就需要台Jvm,Jvm就提供了Java程序运行的环境;

所对应的还有“编译时”,和“运行时”不在一个阶段。比如某程序开发出来是源码,要将其编译成可以执行的二进制,这称为“编译时”;最终将二进制运行起来,这叫做“运行时”

三、Kubernetes v1.25集群创建方案选择

方式1: Docker

Docker使用的普及率较高,虽然Kubernetes-v1.24 默认情况下废弃了kubelet对于Docker的支持,但是我们还可以借助于Mirantis维护的cri-dockerd插件方式来实现Kubernetes集群的创建。

Docker Engine 没有实现 CRI, 而这是容器运行时在 Kubernetes 中工作所需要的。为此,必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目, 它在 1.24 版本从 kubelet 中移除

项目站点: https://github.com/Mirantis/cri-dockerd

方式2: Containerd

默认情况下,Kubernetes在创建集群的时候,使用的就是Containerd 方式。

方式3: CRI-O

CRI-O的方式是Kubernetes创建容器最直接的一种方式,在创建集群的时候,需要借助于cri-o插件的方式来实现Kubernetes集群的创建。


最后~欢迎关注我! @Linux学习的那些事儿

我的个人资源整理,满满都是干货: → 可按需访问领取

200T免费资料,持续发布中... 

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java: 死锁问题详解(5000字)

文章目录 死锁的出现场景1. 一个线程一把锁,这个线程针对这把锁,连续加锁了两次2. 两个线程,两把锁3. N个线程 , M个锁4. 内存可见性为什么会出现内存可见性问题呢?解决方法 volatile关键字 总结synchronized:死锁的四个必要条件(缺一不可)[重点]:内存可见性问题: 死锁的出现场…

PCL安装与配置(PCL1.9.1+MSVC2017)

为了和我的VS的版本VS 2017对应,PCL下载的也是msvc_2017,PCL msvc2017最新的则是1.901版本,我们就以PCL 1.9.1为例了。(如果你的vs是2019和2022,一定要注意PCL的版本)。 一、下载PCL 我们打开PCL的github下载地址&am…

GDB调试器

GDB调试器 GDB的主要功能 常见命令 3、实战 1、生成能调试的执行文件(一定要加-g) 第一个是不能调试的 第二个这样加了-g才能进行调试 如果没加-g 执行gdb 执行文件(会报下面这个 ) 像这样才是正常的 执行 gdb a_yes_g 这…

SSM计算机组成原理课程平台-计算机毕设定制-附项目源码(可白嫖)50168

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

金融行业到底该选择什么样的FTP替代方案?

2018年以来,受“华为、中兴事件”影响,我国科技尤其是上游核心技术受制于人的现状对我 国经济发展提出了严峻考验。在全球产业从工业经济向数字经济升级的关键时期,中国明确 “数字中国”建设战略, 抢占数字经济产业链制高点。 在…

Python开发工具PyCharm入门指南 - 用户界面主题更改

JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发。 界面主题定义了窗口、对话框、按钮和用户界面的所有可视元素的外观…

vscode开发avalonia

安装 安装.net 8 安装avalonia模板 dotnet new install Avalonia.Templates创建项目 dotnet new avalonia.app -o GetStartedApp安装c# dev kit插件和Avalonia for VSCode Community dotnet run运行 修改代码 MainWindow.axaml <Window xmlns"https://githu…

企业层面经济政策不确定性感知数据(2001-2023年)

1.指标介绍 企业经济政策不确定性感知指的是企业在面对政府经济政策变动时所感受到的风险和不确定性程度&#xff0c;这种感知会影响企业的投资决策、生产计划和市场策略 文章根据上市公司披露的MD&A文本&#xff0c;提取指标衡量企业个体面临的经济政策不确定性。 2.参…

了解线性回归、岭回归和套索回归

逐步对 Linear、Ridge 和 Lasso 回归进行数学理解。 ​ LASSO&#xff08;左&#xff09;和岭回归&#xff08;右&#xff09;的约束区域 一、说明 在本文中&#xff0c;我们将深入探讨机器学习中两种基本正则化技术的基础和应用&#xff1a;Ridge 回归和 Lasso 回归。这些方…

脊髓损伤小伙伴的活力重启秘籍! 让我们一起动起来,拥抱不一样的精彩生活✨

Hey小伙伴们~&#x1f44b; 今天咱们来聊聊一个超级重要又温暖的话题——脊髓损伤后的锻炼大法来啦&#xff01;&#x1f389; 记住&#xff0c;无论遇到什么挑战&#xff0c;我们都要像打不死的小强一样&#xff0c;活力满满地面对每一天&#xff01;&#x1f4aa; 首先&#…

基础进阶-搭建pxe网络安装环境实现服务器自动部署

目录 原理解释 ​编辑 开机界面解释 搭建步骤 下载环境需要用到的基本程序 查看帮助 帮助内容解释 环境搭建 修改 DHCP 修改 default 文件 测试 原理解释 开机界面解释 在开机界面中&#xff0c;圈起来的部分显示的就是光盘&#xff0c;我们需要将光盘转换成网络的 在…

.NET内网实战:模拟Installer关闭Defender

01基本介绍 02编码实现 原理上通过Windows API函数将当前进程的权限提升至TrustedInstaller&#xff0c;从而实现了对Windows Defender服务的控制。通常可以利用Windows API中的OpenSCManager、OpenProcessToken、ImpersonateLoggedOnUser以及ControlService等函数协同工作&am…

Modbus-Ascii详解

目录 Modbus-Ascii详解 Modbus-Ascii帧结构 LRC效验 将数据字节转成ASCII 将返回帧转为数据字节 Modbus-Ascii的实现 使用NModbus4实现Modbus-Ascii 实例 Modbus-Ascii详解 Modbus ASCII是一种将二进制数据转换为可打印的ASCII字符的通信协议&#xff0c;‌每个8位数据需要两…

WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)

VirtualizingStackPanel虚拟化元素 VirtualizingStackPanel 类&#xff08;虚拟化元素&#xff09;和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类&#xff0c;而这个VirtualizingPanel抽象类继承…

AI基础架构-NVLink 技术详解

AI Infra 基础知识 - NVLink 入门 NVLink&#xff0c;一种专有互连硬件&#xff0c;实现Nvidia GPU与CPU之间的高效、一致数据和控制传输&#xff0c;提升多GPU系统性能。 概述 NVLink 于 2014 年初发布&#xff0c;旨在作为 PCI Express 的替代解决方案&#xff0c;具有更…

Java零基础之多线程篇:线程同步

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Java13.0标准之重要特性及用法实例(二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

【第三版 系统集成项目管理工程师】第9章 项目管理概论

持续更新。。。。。。。。。。。。。。。 【第三版】第九章 项目管理概论 9.1 PMBOK的发展9.2 项目基本要素9.2.1项目基础 P3041.独特的产品、服务或成果-P3042.临时性工作-P3043.项目驱动变更-P3054.项目创造业务价值-P3055.项目启动背景-P306 9.2.2项目管理 P3069.2.2 项目管…

AQS的ReentrantLock源码

什么是AQS&#xff08;全称AbstractQueuedSynchronizer&#xff09; 代表&#xff1a;重入锁、独占锁/共享锁、公平锁/非公平锁 是JUC包中线程阻塞、阻塞队列、唤醒、尝试获取锁的一个框架 AbstractQueuedSynchronizer是全称&#xff0c;是一个模板模式&#xff0c;一些线程…

深入理解Java的内存管理机制

文章目录 1. 程序计数器 (Program Counter Register)2. Java虚拟机栈 (Java Virtual Machine Stack)3. 本地方法栈 (Native Method Stack)4. 堆 (Heap)a. 年轻代 (Young Generation)b. 老年代 (Old Generation) 5. 方法区 (Method Area)6. 运行时常量池 (Runtime Constant Pool…