云与容器速查
VPC / 安全组 / 计算存储 / 计费 + Docker / K8s 命令与容器排障:云平台与容器平台双栈速查,含三厂对照。
云基础概念
区域、可用区、账号体系与资源模型
VPC 专有网络基础概念热门
VPC 是云上逻辑隔离的私有网络,用户自定义网段、子网、路由与网关;所有云资源的网络边界默认就是 VPC,是网络规划的第一块地基。
区域与可用区 Region/AZ热门
Region 是云平台独立的地理区域,AZ 是区域内电力与网络隔离的机房集群;资源创建在选定区域,访问延迟与容灾拓扑都由它决定。
负载均衡 SLB/CLB/ELB热门
负载均衡把访问请求分发到多台后端服务器,提供公网/私网入口、健康检查与 TLS 卸载,是云上高可用业务的标准入口层。
安全组概念与作用热门
安全组是作用在实例网卡上的虚拟防火墙,通过规则控制进出流量(协议、端口、来源、策略);实例可加入多个安全组,规则叠加生效。
对象存储 OSS/COS/OBS热门
对象存储用 HTTP(S) API 存取图片、视频、备份、日志等海量非结构化数据,以 Bucket 组织数据、按量计费、容量近乎无限。
交换机/子网 Subnet 概念热门
子网(阿里云称交换机 vSwitch)是 VPC 网段的细分并绑定一个可用区;实例、负载均衡、NAT 网关等资源都从所属子网分配内网地址。
弹性公网 IP EIP热门
EIP 是可独立购买、随时绑定与解绑的公网地址,可挂到 ECS、NAT 网关、负载均衡等资源上,是云上对外服务与出网的主要方式。
访问控制 RAM/CAM/IAM热门
云账号的权限系统:通过子用户、角色与策略控制谁能对哪些资源做哪些操作;生产环境严禁业务程序共用主账号 AccessKey。
NAT 网关
NAT 网关让 VPC 内没有公网 IP 的实例访问互联网(SNAT),也能把公网请求转发到指定内网主机(DNAT),是内网机器出网的标准做法。
多可用区部署与容灾设计
把业务实例分散到同地域多个可用区,配合负载均衡与跨 AZ 数据库主备抵御单机房故障;代价是跨 AZ 延迟与流量成本。
快照 Snapshot
快照是云盘某一时刻的块级备份,可用于数据回滚与创建镜像;增量快照首份全量、后续只存变化块,是云上数据安全的第一道防线。
常用地域代码对照(三厂)
调用 API/CLI 使用地域代码而非城市名:阿里云 cn-<城市>、腾讯云 ap-<城市>、华为云 cn-<方向>-<序号>,写法各不相同。
API / CLI / SDK 自动化运维
云平台全部功能都对应 OpenAPI;官方 CLI(aliyun、tccli、hcloud)与各语言 SDK 适合批量查询、脚本化变更与 CI/CD 集成。
镜像 Image
镜像是云服务器的装机模板:公共镜像、自定义镜像、共享镜像、镜像市场;批量部署与弹性扩容都从镜像开始。
CDN 内容分发网络
把静态资源缓存到边缘节点,用户就近访问、降低源站压力;动静态分离加缓存规则是网站提速与省带宽的第一手段。
混合云 Hybrid Cloud
把本地 IDC 与云上 VPC 通过 VPN/专线打通,数据与业务按需分布在两侧;兼顾存量资产、弹性和数据合规,是最常见的上云形态。
账号体系:主账号、子账号与企业账号
主账号拥有全部资源的最终所有权与账单;子账号(RAM 用户/协作者)承担日常运维;多业务线可用多账号加资源目录实现隔离与集中结算。
云监控 CloudMonitor
云平台自带主机与云产品监控:CPU、网络、磁盘 IO、云盘指标与告警规则;内存和磁盘使用率通常需要安装监控 Agent 才能采集。
容灾方案分级:从备份到双活
按 RTO/RPO 与投入把容灾分为备份恢复、冷备、温备、热备、双活五级;业务重要性决定级别,级别决定预算。
服务接入点 Endpoint
每个云服务在每个地域都有访问域名 Endpoint,SDK/CLI 靠它定位服务;公网、内网与 VPC 私网 Endpoint 各不相同,用错既慢又贵。
三厂术语对照:计算与实例
同一能力三厂命名不同,跨云迁移与混部前先看对照:云服务器、快照、弹性伸缩、竞价实例的叫法差异最大。
弹性伸缩 Auto Scaling
按 CPU/内存等指标或定时策略自动增减实例,并自动挂载到负载均衡后端;高峰扩容、低谷缩容,兼顾可用性与成本。
云解析 DNS
域名托管解析服务:A/CNAME/MX/TXT 记录、按线路智能解析、权重与健康检查;三厂为云解析 DNS、DNSPod、云解析服务 DNS。
标签 Tag 资源分类
用 Key-Value 标签给资源打上项目、环境、负责人等维度,支撑分账账单、批量检索、自动化运维与权限范围控制。
三厂术语对照:网络
VPC、子网、安全组、EIP、负载均衡、NAT 网关在三厂叫法有微差,最容易被卡住的是交换机与负载均衡的命名差异。
三厂术语对照:存储
对象存储、文件存储、云硬盘三厂命名与规格体系差异明显(OSS/COS/OBS、NAS/CFS/SFS、云盘/云硬盘),性能档位也不可直接对比。
云企业网/云联网:多 VPC 互联
把多个 VPC、多个地域乃至多云连成一张内网,自动学习路由、按带宽包计费;三厂为云企业网 CEN、云联网 CCN、企业路由器 ER。
SLA 与可用性指标
云厂商用 SLA 承诺可用性(如 ECS 单实例 99.975%、多可用区 99.995%),并以 RTO/RPO 描述灾备目标;架构设计要按 SLA 反推冗余级别。
无服务器计算 Serverless
无需管理服务器的执行环境:函数计算按调用与资源用量计费,事件驱动自动扩缩容;适合突发流量、定时任务与事件处理。
配额 Quota 与提额
云账号对 vCPU、EIP、安全组规则、NAT 条目等资源都有默认配额且按地域生效;扩容前先查询剩余配额,不够就提工单申请。
三厂术语对照:安全与管理
访问控制、云监控、WAF、堡垒机、DDoS 防护、云防火墙的命名对照;安全产品选型和等保合规方案设计时直接查表。
VPN 网关(IPsec VPN)
通过 IPsec 隧道把 VPC 与本地机房或其他云私网打通,走公网加密传输;成本低于专线,适合中小带宽互联与过渡方案。
对等连接 VPC Peering
把两个 VPC 私网直连,流量走云内骨干网络不走公网;适合少量 VPC 点对点互联,规模变大应改用 CEN/CCN/ER。
同城双活
同城两个机房(或两个可用区)同时承载流量,机房级故障时秒级-分钟级切换;延迟要求通常小于 2ms 才能做到真正的双活。
上云迁移流程与工具
迁移不是搬机器而是搬业务:评估→割接方案→网络打通→数据同步→试运行→正式切换→回滚预案,缺一步都可能翻车。
资源编排 IaC:ROS / Terraform / RFS
用声明式模板描述云资源并用版本管理,实现可重复、可评审、可回滚的资源交付;比控制台点选可靠一个量级。
专线接入 Express Connect
通过物理专线连接本地 IDC 与云上 VPC,延迟稳定、带宽独享,是政企与金融混合云互联的正式方案;三厂为高速通道/专线接入/云专线。
多云架构与多厂商选型
同时使用两家以上云厂商的服务分散风险、避免锁定并满足合规;代价是网络、IAM、运维与成本模型全部要乘二,需要抽象层兜底。
异地灾备
在同城双活之外再加一个异地中心,抵御地震、洪水、大范围断电等区域级故障;数据采用异步复制,RPO 通常为分钟级。
云架构设计原则(Well-Architected)
云上架构的六个支柱:高可用、弹性、安全、成本、运维、性能;每个设计决策都应在这些维度上显式权衡。
资源组/项目分组管理
在账号内按业务或团队把资源分组(资源组、项目、企业项目),配合权限与标签实现按组查看、分权与分账。
裸金属服务器 Bare Metal
没有虚拟化层的独占物理服务器,可通过云控制台/API 管理并与 VPC、镜像、云盘体系打通;适合对性能、硬件或授权有强要求的场景。
云成本治理 FinOps
把云支出可视化、责任到人、持续优化:分账标签管住归属,预算告警管住预期,资源巡检管住浪费。
边缘计算与边缘节点
把计算推进到离用户更近的边缘节点:CDN 边缘函数处理轻量逻辑,边缘节点服务交付完整虚拟机/容器能力,降低延迟与回源压力。
计算与存储
云服务器规格、镜像、云盘与对象存储
云服务器 ECS/CVM 基础概念热门
云服务器是弹性可伸缩的计算服务:实例由 vCPU、内存、镜像、云盘与网络组成,秒级创建、按量或包年包月计费、随时变配。
实例规格族总览与分类
规格族按 CPU:内存比与硬件特性划分:通用型、计算型、内存型、突发型、本地盘型、GPU 型、裸金属;选族先于选尺寸。
云盘类型总览与三厂对照
云盘分档决定性能与价格:高端 ESSD(PL 档)/增强型 SSD/超高 IO,中端 SSD/SSD 云硬盘,入门高效/高性能/高 IO;普通盘基本退市。
通用型规格 g:默认首选
通用型 1:4 的 CPU 内存比适合大多数场景:Web 服务、中小数据库、容器运行时、开发测试;没有特殊瓶颈时从它开始选。
挂载数据盘并初始化
新数据盘使用五步:挂载到实例 → lsblk 核实 → 分区/格式化 → mount 到目录 → 写入 fstab 持久化。格式化前核对盘符是铁律。
存储桶 Bucket 管理
Bucket 是对象存储的顶级容器:名称全局唯一、归属固定地域、权限默认私有;桶名一旦选定不能修改,地域也不能迁移。
云计费模式总览:包年包月/按量/抢占
三种计费模式覆盖不同负载形态:长期稳定用包年包月最省,波动弹性用按量付费,容错任务用抢占式最便宜但可能被回收。
实例规格命名解读(ecs.g7.xlarge)
规格名结构固定:产品.系列+代际.尺寸;尺寸决定 vCPU 数(large=2、xlarge=4、2xlarge=8),内存由系列比例决定。
ESSD PL 档位性能解读
ESSD 的 PL0-PL3 档位对应单盘性能上限:PL0 约 1 万 IOPS/180MBps,PL1 5 万/350,PL2 10 万/750,PL3 100 万/4000;实际还受实例包络限制。
对象存储命令行工具(ossutil/coscmd/obsutil)
三家都提供类 FTP 风格 CLI:上传下载、同步目录、查看删除,一条命令完成控制台多次点击的操作,适合脚本与定期任务。
生命周期规则管理数据沉淀
生命周期规则按前缀与天数自动执行存储类型转换与过期删除:热→低频→归档→删除,是对象存储降本与合规留存的主力工具。
实例选型方法与流程
选型四步:明确瓶颈画像 → 匹配系列与代际 → 定尺寸与数量 → 压测验证;保守起步、数据说话、按需升配。
云盘扩容与文件系统扩展
云盘支持在线扩容容量,但只有在操作系统内扩了分区与文件系统后,新空间才可用;Linux 用 growpart + resize2fs/xfs_growfs。
块/文件/对象存储选型实战
块存储给单机当磁盘用,文件存储给多机共享目录,对象存储存海量非结构化数据;选错形态不是性能不够就是成本翻倍。
对象存储类型:标准/低频/归档/冷归档
按访问频率选择存储类型可显著降本:标准适合频繁访问,低频适合每月少量,归档/冷归档适合长期备份,但取回有费用与等待时间。
桶权限:ACL 与桶策略
桶权限分粗粒度 ACL(私有/公共读/公共读写)与细粒度桶策略(Policy):控制谁能对哪些对象执行哪些操作,还能限制来源 IP 与协议。
对象存储 + CDN 组合分发
CDN 回源对象存储是静态资源的标准架构:用户就近访问边缘节点,回源走对象存储;既提速又省对象存储的公网出流量。
按量付费
后付费按实际使用时长计费(秒/小时级),随开随停、释放即止费;单价高于包年包月,适合弹性与临时场景。
计算型规格 c:高并发算力
计算型 1:2 的单核算力密度更高:高并发前端、游戏服务端、视频编解码、批量计算;用压测数据决定是否需要升级到 c 系。
云盘性能三指标与测试
评估云盘看三指标:IOPS(随机小 IO)、吞吐(顺序大 IO)、时延;数据库看 IOPS+时延,大数据/备份看吞吐。
对象存储计费结构与省钱
对象存储按维度计费:存储容量、请求次数、公网出流量、跨区域复制、归档取回;账单异常通常是流量或请求被刷导致的。
对象存储安全加固清单
对象存储最常见的风险是权限过宽与密钥泄露;按清单逐项加固:默认私有、最小权限、加密、日志、版本控制与生命周期治理。
抢占式/竞价实例
用竞价比市场使用空闲容量:价格通常显著低于按量,但实例可能被系统回收(提前数分钟通知);只用于可中断的工作负载。
公网带宽计费:按带宽 vs 按流量
公网出方向要钱且方式可选:按固定带宽(包月)适合稳定流量,按使用流量(阶梯价)适合波动与低频;选错方式账单差一个量级。
内存型规格 r:内存密集业务
内存型 1:8 面向缓存与内存数据库:Redis、Memcached、SAP HANA、实时大数据;内存扩展型比例可达 1:16。
GPU 实例:AI 训练与推理
GPU 实例挂载 NVIDIA 专业卡,面向模型训练/推理、图形渲染与科学计算;卡型分推理档与训练档,配额通常很小需单独申请。
变更实例规格(升配/降配)
规格变更支持升配与降配:按量实例直接变配(需停机),包年包月需补差价;云盘与公网 IP 保留,重启后生效。
开机自动挂载 /etc/fstab
fstab 负责开机自动挂载:推荐用 UUID 而非设备名(云盘重插后盘符可能漂移),加 nofail 参数可避免启动卡死进急救模式。
签名 URL 临时授权访问
签名 URL 给未登录用户一个带时效的访问凭证,用于私有对象的限时下载/上传;链接过期自动失效,不暴露账号密钥。
文件存储 NAS 使用与权限组
NAS 提供 NFS/SMB 共享目录:创建文件系统后从挂载点挂载到多台实例;权限组按 VPC/网段控制哪些客户端可以挂载。
包年包月付费
预付费锁定资源与价格:购买时长越长折扣越大;到期不续费会停机并进入保留期,超期资源被回收,数据也随之释放。
云盘计费与容量规划
云盘按容量与类型计费:随实例购买(包年包月)或独立按量;扩容按新容量续费,缩容不支持;容量规划留 20% 余量是常规做法。
云内流量计费规则
流量费用看方向与范围:同地域内网(含跨可用区)通常免费,跨地域与公网出方向收费,公网入方向一般免费;架构设计先想流量路径。
突发性能型 t 实例(CPU 积分机制)
t 系列用 CPU 积分平衡成本:平时以基准性能运行并积攒积分,突发时消耗积分提速;积分耗尽后回落到基准性能。
本地盘实例(i/d 系列)
本地盘实例自带宿主机 NVMe SSD 或 HDD,IOPS 与吞吐远高于云盘;但数据仅存本机,宿主机故障即丢失,必须应用层做副本。
快照跨地域复制与自动策略
自动快照策略按周期给云盘打恢复点,跨地域复制把恢复点送到异地;两者组合才能实现『本地快速回滚 + 异地灾难恢复』。
版本控制与误删保护
开启版本控制后每次覆盖与删除都保留历史版本,误删可一键恢复;代价是存储成本随版本数增长,需配合生命周期清理旧版本。
静态网站托管
对象存储可直接托管静态网站:配置索引文档与错误文档,绑定自定义域名后即可访问;生产环境通常再套一层 CDN 与 HTTPS。
自动续费与到期管理
包年包月资源开启自动续费避免误停机,同时建立到期台账:核心资源提前人工复核,避免自动续费后才发现该降配或迁移。
实例元数据服务
实例内部可访问的特殊地址查询自身信息(实例 ID、地域、网卡、RAM 凭证);地址各厂不同:阿里云 100.100.100.200、腾讯云 169.254.0.23、华为云 169.254.169.254。
实例 RAM 角色(免 AK 访问云服务)
给实例绑定 RAM 角色后,实例内程序通过元数据获取 STS 临时凭证访问对象存储等服务,无需在机器上存放永久 AK。
腾讯云/华为云规格命名对照
三厂规格命名规则不同:阿里云『系列+代际+尺寸』,腾讯云『系列名+尺寸代码』,华为云『系列.尺寸.内存倍数』,跨云选型别按名字硬套。
镜像复制与共享
自定义镜像可跨地域复制、可共享给其他账号;复制让多地部署拥有同一环境基线,共享让跨账号交付标准镜像。
对象存储冗余:本地冗余与同城冗余
对象存储底层默认多副本保证持久性;同城冗余(多 AZ)在此基础上抵御可用区级故障,价格更高,适合核心数据。
大文件上传最佳实践
大文件走分片上传 + 断点续传,失败只重传分片;公网带宽有限时用专线或内网网关,避免把上传瓶颈变成业务事故。
共享带宽包
多个 EIP/NAT 共享一条带宽池:按峰值或 95 计费,错峰使用更划算;适合多 IP 多业务的场景。
预算与账单告警
给账号设预算与阈值告警(金额或流量维度),在费用失控前收到通知;同时开启资源级监控,定位到具体资源。
快照计费与清理
快照按实际占用容量计费(增量去重后的容量);能回滚能换钱的地方在于清理策略:过期快照不删就是纯浪费。
S3 协议兼容与三方工具
COS/OBS 对 Amazon S3 API 兼容度较高,早期工具链可直接迁移;OSS 以自有 API 为主,跨云同步常用 rclone 之类多后端工具。
NFS 与 SMB:文件存储协议选择
Linux 生态选 NFS、Windows 生态选 SMB;同时混合系统访问时优选 SMB(Linux 也能挂)或分设两套,避免协议层踩坑。
文件存储性能特征与并发
NAS 的好处是共享,短板是性能:单客户端吞吐有限,靠多客户端聚合;小文件与随机 IO 表现一般,重 IO 场景仍应本地盘/云盘。
预留券与节省计划
对未来用量做承诺换取折扣:预留实例券/节省计划匹配运行中的按量实例后自动抵扣,适合可预测的稳态负载。
云盘加密(KMS)
用 KMS 主密钥加密云盘:创建时勾选即开启,读写透明加解密、性能损耗小;加密盘产生的快照也自动加密,满足静态加密合规要求。
实例自定义数据 User Data
创建实例时传入的初始化脚本(cloud-init):安装软件、配置参数、注册监控等,开机首次自动执行,是自动化交付的第一入口。
ESSD AutoPL 与性能按量
ESSD AutoPL 把容量与性能解耦:有基准性能,可再按需购买额外 IOPS;对 IO 波动大的业务,按量买性能比全程买 PL2/PL3 更省。
云盘多重挂载(共享块设备)
部分高端云盘支持同时挂载到多台实例,形成共享块设备;必须搭配集群文件系统或分布式软件使用,普通文件系统并发挂载会损坏数据。
网络与安全组
VPC、子网、路由表、安全组与弹性 IP
VPC 网段规划实战
网段规划是不可逆决策:避开 IDC 与对端网段、按环境分 VPC、预留扩展空间、容器场景留大段,一次规划决定未来几年互联体验。
安全组规则模型
安全组规则五要素:方向、协议、端口、来源/目的、允许或拒绝;连接是有状态的(放行入方向后返回流量自动允许),默认入拒绝、出允许。
Web 入方向规则实践(80/443 放行)
对公网 Web 服务只放 80/443:来源 0.0.0.0/0;其余端口一律不放;有 HTTPS 强制跳转后 80 也可只保留跳转用途。
路由表基础
每个子网关联一张路由表,路由表决定流量去向:系统路由自动生成,自定义路由手工添加;改路由等于改流量的物理走向。
数据库端口隔离(安全组引用)
3306/6379/5432 等数据端口只允许『应用层安全组』作为来源:以组为源而非 IP,是云上最强的访问隔离实践之一。
网络不通五步排查法
从近到远定位:本机监听 → 安全组/防火墙 → 路由 → 对端策略 → 抓包;每一步只验证一件事,避免多头并进。
子网划分原则
子网按角色分层并绑定可用区:Web、应用、数据、容器、运维各占一段;每个可用区复制一套同构子网,才能做多 AZ 部署。
SSH 端口来源限制
22 端口只允许堡垒机/办公网段访问;没有堡垒机时至少限制到固定出口 IP,并配合密钥认证与失败锁定。
安全组最佳实践清单
安全组治理的五个习惯:默认拒绝、最小开放、组间引用、规范命名、季度审计;坚持下来能将暴露面事故减少大半。
自定义路由与下一跳
自定义路由的核心是『目标网段 + 下一跳』:0.0.0.0/0 指到 NAT 即全子网走 NAT 出网;指到实例可把流量引给防火墙/网关机。
只开常用端口:对外开放清单
公网服务器的最小端口集:80/443 对外,22/3389 仅管理来源;数据库与管理端口一律只在内网开放。定期审计公网暴露面。
负载均衡健康检查与 502 排查
负载均衡 502 常见原因:后端健康检查失败被摘除、后端进程挂、安全组没放健康检查端口;按『检查状态 → 直连后端 → 看日志』顺序排查。
安全组规划与命名规范
按角色建安全组(web/app/db/管理),用组间引用替代 IP 白名单;命名规范让变更与审计一目了然,也避免误绑。
NAT 网关 SNAT 与 DNAT 配置
SNAT 让私网批量出网(交换机粒度);DNAT 把公网端口映射到指定内网主机;两者的组合是『出网共享 + 少量端口对外』的经典配置。
EIP 绑定与解绑操作
EIP 与实例同地域才能绑定;解绑后 EIP 保留(可能收闲置费),绑定新实例即完成公网入口迁移,是故障切换的常用操作。
连通性测试工具组合
四件套走天下:ss 看监听、nc/telnet 测端口、mtr 看链路丢包、curl -v 看应用层;每件工具解决一个层面的问题。
路由优先级与最长前缀匹配
多条路由命中同一目标时按最长前缀匹配(/24 优先于 /16),同前缀下自定义路由优先于系统路由;排查先看有没有更细的路由抢了流量。
公网接入选型:EIP / NAT / 负载均衡
单机要固定公网入口用 EIP;多机共享出网用 NAT;对外服务多机分摊用负载均衡;三者组合覆盖绝大多数公网接入场景。
对等连接操作与验证
对等连接分三步:创建(跨账号需对方接受)→ 双方加路由 → 验证互通;缺任何一步都会『状态正常但流量不通』。
云企业网/云联网操作要点
CEN/CCN 的模型:创建实例 → 加载网络(VPC/专线/VPN)→ 购买带宽包 → 设置跨地域连接带宽;路由由网络自动学习,无需逐条配置。
VPC 内 DNS 解析机制
VPC 给每台实例自动下发内网 DNS(阿里云 100.100.2.136/100.100.2.138):解析内网域名与公网域名;改 /etc/resolv.conf 要防止被 DHCP 覆盖。
NAT 网关创建与规格选择
创建 NAT 网关要点:公网型/私网型、规格(连接数与新建速率)、绑定 EIP、配置 SNAT 与路由;规格不足是高峰期连接超时的常见根因。
安全组出方向管理
出方向默认全允许;高安全场景应收窄:只放业务必需的目标(更新源、对象存储、内网段),切断被入侵后的外联通道。
NAT 网关与 EIP 的对比与组合
NAT 是『多机共享出口』,EIP 是『单个固定地址』;预算充足时『NAT 出网 + 少量 EIP 入口』是清晰的分工组合。
IPsec VPN 配置一致性要点
IPsec 协商三阶段参数必须两端完全一致:IKE 版本与加密套件、预共享密钥、IPsec 加密与 PFS;任何一项不同,隧道都建不起来。
放行 ICMP 与 ping 排查
ping 不通不等于服务不可用:安全组默认拒绝 ICMP;排查连通性需确认 ICMP 是否放行,或改用 TCP 端口探测。
安全组与网络 ACL 的区别
安全组作用于实例网卡且有状态;网络 ACL 作用于子网且无状态,适合整段子网的粗粒度隔离;两者叠加时取交集。
对等连接限制与不传递性
对等连接是点对点且不传递:A-B、B-C 打通不代表 A-C 通;VPC 数量多时用云企业网/云联网替代网状互联。
专线冗余与可靠性设计
单条专线是重大单点:生产应双专线(不同物理路由/不同运营商),配合 BFD 快速检测与 BGP 动态路由实现自动倒换。
私有域名解析(PrivateZone)
私有解析区把自定义域名(如 internal.corp)解析到 VPC 内地址:实例访问与公网同名的内网域名、跨 VPC 共享解析,替代手工 hosts。
VPC 附加网段
VPC 主网段不可修改,但可新增附加网段扩展地址空间:用于新业务段、容器大段或与对端对齐;附加网段之间同样不能重叠。
VPC 流日志
VPC 流日志记录网卡五元组流量元数据(源/目的/端口/协议/动作),投递到日志服务/对象存储,用于审计异常连接与定位丢包。
网络 ACL 使用场景
网络 ACL 是子网级的无状态防火墙:适合『整段子网一刀切』的粗粒度隔离(如生产子网只允许办公段进入管理端口)。
容器与 Docker
镜像、容器、网络、存储与 Compose
docker run 创建并启动容器热门
最核心的命令:从镜像创建容器并启动。常用组合 -d(后台)、--name(命名)、-p(端口)、-v(挂载)、-e(环境变量)、--restart(重启策略)。
docker ps 查看容器热门
列出容器状态:默认只显示运行中的容器,-a 显示全部(含已退出),配合 --filter 与 --format 适合脚本化巡检。
docker exec 进入容器执行命令热门
在运行中的容器内执行命令(最常用是 -it 开 shell 排查问题);exec 不改容器状态,退出不会停容器,与 attach 有本质区别。
docker logs 查看容器日志热门
读取容器 stdout/stderr 日志(json-file 驱动时本地可读):-f 跟随、--tail 尾部、--since 时间范围,是容器排障第一入口。
docker build 构建镜像热门
用 Dockerfile 构建镜像:-t 打标签、-f 指定文件、--build-arg 传参、--target 选多阶段目标;构建上下文大小直接影响速度。
docker pull 拉取镜像
从镜像仓库拉取镜像到本地:默认 Docker Hub;生产应固定版本 tag(避免 latest 漂移),必要时用 digest 锁定内容。
docker inspect 查看容器详情
输出容器/镜像/网络/卷的完整 JSON 状态:用 -f 配合 Go template 提取字段,是查状态、退出码、挂载、网络配置的瑞士军刀。
端口发布 -p 写法与暴露面控制
掌握 -p 的各种写法并控制监听地址:默认绑定 0.0.0.0 全网络,内网服务应写成 127.0.0.1:宿主端口:容器端口,避免数据库、管理后台公网裸奔。
docker compose 命令(Compose V2)
Compose V2 以 docker 插件形式提供,命令为 docker compose(子命令),取代独立的 docker-compose(V1,Python 版已停止维护)。推荐用 compose.yaml 文件名。
docker images 镜像列表
查看本地镜像:仓库、标签、镜像 ID、大小;<none>:<none> 是悬空镜像,通常由新构建覆盖旧标签产生,需定期清理。
多阶段构建(Multi-stage build)
一个 Dockerfile 多个 FROM 阶段:编译工具链留在中间阶段,最终镜像只 COPY 运行产物。Go/Rust/前端项目常用,体积可从 GB 级降到几十 MB。
docker compose up 启动编排
按依赖顺序创建并启动全部服务:-d 后台、--build 先构建镜像、--wait 等健康检查通过再返回,是本地与中小规模部署的日常入口。
docker push 推送镜像与 login
推送本地镜像到远程仓库:先登录、再按 仓库地址/命名空间/名称:tag 打标签,然后 push;K8s 拉取私有镜像需配 imagePullSecrets。
docker stop 优雅停止容器
发送 SIGTERM 等待超时(默认 10s)后 SIGKILL:给进程保存状态、关闭连接的机会;生产务必确认应用能正确处理 SIGTERM。
Dockerfile FROM 基础镜像
每个构建阶段的起点,决定系统能力与镜像体积。生产建议固定 tag 或 digest,并按需声明 --platform,避免 latest 漂移导致构建结果不可复现。
Compose 文件结构与顶层字段
一个 compose.yaml 描述多容器应用:services 定义容器,networks/volumes/secrets/configs 定义共享资源,顶层 name 指定项目名;其余顶层键已废弃。
docker rm 删除容器
删除已停止的容器:运行中需 -f 或先 stop;-v 连同匿名卷一起删除,避免卷残留占用磁盘。
docker stats 资源监控
实时查看容器 CPU、内存、网络、磁盘 IO:--no-stream 取一次快照;配合 --format 适合脚本巡检与告警基线。
docker system prune 清理资源
清理未使用的镜像、容器、网络与构建缓存:-a 扩大到全部未使用镜像、--volumes 连匿名卷;是高风险命令,先看 df 再执行。
bind mount 宿主机目录挂载
把宿主任意目录挂进容器:改配置、换代码立即生效,适合开发与配置注入;代价是权限、SELinux、路径差异等宿主特性会直接进入容器。
Dockerfile CMD 默认命令
容器启动的默认命令或参数:可被 docker run 尾部命令整体覆盖;多条 CMD 只有最后一条生效。与 ENTRYPOINT 组合时扮演默认参数角色。
docker compose logs 聚合日志
一次性查看多个服务日志并按容器名前缀区分:-f 持续跟踪、--tail 限定行数、--since 限定时间;定位启动报错比逐个 docker logs 快得多。
docker tag 重命名镜像
给镜像打新标签(本质是加别名,不复制数据):推送前改成仓库格式;同一镜像可打多个标签用于版本与回滚管理。
docker rmi 删除镜像
删除本地镜像:被容器引用的镜像需先删容器,-f 强制;清理悬空镜像用 image prune,效果更安全。
docker restart 重启容器
stop + start 的组合:常用于改配置文件后让应用重新加载;频繁重启是症状不是方案,应找到根因。
docker network create 自定义网络
创建自定义网络(bridge/overlay 等):同一网络内容器可用容器名互相解析,还能自定义子网、网关与隔离边界。
docker system df 磁盘占用
查看 Docker 各资源占用(镜像/容器/卷/构建缓存)与可回收量:磁盘告警时第一眼工具,-v 显示卷明细。
docker volume ls 数据卷列表
列出数据卷名称与驱动。数据卷由 Docker 管理、生命周期独立于容器,默认 local 驱动落在宿主 /var/lib/docker/volumes 下,是持久化与多容器共享数据的首选。
自定义 bridge 网络与容器名解析
默认 docker0 网络只保证 IP 互通、不支持按名字解析;自建 bridge 网络提供内置 DNS,同网络内用容器名即可互访,是 Compose 单机多容器通信的基础。
Dockerfile RUN 指令
构建期执行命令:安装依赖、编译、生成配置。每条 RUN 生成一个镜像层,安装与清理必须写在同一层,否则体积并不会变小。
Dockerfile ENTRYPOINT 固定入口
把镜像固定为某个可执行入口:docker run 的尾部命令作为参数追加而不是替换。脚本型入口必须用 exec 形式并注意 exec "$@" 转交参数。
docker compose down 停止并清理
停止并删除本项目的容器与网络:-v 连具名卷一起删、--rmi 删镜像、--remove-orphans 清理遗留容器。生产执行 down -v 等于删数据,务必确认。
depends_on 启动顺序与健康条件
短语法只保证启动先后,不保证依赖『就绪』:web 可能在 MySQL 初始化完成前就连库。长语法配合 condition: service_healthy 才是可靠的启动门闩。
Compose 端口发布写法
compose 的 ports 支持短语法字符串与长语法结构:务必给短语法加引号,否则 YAML 会把 22:22 解析成六十进制整数,映射到离谱端口。
docker start 启动已存在容器
重新启动一个已创建/已停止的容器:保留原有配置与数据;start 不会应用新参数,改端口/挂载要删了重建。
EXPOSE 与 -p 的区别
EXPOSE 只是镜像里的声明性元数据,不打开任何端口;真正对外映射必须靠 -p/-P。两者混淆是『端口为什么不通』类问题的头号来源。
Dockerfile COPY 指令
从构建上下文或前一阶段复制文件:支持 --chown 设定归属。先复制依赖清单、后复制源码可最大化利用缓存,是加速构建的标准手法。
Dockerfile USER 运行用户
指定后续指令与容器进程的默认用户。安全基线要求不用 root 跑应用:先建用户、调整目录属主,再切 USER;系统级安装必须放在切换之前。
.dockerignore 构建上下文裁剪
放在构建上下文根目录,按 gitignore 风格排除文件:缩小发送给构建器的上下文、加速构建,并防止 .env、密钥、node_modules 混进镜像。
docker compose exec 与 run 的区别
exec 进入已在运行的容器执行命令(改配置、连数据库客户端);run 则新建一次性容器跑任务(数据库迁移、批处理),必要时 --rm 用完即清。
Compose 环境变量与 env_file
三层来源要分清:宿主机环境参与 ${VAR} 插值;environment 把值注入容器;env_file 从文件批量注入。项目目录的 .env 默认只用于插值,不会自动进容器。
Compose 数据卷声明与使用
顶层 volumes 声明具名卷,服务里以 卷名:容器路径 引用;绑定挂载直接写宿主路径。具名卷由引擎管理,跨容器生命周期保留数据。
镜像仓库与镜像地址命名
镜像地址是 [仓库地址/]命名空间/仓库名:标签(或 @摘要)三段结构:不带地址默认 Docker Hub,私有镜像必须写全地址,否则登录与推送全部对不上。
docker network ls 网络列表
列出 Docker 网络:默认三件套 bridge(默认)、host(宿主网络)、none(无网络);自定义网络是容器间通过名字互相解析的前提。
docker port 查看端口映射
显示容器端口到宿主端口的映射关系:确认 -p 是否生效、映射到哪个地址,是『服务访问不通』的第一现场命令。
docker volume create 创建数据卷
预先创建命名数据卷,便于初始化权限、多容器共享与跨容器复用。重复创建同名卷不报错也不重置数据,这是与『重新初始化』直觉相反的关键行为。
host 网络模式
容器直接复用宿主网络栈:无 NAT 与 veth 转发开销,吞吐和延迟表现最佳;代价是失去网络隔离、端口与宿主进程直接竞争,且仅 Linux 语义完整。
Dockerfile ENV 环境变量
把环境变量固化进镜像:后续 RUN 与运行中的容器都能读到,运行时可被 docker run -e 覆盖。适合时区、语言、版本路径等非敏感配置。
Dockerfile WORKDIR 工作目录
设置后续 RUN、CMD、ENTRYPOINT、COPY、ADD 的工作目录,不存在会自动创建。它同时决定容器运行时的默认 cwd,影响相对路径配置的解析。
docker build 参数组合(--build-arg/--target/--no-cache)
构建命令的常用参数组合:改构建参数、只构建中间阶段、强制重建、多 Dockerfile 场景与目标平台,配合 buildx 还能出多架构镜像。
Compose 健康检查配置
在服务下定义 healthcheck:test 命令、周期、超时与启动宽限。它是 depends_on 条件、up --wait 与编排调度的共同依据,也是容器自愈的基础。
Compose 重启策略 restart
restart 字段控制容器退出后的自动拉起:开发常用 unless-stopped,常驻服务建议 always/unless-stopped;但它替代不了健康检查。
容器日志驱动与大小限制
json-file 驱动默认不限制日志体积,长期运行的服务会把磁盘写满:在 daemon.json 或单容器 --log-opt max-size/max-file 设置轮转上限。
docker cp 容器与宿主机互拷文件
在宿主机与容器之间复制文件/目录:适合应急取配置、捞日志、塞临时补丁;生产持久数据应走卷挂载而非 cp。
docker save 导出镜像为 tar
把镜像(含全部层与元数据)导出成 tar 文件:用于离线环境交付、跨机器搬运;与 docker export(容器文件系统快照)完全不同。
docker events 实时事件流
订阅 Docker 守护进程事件:容器启动/停止/死亡、镜像拉取、网络变化;排『谁在重启容器』与『何时挂的』的效率工具。
数据卷备份与迁移(tar 打包)
通用做法:用临时容器把卷打包成 tar.gz 存到宿主,跨机器迁移时反向解包。备份用只读挂载、恢复用可写挂载,避免打错方向毁原数据。
Dockerfile ARG 构建期变量
只在构建期存在的参数:用 docker build --build-arg 传入,可给默认值。多阶段构建中每个阶段需重新声明;值会留在构建历史里,不能放密钥。
Dockerfile HEALTHCHECK 健康检查
定义容器内自检命令:通过则 docker ps 显示 healthy,失败累计显示 unhealthy。让编排与监控可以基于状态而非端口探测判断可用性。
docker compose ps 查看项目状态
列出本项目所有服务容器的状态、端口与健康:--all 含已停止容器,--format json 便于脚本消费;排查『哪个服务没起来』的第一步。
docker compose build 与 pull 控制镜像来源
build 按服务的 build: 段构建镜像(--no-cache 全量重建、--pull 先拉基础镜像);pull 只拉 image: 指定的镜像。CI 里两种来源要分清楚。
Compose 网络与服务发现
默认自动创建 <项目>_default 网络,服务名即 DNS 主机名;需要隔离或接入既有网络(如统一反向代理)时,在顶层声明自定义网络并用 external 接入。
docker login 仓库认证
登录镜像仓库以推送/拉取私有镜像:交互输入或 --password-stdin 传入密码,凭据保存在 ~/.docker/config.json。密码严禁写在命令行 -p 里。
docker top 查看容器进程
显示容器内运行的进程列表(ps 视角):确认主进程、worker 数量、僵尸进程;比 exec ps 更快且不进入容器。
docker load 导入镜像
从 tar 文件导入镜像(与 save 配对):内网/离线环境部署的标准动作;导入后可正常 run 或重新 tag/push。
docker update 调整容器限制
在线更新容器的资源限制与重启策略:内存、CPU、重启策略可在不重建容器的情况下调整;部分参数(端口/挂载)不支持热改。
docker volume prune 清理未使用卷
批量回收未被任何容器引用的卷。Docker 23.0 起默认只删匿名卷,需 -a/--all 才包括闲置命名卷;执行前用 ls --filter dangling=true 核对清单。
基础镜像选型(alpine / slim / distroless)
基础镜像决定体积、libc 兼容与可调试性:musl 的 alpine 与 glibc 的 debian-slim 不是等价替换。先满足二进制/运行时的 libc 要求,再谈体积优化。
PID 1 信号处理与 --init
容器内 PID 1 不享受内核的默认信号兜底,且不负责回收僵尸进程。应用若没处理 SIGTERM,docker stop 只能等超时强杀,造成停机变慢或数据损坏。
docker compose config 校验与渲染
把多文件、变量插值、override 合并后的最终配置渲染出来并做语法校验:改完 compose 先跑它,能在部署前发现 YAML/变量/引用错误。
Harbor 私有镜像仓库
主流开源自建仓库:项目级 RBAC、镜像扫描、远程复制、机器人账号与配额。CI 用机器人账号按最小权限推送,生产环境全走内网仓库。
镜像标签策略
生产用不可变标签(语义版本或 git commit),latest 只留给便利场景:latest 不保证指向哪个版本,回滚与审计全部失效。
docker history 查看镜像分层
展示镜像每一层的创建命令与大小:定位『镜像为什么这么大』、确认敏感文件是否残留在历史层;配合 --no-trunc 看完整命令。
docker network inspect 网络详情
查看网络配置与成员:子网、网关、已接入容器及其 IP;容器互访异常时先确认双方是否在同一网络。
docker kill 强制终止容器
直接发送信号(默认 SIGKILL)终止容器:无优雅退出过程,用于进程僵死、stop 无法结束(D 状态)时;日常应优先 stop。
docker volume rm 删除数据卷
删除不再使用的数据卷释放磁盘。卷被任何容器(含已停止容器)引用时会拒绝删除;先定位引用者、确认数据已备份,再执行删除。
-v 与 --mount 语法对比
两种等价写法:-v 简洁但缺失路径会静默创建;--mount 键值显式、路径不存在直接报错。生产部署建议 --mount,用报错拦住拼写错误。
Dockerfile EXPOSE 声明端口
声明镜像内应用监听的端口,供使用者与工具识别、并作为 docker run -P 随机发布的依据;它本身不发布任何端口,映射仍由 -p 决定。
Compose 资源限制 deploy.resources
在服务里用 deploy.resources.limits 限制 CPU 与内存(Compose V2 单机也生效):防止单个服务吃光宿主;老 V1 写法 mem_limit/cpus 不推荐混用。
Compose 多文件合并与 override
按环境拆分配置文件:base + override 自动叠加,或用 -f 显式指定多文件(后写优先)。标量覆盖、映射深合并,列表以追加/合并为主。
buildx 多架构构建与推送
用 buildx 一次构建多平台镜像并推送:多架构镜像不能本地 docker load(除非单平台导出),必须直接 --push 或 --output=type=registry。
容器时区设置
容器默认 UTC:日志时间与业务时间差 8 小时是经典问题。设置 -e TZ=Asia/Shanghai 依赖镜像内带 tzdata;否则挂载宿主 /etc/localtime 或装 tzdata 包。
docker diff 查看容器文件系统改动
列出容器相对镜像的文件系统变化:A 新增、C 修改、D 删除;用于定位『容器里改了什么』,也是决定要不要固化进镜像的依据。
docker network connect/disconnect 动态接入网络
给运行中的容器接入或断开额外网络:不用重建即可让容器同时属于多个网络(如同时连前端网与监控网)。
docker volume inspect 查看卷详情
查看卷的宿主挂载点、驱动与选项:排错时确认数据实际落在哪、NFS 参数是否生效;也是编写备份脚本时定位数据目录的标准方式。
docker compose 水平扩容
一条命令把无状态服务扩到多实例:--scale web=3。前提是服务不绑定固定宿主端口,否则第二个实例直接端口冲突;Compose 本身不带负载均衡。
Compose 项目名与多环境共存
项目名决定容器、网络、卷的前缀:同名服务在不同项目名下互不干扰。用 -p 或 COMPOSE_PROJECT_NAME 区分开发/测试环境,实现同机多栈。
镜像分层与写时复制
镜像由只读层叠加而成,容器启动时加一个可写薄层:相同层在多个镜像间共享,改文件触发写时复制。层设计直接决定拉取速度与镜像体积。
容器权限能力 --cap-add/--cap-drop
Linux 能力机制允许按需授予特权:默认丢弃大部分能力,需要网络管理、绑定低端口等再单独加;--privileged 等于给全部权限加宿主设备,生产禁忌。
docker commit 从容器创建镜像
把容器当前状态固化为新镜像:调试场景(保留现场)方便,但不可重复、不可审计,生产镜像应始终由 Dockerfile 构建。
docker attach 接入容器主进程
把当前终端接到容器 PID 1 的标准输入输出:能观察输出、发送输入;但 Ctrl+C 会把信号转发给主进程,操作不当直接停服。进容器开 shell 应首选 exec。
Dockerfile ADD 指令
COPY 的增强版:额外支持本地 tar 自动解压与 URL 下载。除『确实需要解压 tar』外,一律优先 COPY——ADD 的隐式解压常让人意外。
Compose profiles 按需启用服务
给服务加 profiles 标签后默认不启动,需要时用 --profile 显式拉起:适合调试工具(adminer、redis-commander)、一次性任务与可选组件。
Compose 与 Kubernetes 选型对照
单机多容器用 Compose;多节点、自愈、滚动发布与弹性诉求上 Kubernetes。先看清投入产出:K8s 的学习与运维成本远高于 Compose。
docker manifest 查看多架构镜像
多架构镜像是一个『清单列表』:同一 tag 下按平台指向不同镜像。用 manifest inspect 或 buildx imagetools 查看实际包含哪些架构,避免拉错平台。
docker export/import 与 save/load 的区别
export/import 搬的是『容器文件系统』(拍平、丢元数据);save/load 搬的是『镜像』(保留全部层与历史)。迁移部署产物用 save/load,清理过的快照才用 export。
docker rename 重命名容器
为已存在容器改名:不重建、不影响运行;常用于修正命名或为批量操作排序;改名后相关的脚本与 DNS 别名需同步更新。
tmpfs 内存临时挂载
把目录挂到宿主内存:读写极快、容器停止即消失,适合密钥、会话、高频小文件等不需要落盘的数据;容量计入宿主内存,开太大有 OOM 风险。
Dockerfile LABEL 元数据标签
给镜像附加键值元数据:版本、维护者、源码地址等。OCI 规范推荐反向域名键名,便于资产管理与自动化识别;MAINTAINER 指令已废弃。
docker context 多环境切换
用 context 在本地、测试机、远程 Docker 主机之间切换 CLI 目标:每个 context 保存端点与证书;切换前务必 docker context show 确认,避免把命令打到生产。
容器 DNS 与 --add-host
容器 DNS 来源优先级:--dns > daemon.json > 宿主 resolv.conf;用户自定义网络内置 127.0.0.11 解析服务名与别名;--add-host 可模拟 hosts 映射。
网络别名 --network-alias
给容器在网络内追加可解析名字:滚动升级时用稳定别名指向新实例,或让多个容器共用同一别名,靠 DNS 多值实现粗粒度轮询。
镜像漏洞扫描
上线前扫描镜像 CVE:docker scout quickview(Docker 官方)或 trivy image 均可。重点看基础镜像与直接依赖的高危漏洞,及时换新基础版本。
只读根文件系统与 tmpfs 兜底
用 --read-only 把容器根文件系统设为只读:阻止进程写坏镜像层、限制持久化位置;再对必要可写目录挂 tmpfs 或数据卷,兼顾安全与可用。
none 网络模式
容器只保留 lo 回环、不接任何网络:离线计算、安全沙箱与合规任务的干净起点;需要临时联网时可运行中挂接网络,无需重建容器。
docker network rm 与 prune
删除自定义网络回收资源:有容器(含停止)连接时拒绝删除;prune 批量清理未被使用的网络。系统内置的 bridge/host/none 永远不会被删。
Kubernetes
kubectl、工作负载、服务与配置管理
kubectl get 查询资源列表热门
最常用命令:列资源、看状态。掌握 -n/-A、-o wide、--show-labels、--sort-by 组合即可覆盖大半个日常查询场景;简写 rs、deploy、svc、cm、ns 要记牢。
kubectl apply 声明式部署热门
声明式核心命令:按配置文件把资源收敛到期望状态,可重复执行。支持 -f 文件/目录、-k kustomize 目录、--dry-run=server 预检;与 create 的『已存在则报错』形成对比。
Deployment 与滚动更新热门
无状态工作负载的标准控制器:管理 ReplicaSet、驱动滚动更新与回滚。默认 RollingUpdate(maxSurge 25%、maxUnavailable 25%),发布历史默认保留 10 个 revision。
kubectl logs 查看容器日志热门
查看 Pod 内容器日志:多容器用 -c 指定,容器重启过要看 --previous 的上一实例日志(崩溃现场),多副本按标签聚合输出需 --prefix 区分来源。
kubectl rollout 发布管理热门
管理 Deployment/DaemonSet/StatefulSet 的滚动发布:status 看进度、history 看版本、undo 回滚、restart 触发重启、pause/resume 控制节奏。
Service 概念与四种类型热门
Service 给一组 Pod 提供稳定虚拟 IP 与 DNS:靠标签选择器绑定后端,随 Pod 增删自动维护 Endpoints。四种类型:ClusterIP(默认)/NodePort/LoadBalancer/ExternalName。
kubectl describe 资源详情
输出资源的完整配置与相关事件(Events 在最后几行):Pod 为何调度失败、镜像拉取报什么错、探针是否失败,describe 通常是第一现场。
Pod 概念与最小示例
Pod 是调度最小单元:一个或多个容器共享网络命名空间(同一 IP、端口互斥)、共享 volumes 与生命周期。通常由控制器管理,裸 Pod 只在调试时用。
三类探针:liveness/readiness/startup
readiness 决定是否进流量(失败摘除端点);liveness 决定是否重启(失败杀容器);startup 保护慢启动(成功前其他探针不生效)。职责不同,乱配会把稳定性越治越差。
kubectl exec 进入容器执行命令
在运行中容器里执行命令或开交互 shell:-it 交互、-c 指定容器、-- 分隔 kubectl 与容器命令。distroless 等精简镜像没有 shell,只能换排查思路。
Pod 生命周期与容器状态
Pod 相位 Pending → Running → Succeeded/Failed;容器状态 Waiting/Running/Terminated。CrashLoopBackOff 不是相位,而是容器反复退出后的重启退避现象。
requests/limits 与 QoS
requests 决定调度与 HPA 基准,limits 是硬上限:内存超限立即 OOMKilled,CPU 超限被限流(不杀进程)。两者组合决定 QoS 等级与驱逐优先级。
kubectl delete 删除资源
删除资源支持按文件、按名称、按标签三种方式;默认级联删除下属资源(如 Deployment 删 ReplicaSet/Pod),--grace-period/--force 是应急手段而非日常选项。
kubectl rollout restart 滚动重启
不改配置的重启姿势:给 Pod 模板打一次时间戳注解触发滚动重启,逐个替换实例不掉可用性;改完 ConfigMap/Secret 后让它生效的标准动作。
Ingress 七层路由
用一组规则把集群外 HTTP(S) 流量路由到内部 Service:按 host/path 转发、终结 TLS。Ingress 只是规则对象,真正干活的是 Ingress Controller。
kubectl 上下文与 kubeconfig
kubectl 靠 kubeconfig 找集群:里面是 clusters/users/contexts 三组配置,context 把集群与用户绑在一起。多集群切换用 config use-context,务必先确认当前上下文再操作。
kubectl port-forward 本地端口转发
把本地端口转发到 Pod/Service:调试数据库、看内部面板、验证 Service 是否通。只在 kubectl 进程存活期间有效,用于诊断不作为生产入口。
kubectl create 命令式生成资源
快速生成资源或在无 YAML 时应急:deployment/service/namespace/secret/configmap/job 都支持;--dry-run=client -o yaml 生成模板后修改再 apply 是最佳用法。
Secret 密钥管理
存放口令、证书、令牌等敏感数据:值默认 base64(编码≠加密),可配 etcd 静态加密与 KMS。类型含 Opaque、dockerconfigjson、tls 等,必须收紧 RBAC。
kubectl set image 更新镜像
命令式触发镜像更新,常用于应急发版与演练:格式 容器名=新镜像。变更同样应尽快回写 YAML;用 get 确认镜像是否真的变了。
kubectl events 与事件排查
事件是集群的『事故简报』:调度失败、镜像拉取、探针、OOM 都会写事件。默认保留时间有限,排障时要第一时间抓取并按时间排序。
K8s 清单结构(apiVersion/kind/metadata/spec)
所有 K8s 资源清单都是同一骨架:apiVersion+kind 定位资源类型,metadata 描述对象身份,spec 是期望状态;status 由控制器回填,写清单时永远不碰。
ConfigMap 配置管理
存放非敏感配置的键值对象:可整包注入环境变量、也可挂载成文件;与镜像解耦,改配置不必重打包。注意环境变量方式不热更新,挂载方式约 1 分钟级最终一致。
PV、PVC 与访问模式
PV 是集群级存储资源,PVC 是命名空间的申领:Pod 通过 claimName 使用 PVC。访问模式、容量与 StorageClass 三个维度的匹配决定能否绑定成功。
kubectl scale 调整副本数
命令式调整副本数:适合应急扩容,长期仍应把副本数写进 YAML/GitOps。--current-replicas 做前置校验,防止在漂移状态下误放大。
HPA 水平自动扩缩容
按指标自动调整副本数:autoscaling/v2 支持 CPU/内存/自定义与外部指标。CPU 利用率按 requests 计算——没设 requests 的 Deployment 扩不起来。
kubectl -o 输出格式(yaml/jsonpath/custom-columns)
把资源按需输出:yaml/json 用于查看完整对象,jsonpath 与 custom-columns 用于脚本取字段。取状态、IP、镜像版本这类信息比 grep 稳得多。
StatefulSet 有状态工作负载
为有状态应用提供稳定网络标识与稳定存储:Pod 按序号 0..N-1 命名与建删(OrderedReady),每个 Pod 绑定自己的 PVC;必须配 Headless Service 才有稳定 DNS。
集群内服务 DNS 解析
Pod 里解析服务名的完整形态是 name.namespace.svc.cluster.local:搜索域自动补全,短名仅在当前命名空间可用;跨命名空间调用必须写 name.namespace 或全域名。
RBAC:Role/RoleBinding 与 ServiceAccount
RBAC 三要素:主体(User/Group/ServiceAccount)— 角色(Role/ClusterRole)— 绑定(RoleBinding/ClusterRoleBinding)。命名空间级用 Role,集群级资源用 ClusterRole。
标签选择器与字段选择器
筛选资源的两种姿势:-l 按标签(业务语义,如 app=web),--field-selector 按系统字段(状态、节点、名字)。组合使用可快速锁定问题实例。
kubectl drain 驱逐节点工作负载
驱逐节点上的 Pod 以便安全维护:对可迁移 Pod 执行优雅驱逐(走 PDB),DaemonSet 与本地存储 Pod 需显式参数处理;先 cordon 再 drain。
kubectl 命名空间操作
命名空间是资源与权限的隔离边界:创建、切换默认命名空间、查看配额。多团队共用集群时,命名空间规划比命令本身更值得先想清楚。
Init 容器(初始化容器)
在主容器启动前按序执行并必须成功完成的容器:用于等待依赖就绪、数据库迁移、生成配置;任何一步失败,Pod 会按 restartPolicy 重试而不是启动主容器。
LoadBalancer 云负载均衡
向云平台申请外部负载均衡并自动绑定 Service:分配公网/内网 VIP,是生产对外入口的标准姿势;自建集群没有云控制器时 EXTERNAL-IP 会一直 pending。
Endpoints 与选择器排错
Endpoints(及 EndpointSlice)是 Service 的实际后端清单:由控制器按选择器+就绪状态生成。Endpoints 为空是『Service 没流量』类问题的第一检查点。
kubectl top 资源用量查看
查看 Pod/节点实时 CPU 与内存:依赖 metrics-server 组件;--containers 看单容器、--sort-by 排行靠前的资源消耗者,是容量排查第一步。
CronJob 定时任务
按 cron 表达式周期创建 Job:默认时区是 UTC(对国内业务等于凌晨跑偏 8 小时),建议显式配置 timeZone;concurrencyPolicy 控制重叠与并发。
NodePort 节点端口暴露
在每个节点的高位端口(默认 30000-32767)上开放 Service:外部用 节点IP:NodePort 访问;适合测试与无 LB 环境,固定端口可能冲突且安全组要单独放行。
Ingress Controller 与 IngressClass
Ingress 的实际实现:监听 Ingress 对象并生成反向代理配置。集群里通常只装一种主 controller;ingressClassName 用来在多个 controller 间分配规则。
节点选择与亲和性调度
把 Pod 引导到目标节点:nodeSelector 简单硬性;nodeAffinity 支持 required/preferred 与运算符;podAntiAffinity 让同类副本分散,避免单点。
优雅终止与 preStop
删除 Pod 时并行发生两件事:从 Endpoints 摘除与发送 SIGTERM,然后等 terminationGracePeriodSeconds(默认 30s)再 SIGKILL。应用要处理 SIGTERM 并在宽限期内退出。
kubectl wait 等待条件成立
等资源达到指定状态再继续,脚本化发布的利器:支持 --for=condition、delete 语义与超时控制;比 sleep + 轮询优雅可靠。
DaemonSet 每节点一个 Pod
在(符合条件的)每个节点上运行一个 Pod:日志采集、监控代理、CNI、kube-proxy 这类节点级组件标配;节点加入自动补、移除自动清。
Sidecar 多容器与共享
同一个 Pod 里放辅助容器(日志转发、代理、配置渲染):共享网络与卷,生命周期同进退;K8s 1.29+ 支持原生 sidecar(initContainer 且 restartPolicy: Always)。
Headless Service 无头服务
clusterIP: None 的 Service:不为服务分配虚拟 IP,DNS 直接返回各 Pod 的 A 记录。StatefulSet 的稳定 DNS、自定义服务发现都依赖它。
配置注入方式:环境变量 vs 挂载卷
两种注入各有代价:env 简单但改值必须重建 Pod;卷挂载支持热更新但可能有 subPath 不更新、文件权限、目录覆盖等细节坑。按组件行为选型。
StorageClass 动态供给
声明『用哪种存储怎么创建』:provisioner 负责动态生成 PV;WaitForFirstConsumer 等 Pod 调度后再建卷,避免跨可用区绑定失败,是生产默认推荐。
PodDisruptionBudget 中断预算
为自愿中断(drain、节点维护、集群升级)保底可用副本:minAvailable 或 maxUnavailable 二选一;它不防节点宕机等非自愿中断,那是多副本与反亲和要解决的问题。
kubectl -w 持续观察变化
get -w 保持连接持续输出资源变化:观察 Pod 从 Pending→ContainerCreating→Running,或等待滚动更新实例更替;--watch-only 只看变化不看初始列表。
kubectl diff 预览变更
在执行前预览 apply 会改什么:输出服务端现状与文件的差异(类 UNIX diff),有差异时退出码为 1;上线前审查变更的主流手段,配合 CI 使用。
kubectl taint 节点污点与容忍
污点让节点拒绝/劝退特定 Pod:NoSchedule 不调度新 Pod、PreferNoSchedule 尽量避免、NoExecute 驱逐不满足容忍的存量 Pod;与容忍(Toleration)配对使用。
ReplicaSet 与控制器层级
ReplicaSet 保证指定数量的同质 Pod 运行:无发布能力,只负责『数量守恒』。它是 Deployment 的执行层——日常不手工维护 RS,理解层级即可看懂故障现象。
Job 批处理任务
运行到完成即退出的任务控制器:completions 定总成功次数、parallelism 控并发、backoffLimit 限失败重试;restartPolicy 只能是 Never 或 OnFailure。
Pod 卷:emptyDir 与 hostPath
Pod 级卷在容器间共享:emptyDir 随 Pod 生命周期(重启保留、删除即清),hostPath 挂宿主路径(裸/特权场景)。生产数据请走 PVC,临时交换用 emptyDir。
ResourceQuota 与 LimitRange
ResourceQuota 限命名空间总量(CPU/内存/对象数),LimitRange 定单容器默认值与上下限:多团队共享集群的『防超卖、防裸奔』组合拳。
kubectl edit 在线编辑资源
打开编辑器修改资源配置,保存即提交:适合应急微调与学习字段结构;会被后续 apply/控制器收敛回去,重要变更应回写 YAML 到仓库。
kubectl cordon 标记节点不可调度
把节点标记为 unschedulable:新 Pod 不再调度到该节点,已有 Pod 不受影响。这是节点维护的第一步(cordon → drain → 处理 → uncordon)。
kubectl explain 字段文档
内置的字段说明:查某类资源某个层级支持哪些字段、类型与含义,还能 --recursive 展开。写 YAML 时不用盲目搜索,权威且对应集群版本。
NetworkPolicy 网络策略
Pod 级防火墙:默认全通,可改为默认拒绝再逐条放行。策略是『允许列表』语义;需要 CNI 支持(Calico/Cilium 等),Flannel 单独不生效。
服务端应用(--server-side)
由 API Server 合并字段:多管理者(kubectl、Operator、控制器)各管各的字段,冲突显式报错而非静默覆盖;大规模与 GitOps 场景推荐。
kubectl patch 打补丁更新
命令行局部更新资源:strategic merge 适合改字段,json patch 适合精确增删数组元素,merge patch 直接替换对象;比 edit 更适合脚本化。
kubectl auth can-i 权限自检
查询当前身份能做什么:验证 RBAC、排查 403、模拟 ServiceAccount 权限。发布前用它核对最小权限,比出事后再猜更省事。
kubectl cp 容器与本地互传文件
在本地与 Pod 容器之间复制文件:pod:/path 语法,支持 -c 指定容器;要求容器内有 tar(精简镜像可能没有),大文件建议直接走对象存储中转。
kubectl label 与 annotate
给资源打标签(可被选择器检索,业务语义)与注解(不可检索,存长文本/配置元数据)。两者都支持 --overwrite 覆盖与 -l 批量操作。
kubectl api-resources 资源清单
列出集群支持的所有资源类型与简写、是否命名空间级:写 RBAC 与排查『资源不存在』问题前先查它,避免凭记忆猜 apiVersion 与 kind。
kubectl attach 接入运行中容器
attach 到容器主进程控制台(类似 docker attach):用于查看前台交互进程、发送输入;与 exec 不同,它连接的是 PID 1 的 I/O。
kubectl proxy 访问 API Server
在本地起一个到 API Server 的代理端口(带当前凭据):便于用 curl 直接读 API、访问集群服务代理路径;仅调试用途,不要暴露。
容器排障
日志、进入容器、资源与网络问题定位
CrashLoopBackOff 排查热门
容器反复崩溃后的退避重启:必须看 --previous 的日志拿崩溃现场,再看退出码与探针配置。高频原因:配置错误、依赖连不上、探针误杀、命令写错。
Pod Pending 排查清单
Pending 表示还没被调度或还在拉镜像阶段:describe 的 Events 会直接给出原因。按 资源不足 → 污点/亲和 → 卷未就绪 → 配额 的顺序核对,基本一查一个准。
容器退出码速查(0/1/125/126/127/137/143)
退出码是最快的线索:137 与 143 都与信号相关(128+N),125-127 是 Docker 自身或命令问题。先看码再看日志,方向不跑偏。
ImagePullBackOff 镜像拉取失败
kubelet 拉镜像失败后的退避状态:describe 的 Events 给出确切原因(401、tag 不存在、网络超时、证书)。私有仓库要先补 imagePullSecrets 或节点级认证。
Service/Ingress 502/504 排查
网关层 502/504 大多不是网关自己坏了:502 常是后端端口不通/进程崩,504 是后端超时。按 入口→Service→Endpoints→Pod 链路逐层缩小范围。
容器启动失败排查五步
容器起不来按固定顺序走:看状态 → 看日志 → inspect 配置 → 校验 entrypoint/cmd → 手动换 shell 验证。先复现最小现场,再谈改配置。
K8s OOMKilled 排查
容器内存超过 limit 被内核杀死:状态里 reason=OOMKilled、退出码 137。和 Docker 一致:先确认 limit 与真实用量,再区分配置问题与应用内存增长。
节点 NotReady 排查(kubelet/运行时/磁盘)
节点失联时新 Pod 无处调度、已有负载可能被驱逐:先看 Node 条件与 Reason,再上节点查 kubelet、容器运行时、磁盘与网络。
容器 OOMKilled 排查
容器被 cgroup 内存上限杀死:docker inspect 的 State.OOMKilled=true、退出码 137。要区分『容器限制太小』还是『应用内存真的涨了』,再决定调限还是修代码。
Docker 磁盘占满排查
宿主磁盘被 Docker 吃满:镜像层、日志、数据卷、构建缓存是四大来源。docker system df -v 先定位大头,再做有选择的清理而不是无脑 prune。
探针失败排查(Unhealthy)
事件里的 Unhealthy 说明 kubelet 探测失败:可能是应用真的不健康,也可能是探针本身配置错(路径/端口/时机)。先手动复现探测命令,再判断谁的问题。
容器内 DNS 解析失败排查
容器里域名解析不了:先看 /etc/resolv.conf 指向什么,再用 nslookup/dig 实测;典型元凶是 resolv.conf 指向宿主本地回环解析器(127.0.0.53),容器内不可达。
镜像拉取失败排查(Docker 侧)
pull 失败原因分散:tag 不存在、认证失败、网络超时、证书错误、磁盘不足、架构不匹配。先读完整报错再对号入座,不要一律怪网络。
无法调度:资源、污点与亲和性
FailedScheduling 事件是调度器的诊断书:资源碎片、污点、亲和、端口占用都在这里说清楚。先读事件再改 Pod,避免盲调参数。
集群 DNS 解析失败排查
Pod 里域名解析失败:先确认 CoreDNS 是否就绪,再验证 resolv.conf 与实际查询。常见根因:CoreDNS Pod 异常、网络策略拦 53 端口、ndots 引发的解析路径异常。
kubectl debug 临时调试容器
生产镜像常是精简/无 shell 的:kubectl debug 挂临时容器进同命名空间排查,或做节点级调试,不动业务镜像本身。
Job/CronJob 失败排查(重试/并发/漏跑)
批处理失败分三类查:Pod 没起来(调度/镜像)、起来失败重试(backoffLimit)、定时任务该跑没跑(suspend/并发策略/时限)。
HPA 不扩容排查(指标/阈值/上限)
HPA 不动先查三件事:指标有没有数、当前值有没有越过 target、副本是否已到 min/max。多数『不扩容』是 metrics 缺失或 requests 没设。
StatefulSet 卡住与 PVC 挂载失败排查
StatefulSet 按序推进,前一个没 Ready 后一个不起:卡点常见于 PVC Pending(无可用存储)与挂载失败(调度/附加/路径)。
端口冲突:Bind failed / address already in use
宿主端口被占用时容器起不来:报 Bind for 0.0.0.0:8080 failed 或 address already in use。用 ss 找到占用进程,再决定换端口还是清理旧容器。
挂载失败排查(Permission denied / No such file)
挂载问题分三类:路径不存在或类型不符、权限不足(uid/SELinux)、底层存储异常(NFS/云盘)。docker inspect 的 Mounts 段先确认最终挂载参数。
ContainerCreating 卡住排查
Pod 调度完成但起不来:卡在挂卷、网络或镜像层。describe 的 Events 会指明卡点;CNI 故障、卷未挂上、镜像超大都能让它长时间停留。
服务访问超时(跨命名空间/策略)排查
TCP 连不上表现为超时或 connection refused:refused 多为无进程监听/无端点,timeout 多为网络链路被策略或路由拦截。两者指向不同层。
Ingress 访问 404/路由不生效排查
Ingress 404 多数不是后端问题:确认请求进了哪个 Controller、Host/Path 规则是否匹配、IngressClass 是否被认领,再查后端。
容器反复重启排查
容器不停重启(restarting/Up 1 秒又挂):先停掉自动重启,再以前台方式复现。高频原因:启动命令秒退、配置缺失、依赖不可达、入口脚本被覆盖。
Terminating 卡住排查
Pod 删除后长时间 Terminating:通常是 finalizer 未清理、卷卸载失败、kubelet 失联或进程不响应 SIGTERM。先确认卡在哪个环节,再决定是否强制删除。
容器出网失败排查(NAT/防火墙)
容器访问不了外网:按 容器 → 宿主 → 网关逐层验证。常见于宿主转发关闭、iptables 规则缺失、宿主防火墙拦 FORWARD、云安全组限制。
容器日志暴涨导致磁盘告警
json-file 日志默认无上限:应用刷错误日志时磁盘被迅速写满,进而连累宿主与 Docker 守护进程。先止血(truncate),再配置 max-size 根治。
Pod Evicted 驱逐排查
节点资源压力下的自保动作:DiskPressure/MemoryPressure/PIDPressure 触发驱逐。被驱逐的 Pod 状态是 Evicted,原因在 describe 与节点条件里。
进不去容器:没有 shell 或无法 exec
exec 报 not found 或 OCI runtime error:精简镜像没有 shell、容器已停/暂停、进程空间受限。换思路:宿主机 nsenter、临时调试容器、或调整镜像带工具。
netshoot 网络排查工具箱
容器网络排查的瑞士军刀镜像:内置 dig、tcpdump、curl、ss、ip、iptables 等工具。用 --network container:/--pid container: 直接进入故障容器的命名空间检查。
容器 CPU 占用高排查
容器吃满 CPU:先用 stats/top 定位到进程,再看是忙等、死循环还是限流假象;cgroup 的 cpu.stat 能看出 throttling,区分『真忙』与『被限速』。
镜像构建失败排查
构建失败先看到底哪一步:BuildKit 下用 --progress=plain 拿到完整输出。高频原因:COPY 路径不在上下文、依赖源超时、基础镜像拉取失败、架构不匹配。