草庐IT

【K8S系列】深入解析 k8s:入门指南(一)

颜淡慕潇 2023-04-14 原文

目录

序言

1.背景介绍

2.前情提要

2.1 架构对比

2.2 容器技术

2.3 容器技术的优点

2.4 容器编排

3 K8S介绍

3.1 K8S是什么

3.2 K8S设计思想

 3.3 K8S的优势

序言

任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。

今天学习一下K8s入门相关内容,希望此文,能帮助读者对K8s有一个初步的了解

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

1.背景介绍

k8s本身是一个很庞大的技术,读完这篇文章,希望你能在以下四个方面有一定的了解::

  • 了解容器技术、k8s、各大厂商使用k8s的情况
  • 理解掌握k8s的核心对象、架构层面
  • 掌握k8s的安装方式
  • k8s常见问题的解决方案

2.前情提要

在真正介绍k8s之前,需要先讲一下 架构对比和容器技术

2.1 架构对比

我们先一起看下单体架构

这张图是单体架构,那单体架构它有一个什么样的特点呢?

单体架构最早期,如果要开设一个网站,在这种架构下面,所有的业务逻辑都是在一起,那么这种紧偶合的应用架构会导致,随着业务复杂性提升,整个网站的维护成本会变得很高,有时候可能会因为改一点功能,就牵一发动全身,维护成本极高

那么怎么解决这个问题呢?

可以看到,业界在架构层面一直在不断地探索。从单体应用,到分布式,到微服务到k8s到service mesh。这都是探索出来的一些方案。今天我们看下微服务

看下这张图一个应用系统,它被切分成了很多微服务,比如,我们修改某个服务里面的业务逻辑,只需要发布这个服务即可,其他服务不会受到影响

问题1:

但是,虽然说微服务解耦了系统复杂性,但是在另一个层面上也带来了一个挑战问题,就是微服和微服之间如何互相通讯,服务如何部署、管理。就变成了一个需要解决的问题

怎么解决的呢,肯定是解决了,而且还有很多方案,容器技术就是其中一种。

如果从 2013 年 Docker 项目发布开始算起,这次变革也不过 10 年时间。容器技术,就已经完全重塑了整个云计算市场的形态。

它不仅催生出了一批容器技术人,更培育出了一个有相当规模的开源技术市场。因此很多公司都争相把容器和 Kubernetes 项目树立为战略重心之一。

容器技术为什么这么受欢迎?容器技术是什么?

讲容器技术之前,先思考一下这个问题

问题2:

在paas阶段,平台已经被包装成一个服务了,那用户如何使用这个服务,如何把自己的应用打包放到paas平台,这是paas需要解决的用户层面的问题。我们带着这个问题,来看下容器技术。

2.2 容器技术

想到容器技术,首先会想到Container这个单词,它直译过来,是容器,集装箱,货柜

其实容器技术是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把我们的应用“装”起来的一种技术。

这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,

容器技术的核心功能:是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。进而为每个应用创造了独立的运行空间

那他底层是如何实现的呢?是使用Linux 容器最基础的两种技术:Namespace 和 Cgroups

  • Namespace:作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”
  • Cgroups :作用是“限制”,它给这个“世界”围上了一圈看不见的墙

这么一折腾,进程就真的被“装”在了一个与世隔绝的房间里,而这些房间就是 PaaS 项目赖以生存的应用“沙盒”。

我们回忆一下刚刚说的那个paas如何给应用打包问题,这样是不是就已经解决了?对,就是解决了!

这也是 Docker 项目刚刚开源不久,就能够带领一家原本默默无闻的 PaaS 创业公司脱颖而出,又迅速占领了所有云计算领域头条的技术原因。

总结下,我们可以简单理解为,容器,就是一种特殊的进程。

2.3 容器技术的优点

 容器技术有以下优点:

  1.  一致的运行环境
  2.  更高效的利用系统资源
  3.  更快速的启动时间
  4.  持续交付和部署
  5.  更轻松的迁移
  6. 更轻松的维护和扩展

总结下来:安全性、隔离性、便携性、可配额

举个例子,一致的运行环境。主要是指:因为云端与本地服务器环境不同,应用的打包过程,一直是使用 PaaS 时最“痛苦”的一个步骤

但有了容器之后,更准确地说,有了容器镜像之后,这个问题被非常优雅地解决了。

另外,因为容器是一个特殊的进程,他更小了,所以资源利用率和启动时间变得更高更快了。

2.4 容器编排

随着互联网需求的爆发,服务暴增,出现了容器编排,而且容器从最开始一个开发者手里的小工具,一跃成为了云计算领域的绝对主角这也标志着它真正得到了市场和生态的认可

能够定义容器组织和管理规范的“容器编排”技术,就当仁不让地坐上了容器技术领域的“头把交椅”。

这其中,最具代表性的容器编排工具,属于:

 1. Docker 公司的 Compose+Swarm 组合

 2. Google 与 RedHat 公司共同主导的 Kubernetes 项目

3 K8S介绍

3.1 K8S是什么

有了前面内容的铺垫,现在我们来正式看下Kubernetes 是什么吧

他简称k8s,是谷歌开源的容器集群管理系统,他的前身Borg是一直以来都被誉为 Google 公司内部最强大的“秘密武器”。

这个说法,虽然有些夸张,但不算是吹牛可以看到,上图中,Borg处于架构最底层。

可以说:Borg 项目是谷歌内部整个基础设施技术栈的最底层,他是承载 Google 公司整个基础设施的核心依赖

所以,Kubernetes 从一开始就比较幸运地站在了一个他人难以企及的高度:

而且在它的成长阶段,这个项目每一个核心特性的提出,几乎都脱胎于 Borg 系统的设计与经验。

更重要的是,这些特性在开源社区落地的过程中,又在整个社区的合力之下得到了极大的改进,修复了很多当年遗留在 Borg 体系中的缺陷和问题

可以说,在某些功能层面,他比Borg更强大一些

Kubernetes 项目的本质:是为用户提供一个具有普遍意义的容器编排工具

它着重解决的问题是:大规模集群中的各种运行任务之间的关系处理,这些关系的处理,是作业编排和管理系统最困难的地方。

其能力有:

基于容器的应用部署、维护和滚动升级

负载均衡和服务发现

跨机器和跨地区的集群调度

自动伸缩

无状态服务和有状态服务

插件机制保证扩展性

3.2 K8S设计思想

Kubernetes 项目最主要的设计思想:从更宏观的角度,以统一的方式来定义任务之间的各种关系,并且为将来支持更多种类的关系留有了很多余地

而且,从一开始,Kubernetes 项目就没有像同时期的各种“容器云”项目那样,把 Docker 作为整个架构的核心,而仅仅把它作为最底层的一个容器运行时实现

它真正的价值,在于提供了一套基于容器构建分布式系统的基础依赖。这也是k8s能长久发展的一个原因

可以从这四个方面了解一下:

可扩展性

• 基于微服务部署应用

• 横向扩容缩容

• 自动扩容缩容

高可用

• 基于replicaset,statefulset 的应用高可用

• Kubernetes 组件本身高可用

可移植性

• 多种 host Os 选择

• 多种基础架构的选择

• 基于集群联邦建立混合云

安全

• 基于 TLS 提供服务

• Serviceaccount 和 user

• 基于 namespace 的隔离

• secret

• Taints,psp,networkpolicy

 3.3 K8S的优势

优势特点,主要是这8个层面:

资源利用:高效率/高密度

低耦合:松散耦合、分布式、弹性、解放的微服务

可移植性和灵活性:K8s有很强的兼容性,它可以在各种基础设施和环境设置下运行

敏捷性:敏捷应用程序的创建和部署,与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率

跨平台:跨云和操作系统,可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方运行

开源:CNCF负责管理K8s,这是一个完全开源、由社区驱动的项目

多云兼容性:     

1.容器编排支持多云架构     

2.轻松实现环境迁移/扩展

市场领导者:大部分公司都在使用K8s。根据一项调查,K8s被客户广泛使用 (88%),尤其在生产环境中(74%) 

 下一篇:从零开始学习 k8s:入门指南(二)

有关【K8S系列】深入解析 k8s:入门指南(一)的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  3. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. Ruby 和指南针路径与 yeoman 项目 - 2

    我安装了ruby​​、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom

  6. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  7. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  8. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  9. ruby - Ruby gems 的问题(损坏?)试图让指南针在 npm 中工作 - 2

    我不是Ruby专家,但想弄清楚发生了什么,因为我试图让指南针在节点应用程序中工作,但我的Ruby似乎坏了。打字:ruby--version让我:ruby2.1.1p76(2014-02-24revision45161)[x86_64-darwin13.0]我安装了Homebrew,之前遇到过Ruby版本的问题,但它似乎已安装并且可以正常工作。但是,当我使用gem输入请求时,出现此错误:$gem-hErrorloadingRubyGemsplugin"/Users/user_dir/.rvm/gems/ruby-2.1.1@global/gems/executable-hooks-1.3

  10. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

随机推荐