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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 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*

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
2月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
331 2
|
3月前
|
消息中间件 人工智能 监控
【云故事探索 | NO.15】:阿里云云原生加速鸣鸣很忙数字化
【云故事探索 | NO.15】:阿里云云原生加速鸣鸣很忙数字化
|
4月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
166 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
4月前
|
消息中间件 人工智能 监控
【云故事探索】NO.15:阿里云云原生加速鸣鸣很忙数字化
鸣鸣很忙集团作为中国最大休闲食品饮料连锁零售商,通过数字化与云原生技术实现快速扩张,4年完成其他企业10年的数字化进程。其采用阿里云全栈云原生方案,实现弹性扩容、智能补货、模块化开店等创新实践,支撑日均超430万交易数据稳定运行。未来将深化AI应用,推动供应链智能化与业务全面升级。
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
6月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
|
6月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
222 0
|
3月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
768 108