第9章·Pod 与命名空间
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Kubernetes API 中最重要的基本单元是 Pod( )。Pod 允许您运行容器化应用程序。在实际应用中,Pod 与容器通常呈一对一映射关系;但某些场景下,在单个 Pod 中声明多个容器能带来显著优势。
多容器Pod适用于需要共享存储卷、网络命名空间等资源的紧密耦合进程,可满足侧车模式(日志收集、监控代理)、适配器模式(输出格式标准化)、大使模式(代理连接)及初始化容器(主容器启动前的配置任务)等场景需求。详情请参阅Kubernetes官方博客概述。
除了运行容器外,Pod还能使用存储、配置数据等其他服务。因此,可将Pod视为运行容器的容器,同时具备融合横切关注点和专业化Kubernetes功能的能力。
Pod操作实践
本章将探讨仅运行单个容器的Pod操作。我将通过命令式和声明式方法,详解创建、修改、交互及删除Pod的所有关键kubectl命令。
创建Pod
Pod定义 需为每个容器声明镜像。无论采用命令式或声明式创建Pod对象,调度器都会将Pod分配至节点,容器运行时引擎将检查该节点是否已存在对应容器镜像。若镜像尚未存在,引擎将从容器运行时默认定义的容器镜像注册表下载。 当镜像存在于节点时,容器即刻实例化并运行。图 9-1展示了执行流程。
图 9-1. 容器 运行时接口与容器镜像的交互
运行命令 是强制创建Pod的核心入口点。 下面介绍其用法及需重点记忆练习的关键命令行选项。假设要在Pod内运行Hazelcast实例:容器需使用最新版Hazelcast镜像,暴露5701端口并定义环境变量,同时为Pod分配两个标签。以下命令行指令整合了所有要求,无需对运行中对象进行额外编辑:
$ kubectl run hazelcast --image=hazelcast/hazelcast:5.1.7 \ --port=5701 --env="DNS_DOMAIN=cluster" --labels="app=hazelcast,env=prod"
run命令提供丰富的命令行选项。执行kubectl run --help或 查阅Kubernetes文档可获取全面概述。考试中无需掌握所有命令,表9-1列出了最常用的选项。
| 选项 | 示例值 | 描述 |
|---|---|---|
|
|
容器运行的镜像。 |
|
|
此容器暴露的端口。 |
|
|
在容器内命令执行完毕后删除Pod。更多信息请参阅“创建临时Pod”。 |
|
|
在容器中设置的环境变量。 |
|
|
应用于Pod的标签列表,以逗号分隔。 |
部分开发者更习惯通过 YAML 清单创建 Pod( )。您可能已熟悉声明式方法,因其能提供可版本控制、可复现的基础设施即代码,可存储于 Git ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access