唯一极客博客文章

1.Kubernetes基础入门学习概述系统架构及组件浅析

2022-05-16  本文已影响0人  全栈工程师修炼指南

@TOC


作者: WeiyiGeek
原文地址1:https://blog.weiyigeek.top/2020/4-22-468.html
原文地址2:https://www.bilibili.com/read/cv16194345


0x00 基础简述

1.发展经历

描述:近些年由于Cloud云计算(公有云)以及大数据的发展促进了企业从传统转型到数字信息化再到上云, 其中运维部署应用技术也从物理机转向虚拟化再转向了容器化,而又随着分布架构应用的火热,以及对业务快速迭代的的需要,便推动了如今的Kubernetes分布式架构运维平台,它实现了对容器资源的编排与控制, 这也是本次学习的重中之重;

# 公有云类型
Infrastructure as a Service (基础设施及服务) :阿里云、腾讯云、百度云、京东云、Google Cloud、AWS Cloud
 # 提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。
Platform as a Service (平台及服务) : 新浪云(SAE) | Google Cloud 平台(GCP)
 # 提供给消费者的服务是把客户采用提供的开发语言和工具(例如Java,python, .Net等开发环境)开发的或收购的应用程序部署到供应商的云计算基础设施上去。
Software as a Service (软件即服务) : Office 365(云办公) 、 腾讯文档
 # 提供给客户的服务是bai运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。

部署时代变迁流程

描述:又回到部署时代变迁流程, 大致来说在部署应用程序的方式上,我们主要经历了三个时代:

image.png

容器因具有许多优势而变得流行起来,这里再老生重谈一下容器化对我们带来的诸多好处:

前世今生

言归正传,让我们回顾一下 Kubernetesd 的前世今生,在KUbernetes出现前的一些资源管理器。

以下是使用 google trends 对比在对于上述的容器编排工具 kubernetesdocker swarmmesos 三个关键词搜索热度的截图。

image.png

Q:那什么是Kubernetes系统?

答: Kubernetes (K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。
简单的说它就是一个全新基于容器技术的分布式架构方案,Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置(依据配置信息自动地执行容器化应用程序的管理)和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。

参考地址: https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

名称含义
描述: Kubernetes的名字起源于希腊语,含义是 舵手领航员向导,其logo即像一张渔网又像一个罗盘。
Google于2014年将Brog系统开源并命名为Kubernetes,它是构建在Google Brog 十五年运行大规模分布式系统的经验 基础之上,同时凝聚了社区的最佳创意和实践。

PS深层含义: 既然Docker把自己定位是驮着集装箱在大海遨游的鲸鱼,那么Kubernetes则是掌控大海从而捕获和指引这条鲸鱼按照其设定的路线巡游,从这里可以看出Google对其打造了新一代容器世界的伟大蓝图;

kubernetes 官网: https://kubernetes.io


2.简要介绍

Kubernetes 能完成什么工作

Q: 为什么需要 Kubernetes? 它能做什么?

答:容器是打包和运行应用程序的好方式但是免不了容器发生故障,在生产环境中您需要管理运行应用程序的容器并确保不会停机;
例如:当一个容器故障停机,需要另外一个容器需要立刻启动以替补停机的容器。类似的这种对容器的管理动作由系统来执行会更好更快速(而放弃传统的手工方式)。
Kubernetes针对此类问题提供了一个可弹性运行分布式系统的框架,可以使你非常健壮地运行分布式系统,它可以处理应用程序的伸缩、failover(故障转移)、部署模式等多种需求。
例如:Kubernetes 可以轻松管理系统的 Canary 部署。
Kubernets 也提供了完善的管理工具涵盖了开发/部署测试/运维监控的各个环节;

Q: Kubernetes 设计理念?
描述:其功能与架构都遵循了"一切以服务为中心,一切围绕服务运转"以及微服务的架构,简化开发流程与运维的成本;

Q: 什么是容器编排技术?
答:容器编排的技术定义是预定义流程的执行(先做A、再做B、然后做C)。与此相对应Kubernetes构建了一系列相互独立、可预排的控制过程,以持续不断地将系统从当前状态调整到声明的目标状态。

比如: 如何从 A 达到 C,并不重要集中化的控制也就不需要了,就是这样的设计思想使得Kubernetes使用更简单、更强大、稳健、反脆弱和可扩展

Q: K8s提供特性说明

Kubernetes 不是什么

描述:Kubernetes不是一个传统意义的、保罗万象的 PaaS(Platform as a Service)系统。
它主要在容器层面上工作而不是硬件层面,它提供了与PaaS相似的通用特性例如:部署、伸缩、负载均衡、日志、监控等; 然而K8a并不是一个单一整体,这些特性都是可选、可插拔的(高自定义)

Kubernetes提供用于搭建开发平台的基础模块,同时为用户提供了不同模块的选择性和多样性。

总结简要K8s优点与劣势

Kubernetes 版本号格式
Kubernetes 版本号格式遵循 Semantic Versioning 版本控制规则, 版本号格式为 x.y.z,其中 x 为大版本号,y 为小版本号,z 为补丁版本号。

一般 Kubernetes 项目会维护最近的三个小版本分支(例如:2020年11月 -> 1.19, 1.18, 1.17)。

提供了有关 kubelet 与控制平面以及其他 Kubernetes 组件之间受支持的版本倾斜的更多信息:https://kubernetes.io/zh/docs/setup/release/version-skew-policy/

Q:如何学习Kubernetes系统?从哪几方面进行入手学习?
答: 笔者最初学习时候由于K8s知识体系太庞大了导致零零散散的学习了一些基础知识, 但是越学到后面就越吃力,所以又不得重新学习一些基础知识,下面就是本人学习思路:

Q: k8s适合人群学习研究?
描述: 项目经理、软件架构师、软件工程师、测试工程师、运维工程师以及其它网络技术爱好者;

Q: 学习参考文档?
答:入门必看文档系列以后看到K8s一律等同于Kubernetes只是方便国人发音;

3.系统架构

描述: 为了更好的了解与学习Kubernets就需借鉴对照Brog系统架构, 看出K8s如何基于Brog系统进行演变更新;

Borg 系统

1) Borg系统架构图如下:

image.png

2) 组件简单说明:

Kubernetes 系统

1) K8s系统架构图如下:
[图片上传失败...(image-7104bb-1652699126756)]

2) 组件简单说明:

PS : 不管是K8S的master节点还是Nodes节点都需要依赖容器引擎但不限于docker(主流默认)或者其它的一些容器引擎(podman)

参考地址:https://kubernetes.io/zh/docs/concepts/overview/components/


补充记录时间:[2020年4月22日 14:51:04]

PS : etcd Storage 有 v3 与 v2 版本, 先K8S集群中使用的是etcd v3版本, v2版本已在K8s v1.11中弃用, 更多信息请参考官网或者博客中<Etcd基础学习之架构及工作原理.md>;

image.png

组件说明:


0x01 组件浅析

通过上面的简单的K8s组件说明,下面详述了 Kubernetes 的主要组件(该章节非常的重要了解其组件是了解其K8s架构的基础)

20200423141924.png

1.Kubernetes-Master

Q:Control Plane Components控制平面组件的作用说明

答:它是集群的控制平台组件(Control Plane Components),主要负责集群中的全局决策(例如调度)和探测并响应集群事件(例如: 当 Deployment 的实际 Pod 副本数未达到 replicas 字段的规定时,启动一个新的 Pod);
控制平面组件可以运行于集群中的任何机器上,但是为了简洁性该组件通常是在运行在一台无其业务容器下的机器上;

Master节点下组件的介绍:

补充说明:
Q:什么是alpha阶段?
答:即开发内部测试阶段;

2.Kubernetes-Node

描述:Node 组件运行在每一个节点上(包括 worker 节点或者 master 节点),负责维护运行中的 Pod 并提供 Kubernetes 运行时环境

Node下组件的介绍:


补充说明:[2020年4月22日 16:41:04]

Q:什么是引擎?
答:创建和管理容器的工具,通过读取镜像来生成容器,并负责从仓库拉取镜像或提交镜像到仓库中;

Q:多种容器引擎介绍

20200422164753.png

前面我们说过在Node节点中Kubelet主要负责Pod的创建、启动、监控、重启、销毁;但它并不是直接面向最终用户, 主要是用于集成到更上层的系统里, 比如 Docker Swarm, Kubernetes, Mesos等容器编排系统。

image.png

PS : 例如 Docker


3.Kubernetes-插件

描述:插件使用 Kubernetes 资源(DaemonSet、 Deployment等)实现集群功能。 因为这些插件提供集群级别的功能,插件中命名空间域的资源属于 kube-system 命名空间
下面描述了一些经常用到的 addons 更多插件请参考K8s的 Addons List

Q:什么是Cluster DNS
答:Cluster DNS(英 /ˈklʌstə(r)/) 是一个 DNS 服务器,是对您已有环境中其他 DNS 服务器的一个补充,存放了 Kubernetes Service 的 DNS 记录。

4.本章小结

描述: 前面我们说了k8s能够对容器化软件进行部署管理,在不停机的前提下提供简单快速的发布和更新方式, Kubernetes是自动化部署,缩放,以及集装箱应用管理一个开放源码的容器业务流程引擎;

简单的说: 如果项目需要多机器节点的微服务架构,并且采用Docker image(镜像)进行容器化部署,那么k8s可以帮助我们屏蔽掉集群的复杂性,自动选择最优资源分配方式进行部署;

下图描述的是拥有一个Master(主)节点和六个Worker(工作)节点的k8s集群, 可以通平面化查看其K8s组件展示;

image.png

原文地址:https://blog.weiyigeek.top/2020/4-22-468.html


本文至此完毕,更多技术文章,尽情期待下一章节!

欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】或者 个人公众号【WeiyiGeek】联系我。

<span style="color:#147eec">更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】 个人博客。 </span>

个人主页: 【 https://weiyigeek.top

博客地址: 【 https://blog.weiyigeek.top

<span style="color:red" >专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏【点个赞、投个币、收个藏、关个注,转个发、留个言】,这将对我的肯定,谢谢!。</span>

11a629d1bc4369dc810216c5dedac871136167d7.gif

更多网络安全、系统运维、应用开发、全栈文章,尽在【<span style="color:red">个人博客 - https://blog.weiyigeek.top <span>】站点,谢谢支持!

上一篇 下一篇

猜你喜欢

热点阅读