导图社区 Kubernetes进阶实战
这是一篇关于Kubernetes进阶实战的思维导图,主要内容包括:第一部分:系统基础,第二部分:核心资源管理,第三部分:安全与高级特性,第四部分:实战与生态集成,附录与学习资源。
编辑于2025-06-10 16:13:28"从零玩转Kubernetes到微服务DevOps全栈实战!带你深入容器化技术,分为六大模块:I课程解读集群架构与核心概念;II掌握Pod/调度/存储等核心组件III.进阶实战Helm/认证/高级调度IV.落地ELK日志/Prometheus监控等运维体系;V以SpringCloud项目驱动,通过Jenkins Gitlab Harbor实现CI/CD全链路,结合KubeSphere/Rancher等可视化工具完成DevOps实战。搭建集群到发布微服务,一套课程打通云原生技术栈!"
这是一篇关于Kubernetes进阶实战的思维导图,主要内容包括:第一部分:系统基础,第二部分:核心资源管理,第三部分:安全与高级特性,第四部分:实战与生态集成,附录与学习资源。
社区模板帮助中心,点此进入>>
"从零玩转Kubernetes到微服务DevOps全栈实战!带你深入容器化技术,分为六大模块:I课程解读集群架构与核心概念;II掌握Pod/调度/存储等核心组件III.进阶实战Helm/认证/高级调度IV.落地ELK日志/Prometheus监控等运维体系;V以SpringCloud项目驱动,通过Jenkins Gitlab Harbor实现CI/CD全链路,结合KubeSphere/Rancher等可视化工具完成DevOps实战。搭建集群到发布微服务,一套课程打通云原生技术栈!"
这是一篇关于Kubernetes进阶实战的思维导图,主要内容包括:第一部分:系统基础,第二部分:核心资源管理,第三部分:安全与高级特性,第四部分:实战与生态集成,附录与学习资源。
Kubernetes进阶实战
第一部分:系统基础
1:Kubernetes系统基础
容器与容器编排系统
Docker容器技术
通过镜像封装应用及其依赖环境
利用Linux Namespace和Cgroups实现进程级隔离
支持“一次构建,到处运行”
镜像仓库(如Docker Hub)用于分发镜像
容器运行时(Docker Engine)负责管理容器生命周期
OCI规范
Open Container Initiative定义容器运行时标准(如`runC`)
确保不同容器引擎兼容性
Docker自1.11版本起拆分出`containerd`和`runC`,遵循OCI标准
容器编排需求
解决大规模容器的调度、扩缩容、故障恢复问题
Kubernetes通过声明式API和控制器模型实现自动化管理
Kubernetes架构解析
Master组件
API Server
集群唯一入口,提供RESTful接口
处理资源的增删改查,数据持久化到etcd
Scheduler
基于资源需求、节点亲和性等策略为Pod分配节点
Controller Manager
管理控制器(如Deployment、Service),确保资源状态与声明一致
etcd
分布式键值存储,保存集群状态数据,支持高可用部署
Node组件
kubelet
节点代理,负责Pod生命周期管理、容器监控和状态上报
kube-proxy
实现Service的负载均衡,通过iptables/ipvs规则转发流量到后端Pod
容器运行时
如Docker、containerd,负责运行容器,通过CRI接口与Kubernetes对接
核心对象模型
Pod
最小调度单元,封装一个或多个容器,共享网络(Network Namespace)和存储资源
可包含主容器和Sidecar容器(如日志收集器)
Service
为Pod提供固定访问端点,通过标签选择器关联后端Pod,支持ClusterIP、NodePort等类型
控制器
Deployment
管理无状态应用的副本数、滚动更新和回滚
StatefulSet
管理有状态应用(如数据库),确保Pod顺序启动和唯一标识
DaemonSet
确保每个节点运行一个Pod副本,用于日志采集、监控代理等系统服务
网络与通信机制
Pod网络模型
通过CNI插件(如Flannel、Calico)实现跨节点通信,要求Pod间直接互通(无NAT)
Service网络
ClusterIP为虚拟IP,由kube-proxy在节点上设置转发规则
NodePort通过节点端口暴露服务到外部
DNS服务
CoreDNS为Service和Pod提供域名解析,格式如`service-name.namespace.svc.cluster.local`
2:Kubernetes快速入门
kubeadm部署流程
环境准备
禁用Swap(避免性能影响)
配置iptables允许集群通信
同步节点时间
控制平面初始化
`kubeadm init`生成CA证书、API Server配置、静态Pod清单,并启动CoreDNS和kubeproxy附件
节点加入集群
`kubeadm join`通过Token和CA证书哈希值认证节点身份,加入控制平面
集群验证与管理
kubectl基础命令
`get`:查看资源状态(如`kubectl get pods`)
`describe`:获取资源详细信息(如事件、配置)
`logs`:查看容器日志(支持多容器时用`-c`指定容器名)
网络插件部署
Flannel通过VXLAN实现Overlay网络,Calico基于BGP实现三层路由和网络策略
声明式应用部署
YAML清单结构
`apiVersion`指定API群组版本(如`apps/v1`)
`kind`为资源类型(如Deployment)
`metadata`包含名称、标签
`spec`定义期望状态
命令式 vs 声明式
命令式:直接执行命令(如`kubectl create`),不保存配置历史
声明式:通过`kubectl apply`应用YAML文件,支持版本控制和增量更新
第二部分:核心资源管理
3:资源对象与API
API架构设计
资源类型
核心资源:如Pod、Service、Namespace,属于`api/v1`群组
扩展资源:如Deployment(属于`apps/v1`)、Ingress(属于`networkingk8s.io/v1`)
自定义资源(CRD):通过 apiextensions.k8s.io 扩展API,用于管理特定领域资源(如数据库实例)
版本管理
Kubernetes定期废弃旧版本API(如extensions/v1beta1),推荐使用稳定版本(如apps/v1)
名称空间与标签
名称空间
逻辑隔离资源,用于多租户或环境划分(如开发、生产),资源名称在命名空间内唯一
标签选择器
等值匹配:如`app=web`,匹配标签键值相等的资源
集合匹配:如`tier infrontend, backend)`,匹配标签值属于集合的资源
节点资源管理
节点状态
`Ready`:节点正常运行,可调度Pod
`NotReady`:节点故障或网络不通,无法调度新Pod
`Unknown`:API Server无法获取节点状态(如kubelet失联)
节点操作
`cordon`:标记节点不可调度,用于维护(仍允许现有Pod运行)
`drain`:排空节点,驱逐Pod到其他节点,用于升级
`uncordon`:取消节点不可调度标记,恢复调度
4:Pod与容器管理
Pod生命周期
阶段(Phase)
`Pending`:已创建但未调度或镜像下载中
`Running`:已调度到节点,容器正在运行
`Succeeded`:所有容器成功终止(适用于Job任务)
钩子(Hook)
`postStart`:容器启动后执行一次(如初始化配置)
`preStop`:容器终止前执行(如优雅关闭服务)
容器设计模式
Sidecar模式
主容器与辅助容器协同,共享存储卷,如Web服务器+日志收集器
初始化容器(Init Container)
在主容器启动前执行,用于依赖检查或配置生成(如等待数据库就绪)
健康监测机制
存活探针(LivenessProbe)
定期检测容器是否存活,失败时重启容器,支持Exec、HTTPGet、TCP方式
就绪探针(ReadinessProbe)
检测容器是否准备好处理请求,未通过时从Service端点移除
5:存储与持久化
存储卷类型
临时存储
`emptyDir`:Pod内临时存储,随Pod删除而清空,用于缓存数据
`gitRepo`:初始化时克隆Git仓库到卷中,适用于配置文件拉取
持久化存储
`hostPath`:挂载节点本地路径,需注意节点间数据不一致,适用于单节点场景
`PV(PersistentVolume)`:集群级存储资源,可静态预配或动态供给
`PVC(PersistentVolumeClaim)`:用户申请的存储声明,通过标签匹配PV
网络存储方案
NFS:通过挂载远程NFS共享目录提供存储,需部署NFS服务器
Ceph RBD/CephFS:基于Ceph分布式存储,支持块存储和文件存储
CSI(容器存储接口):允许第三方存储厂商通过插件集成,如Longhorn、OpenEBS
数据管理实践
动态供给:通过StorageClass定义存储类,自动创建PV(如使用Ceph RBD作为后端)
备份恢复:使用VolumeSnapshot CRD创建存储卷快照,支持克隆和还原
第三部分:安全与高级特性
9:安全认证与授权
认证机制
X509证书:用于API Server与组件间的双向认证,通过`kubeadm init`生成CA证书
ServiceAccount:为Pod内的容器提供身份凭证,自动挂载`token`和`ca.crt`到容器内
授权模型
RBAC(基于角色的访问控制)
`Role`:命名空间内的权限集合(如读取Pod的权限)
`ClusterRole`:集群级权限集合(如管理节点的权限)
`RoleBinding/ClusterRoleBinding`:将角色绑定到用户或组
准入控制(Admission Control)
`ValidatingWebhook`:验证资源创建/更新请求的合法性
`MutatingWebhook`:修改资源请求(如自动注入Sidecar)
10:网络策略与插件
流量控制
NetworkPolicy:基于标签和命名空间定义允许/拒绝规则,实现Pod间细粒度隔离
示例规则:允许前端Pod访问后端数据库Pod的3306端口,拒绝其他流量
网络插件对比
Flannel:简单轻量,使用VXLAN Overlay实现跨节点通信,不支持网络策略
Calico:高性能三层网络,支持BGP路由和NetworkPolicy,适合复杂网络场景
11:调度与资源管理
调度策略
节点亲和性(Node Affinity)
硬策略(requiredDuringSchedulingIgnoredDuringExecution):必须满足条件才调度
软策略(preferredDuringSchedulingIgnoredDuringExecution):优先满足条件
污点(Taints)与容忍(Tolerations)
污点:节点标记拒绝特定Pod调度(如`node-role.kubernetes.io/master:NoSchedule`)
容忍:Pod声明可接受的污点,允许调度到对应节点
资源分配
请求与限制
`requests`:容器运行所需的最小资源(如CPU 100m、内存50Mi)
`limits`:容器可使用的最大资源,防止资源滥用
QoS等级
Guaranteed:资源请求等于限制,适用于关键应用
Burstable:有请求但无限制,允许突发使用资源
BestEffort:无请求和限制,资源竞争时优先被驱逐
第四部分:实战与生态集成
14:应用发布与管理
Helm包管理
Chart结构:包含模板(`templates/`)、默认配置(`values.yaml`)、依赖(`charts/`),支持版本化发布
发布策略:使用`helm upgrade`滚动更新,`helm rollback`回滚到历史版本
CI/CD流水线
镜像构建:使用Dockerfile定义镜像构建流程,或用kaniko在Kubernetes中构建镜像(无Docker宿主机依赖)
持续部署:通过Argo CD实现GitOps,自动同步代码仓库到Kubernetes集群
15:监控与可观测性
指标采集
Metrics Server:采集节点和Pod的CPU、内存等核心指标,供HPA自动扩缩容使用
Prometheus:通过`prometheus-operator`部署,抓取`kube-state-metrics`和`node-exporter`指标
日志管理
EFK Stack
Elasticsearch:存储和检索日志
Fluentd:收集各节点日志,过滤后发送到Elasticsearch
Kibana:可视化日志查询和分析
日志采集部署:通过DaemonSet在每个节点运行Fluentd Pod,挂载宿主机日志目录
16:服务网格与高级案例
Istio基础
数据平面:由Envoy代理组成,负责流量转发、熔断、重试等逻辑
控制平面
Pilot:管理Envoy的路由规则和服务发现
Mixer:负责策略执行和遥测数据收集
生产案例
博客系统部署
使用StatefulSet部署MySQL,确保数据持久化和顺序启动
通过Ingress暴露Nginx服务,配置域名路由和TLS终止
集成Jenkins和Argo CD实现代码自动构建和部署
微服务治理
金丝雀发布:通过Istio的VirtualService和DestinationRule路由部分流量到新版本Pod
mTLS认证:服务间通信使用双向TLS,增强安全性
附录与学习资源
认证与版本
CKA/CKS认证:涵盖集群部署、应用管理、安全配置,需掌握`kubeadm`、RBAC、网络策略等核心知识点
版本兼容:以Kubernetes v1.19为基础,关注新版本特性(如拓扑感知调度)和废弃功能(如v1.22弃用apps/v1beta1)
工具链推荐
本地环境
Minikube:单节点Kubernetes集群,适合开发测试
Kind:使用Docker容器模拟Kubernetes节点,支持多节点集群
代码仓库:本书配套代码存于GitHub(https://github.com/ikubernetes/),包含YAML示例和脚本
官方文档:Kubernetes Documentation提供API参考和最佳实践,是核心学习资料