开发者社区> busighszgro74> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云云原生学习及思考笔记-初识容器

简介: 1.容器与虚拟化的对别 2.docker/ kubernetes 分别是什么 3.K8S内各组件如何分工
+关注继续查看

文章为云计算学习笔记,其中有大量从他人文章中摘取的内容,仅作为学习用。

1.容器与虚拟化的对别
从最早期的服务器集群,到后来的虚拟化技术,再到后续的容器化技术,资源一直在向着更易交付的方向发展。
虚拟化虽然通过虚拟机提升了资源利用率,但其本身还是需要有hypervisor去充当计算机硬件和虚拟机之间的介质,来分配和利用虚拟机使用的硬件资源。
对于虚拟机(技术代表VMWare和OpenStack),每个虚拟机都包含一个访客操作系统、操作系统运行所需硬件的一个虚拟副本以及一个应用及其关联的库和依赖项。不同操作系统的虚拟机可以运行在同一台物理服务器上。-摘自https://www.ibm.com/cn-zh/cloud/learn/containers
而容器,容器化不是启动整个虚拟机,而是将运行单个应用程序或微服务所需的所有东西(以及它们需要运行的运行时库)打包在一起。容器包括所有代码、它的依赖项,甚至操作系统本身。它们利用主机操作系统的功能来隔离进程并控制进程对 CPU、内存和桌面空间的访问。与虚拟机不同,容器不需要在每个实例中都包含来宾操作系统,而是可以简单地利用主机操作系统的功能和资源。-摘自https://www.ibm.com/cloud/blog/containers-vs-vms 【Containers vs. Virtual Machines (VMs): What’s the Difference?】

image.png
windows上的容器与虚拟机对比

2.docker/ kubernetes 分别是什么
1、k8s是一种开放源码的容器集群管理系统,而Docker是一种开放源码的应用容器引擎;
2、k8s是一套自动化部署工具,可以管理docker容器是容器编排层面的,docker是容器化技术,是容器层面的。
-摘自https://www.php.cn/docker/487626.html

首先来分析一下Docker
Docker的三大概念是镜像(Image)、容器(Container)、仓库(Repository)
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
所有构建生成的镜像就变成了一个镜像仓库,由Docker Registry服务进行管理。最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的Registry,并拥有大量的高质量的官方镜像。
有了镜像及仓库,就可以去部署容器了。
但是在将Docker应用于具体的业务实现的过程中,人们发现在编排、管理和调度等各个方面都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。于是Kubernetes(K8S),就是基于容器的集群管理平台,应运而生。
-摘自https://www.cnblogs.com/misswangxing/p/10669444.html

针对K8S,我这边找到了一篇通俗易懂的组件理解分享,链接如下:
https://zhuanlan.zhihu.com/p/32618563

3.K8S内各组件如何分工
K8S由 master节点(API server,Scheduler,contoller manager, etcd)和node(pod,docker,kubelet,kuberproxy,fluentd)节点组成。
Master节点包括API Server、Scheduler、Controller manager、etcd。
API Server是整个系统的对外接口,供客户端和其它组件调用。[1]APIServer 去调用各个进程来完成对 Node 的部署和控制。[6]
Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
Controller manager负责管理控制器,相当于“大总管”。

Docker,不用说了,创建容器的。
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
Kube-proxy,主要负责为Pod对象提供代理。
Fluentd,主要负责日志收集、存储与查询。
-https://www.cnblogs.com/misswangxing/p/10669444.html

通常我们都是通过 kubectl Kubernetes 下命令的,它通过 APIServer 去调用各个进程来完成对 Node 的部署和控制。
APIServer 的核心功能是对核心对象(例如:Pod,Service,RC)的增删改查操作,同时也是集群内模块之间数据交换的枢纽。
它包括了常用的 API,访问(权限)控制,注册,信息存储(etcd)等功能。在它的下面我们可以看到 Scheduler,它将待调度的 Pod 绑定到 Node 上,并将绑定信息写入 etcd 中。
etcd 包含在 APIServer 中,用来存储资源信息。
接下来就是 Controller Manager 了,如果说 Kubernetes 是一个自动化运行的系统,那么就需要有一套管理规则来控制这套系统。Controller Manager 就是这个管理者,或者说是控制者。它包括 8 个 Controller,分别对应着副本,节点,资源,命名空间,服务等等。
紧接着,Scheduler 会把 Pod 调度到 Node 上,调度完以后就由 kubelet 来管理 Node 了。

kubelet 用于处理 Master 下发到 Node 的任务(即 Scheduler 的调度任务),同时管理 Pod 及 Pod 中的容器。
在完成资源调度以后,kubelet 进程也会在 APIServer 上注册 Node 信息,定期向 Master 汇报 Node 信息,并通过 cAdvisor 监控容器和节点资源。

微服务的部署都是分布式的,所以对应的 Pod 以及容器的部署也是。为了能够方便地找到这些 Pod 或者容器,引入了 Service(kube-proxy)进程,它来负责反向代理和负载均衡的实施。

image.png
Kubernetes 架构简图[6]

参考资料:
[1]Docker和k8s的区别与介绍; https://www.cnblogs.com/misswangxing/p/10669444.html.
[2]Kubernetes入门:Pod、节点、容器和集群都是什么? https://zhuanlan.zhihu.com/p/32618563
[3]docker镜像中包含什么 https://www.php.cn/docker/493253.html
[4]什么是docker微服务 https://www.php.cn/docker/493251.html
[5]docker运行在物理机还是虚拟机上(docker与虚拟机实现原理比较) https://www.php.cn/docker/493250.html
*[6]我花了10个小时,写出了这篇K8S架构解析
https://mp.weixin.qq.com/s?__biz=MjM5ODI5Njc2MA%3D%3D&chksm=bd74fa7a8a03736c08e43b4e7082c3763c0e64491e7b7ef3ddd9f3756cfa5e536730f8f022e8&idx=1&mid=2655827885&scene=21&sn=47feb253e0aa012023d6f421572a04b3#wechat_redirect*

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
共建共享数字世界的根:阿里云打造全面的云原生开源生态
目前,阿里云开源主要涵盖云原生、操作系统、大数据&AI、数据库四大领域,在 GitHub 上收获 Star 总数超百万,阿里已经连续十年蝉联中国厂商开源活跃度、影响力第一。
26 0
阿里云云原生容器工程师ACP认证
阿里云云原生容器工程师ACP认证
60 0
阿里云云服务器ECS介绍 学习笔记
阿里云云服务器ECS介绍 学习笔记
41 0
阿里云云开发实践笔记【1】
阿里云云开发实践笔记
44 0
12.15阿里云北京云原生容器动手实践
阿里云北京云原生容器动手实践活动概要,实操环节的示例及操作文档.
248 0
阿里云云服务器ECS介绍| 学习笔记
快速学习 阿里云云服务器ECS介绍
109 0
云安全 | 学习笔记
快速学习云安全,重点介绍了如何在 Linux 下进行安全防护,并从用户系统安全、SSH 安全、恶意文件安全和云安全四个角度诠释如何提升系统的安全性。
233 0
为什么要学习“云原生”技术 | 学习笔记
从信息系统迭代的关键历程开始,阐述云原生技术的演进和趋势方向。
68 0
第一堂“云原生”课 | 学习笔记
快速学习第一堂“云原生”课。云原生具备重要意义,它是云时代技术人自我提升的必备路径
133 0
阿里云ECS七天训练营-搭建个人Leanote云笔记
Leanote是一款在线的云笔记应用,有如下特点: • 支持网页、PC、手机APP客户端和微信版,随时记录,方便分享,支持语音,图片输入。 • 代码高亮,涵盖所有主流语言的代码高亮,随心所欲在Leanote里写代码,记知识。 • Markdown 编辑器,实时同步预览。 • 专业数学公式编辑,像Word和Latex能编辑数学公式。 • 支持创建思维脑图,将散乱的想法以树状信息分层展示。 • 详细历史纪录,每次保存都在后端备份,轻松查找,一键恢复。 • 实时同步云端
232 0
+关注
busighszgro74
以云架构师为目标而努力奋斗的小年轻
2
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载