理解 Pod 和容器设置模式(一)|学习笔记

简介: 快速学习理解 Pod 和容器设置模式(一)

开发者学堂课程【Kubernetes 入门 理解 Pod 和容器设置模式(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/51/detail/1010


理解 Pod 和容器设置模式(一)


 内容介绍

一、为什么我们需要 Pod?

二、Pod 的实现机制

三、详解容器设计模式

 

一、为什么我们需要 Pod?

先回顾一下容器的基本概念

1、容器的本质是?

l 一个视图被隔离、资源受限的进程

l 容器里 PID =1的进程就是应用本身

l 管理虚拟机=管理基础设施;管理容器=直接管理应用本身

2、那么 Kubernetes 呢?

l Kubernetes 就是云时代的操作系统!

l 以此类推,容器镜像其实就是︰这个操作系统的软件安装包

3、再来看一个真实操作系统里的例子

举例: helloworld 程序

l helloworld 程序实际上是由一组进程(Linux 里的线程〉组成

l 这4个进程共享 helloworld 程序的资源,相互协作,完成 helloworld 程序的工作

4、思考

l Kubernetes =操作系统(比如:Linux)

l 容器=进程(Linux 线程)

l Pod = ?

l 进程组(Linux 线程组)

5、“进程组”

举例:

l helloworld 程序由4个进程组成,这些进程之间共享某些文件

l 问题: helloworld 程序如何用容器跑起来呢?

l 解法一:在一个 Docker 容器中,启动这4个进程

l 疑问︰容器 PID= 1的进程就是应用本身比如 main 进程,那么"谁"来负责管理剩余的3个进程?

l 容器是“单进程”模型!

l 除非:

l 应用进程本身具备"进程管理"能力〈这意味着: helloworld 程序需要具备 systemd 的能力)

l 或者,容器的 PID=1进程改成 systemd

l 这会导致︰管理容器=管理 systemd !=直接管理应用本身

6、Pod =“进程组

Pod:一个逻辑单位,多个容器的组合

Kubernetes 的原子调度单位

$spstree -p

|-helloworld,3062l

|-{api} ,3063

|-{main} ,3064

|-{ log} ,3065

|-{compute} ,3133

apiversion: v1

kind: Pod

metadata:

name: helloworld

spec:

containers:

- name: api

image: api

ports:

- containerPort: 80

- name: main

image: main

- name: log

image: log

volumeMounts:

- name: log-storage

- name: compute

image: compute

volumeMounts:

- name: data-storage

 

image.png

7、来自 Google Borg 的思考

Google 的工程师们发现,在 Borg 项目部署的应用,往往都存在着类似于“进程和进程组”的关系。更具体地说,就是这些应用之间有着密切的协作关系,使得它们必须部署在同一台机器上并且共享某些信息

Large-scale cluster management at Google with Borg, EuroSys'15

8、为什么 Pod 必须是原子调度单位?

1、举例:两个容器紧密协作

l App:业务容器,写日志文件

l LogCollector:转发日志文件到 ElasticSearch 中

2、内存要求:

l App: 1G

l LogCollector: 0.5G

3、当前可用内存:

l Node_A: 1.25G

l Node_B: 2G

4、如果 App 先被调度到了 Node_A 上,会怎么样?

5、Task co-scheduling 问题

l Mesos:资源囤积(resource hoarding) :

l 所有设置了 Affinity 约束的任务都达到时,才开始统一进行调度

l 调度效率损失和死锁

6、Google Omega︰乐观调度处理冲突︰

l 复杂

7、Kubernetes: Pod

l 再次理解 Pod

l 亲密关系-调度解决

l 两个应用需要运行在同一台宿主机上

l 超亲密关系- Pod 解决

l 会发生直接的文件交换

l 使用 localhost 或者 Socket 文件进行本地通信

l 会发生非常频繁的 RPC 调用

l 会共享某些 Linux Namespace (比如,一个容器要加入另一个容器的 Network Namespace)

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
消息中间件 Java Kafka
关于kafka消费者超时配置
关于kafka消费者超时配置
1898 2
|
消息中间件 监控 负载均衡
Kafka中的Partition详解与示例代码
在Apache Kafka中,Partition(分区)是一个关键的概念。分区的引入使得Kafka能够处理大规模数据,并提供高性能和可伸缩性。本文将深入探讨Kafka中的Partition,包括分区的作用、创建、配置以及一些实际应用中的示例代码。
|
消息中间件 存储 负载均衡
Kafka高可用性指南:提高数据一致性和集群容错能力!
**Kafka高可用性概览** - 创建Topic时设置`--replication-factor 3`确保数据冗余和高可用。 - 分配角色:Leader处理读写,Follower同步数据,简化管理和客户端逻辑。 - ISR(In-Sync Replicas)保持与Leader同步的副本列表,确保数据一致性和可靠性。 - 设置`acks=all`保证消息被所有副本确认,防止数据丢失,增强一致性。 - 通过这些机制,Kafka实现了分布式环境中的数据可靠性、一致性及服务的高可用性。
1605 0
|
数据安全/隐私保护
URI 和URL 的区别是什么?
URI 和URL 的区别是什么?
2642 0
|
JSON 数据安全/隐私保护 开发者
uos系统如何设置开发者模式并获取和使用root权限
uos系统如何设置开发者模式并获取和使用root权限
2543 0
|
容器 Perl Kubernetes
从零开始入门 K8s| 详解 Pod 及容器设计模式
作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 一、为什么需要 Pod 容器的基本概念 我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单位,但是为什么我们会需要这样一个概念呢?在使用容器 Docker 的时候,也没有这个说法。
|
4天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
3898 8
|
15天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11581 131
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
3天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1396 5
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)