K8S三大难点:网络、YAML、证书体系|分阶段落地学习路线
前置建议:先装好本地实验环境(推荐:Minikube / Kind,Windows/Mac用Docker Desktop内置K8s) 不要直接上云服务器集群,本地反复销毁重建成本最低
一、YAML(优先学!门槛最低,另外两个依赖它)
核心痛点
缩进敏感、字段多、各种apiVersion/kind记不住,不知道该写什么
学习步骤(3天)
- 不要死背YAML
看懂# 万能命令生成模板(最重要!) kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > deploy.yaml kubectl create service clusterip nginx --tcp=80:80 --dry-run=client -o yaml > svc.yaml--dry-run=client -o yaml:只输出yaml不创建资源 - 必须吃透3个核心字段:
apiVersion:资源版本(apps/v1 / v1 / networking.k8s.io/v1)kind:资源类型 Deployment/Pod/Service/Ingressmetadata:name/namespace/labels(标签选择器是重中之重)spec:资源期望状态(K8s核心声明式API思想)
- 实操任务:
- 修改副本数、镜像、资源限制
resources.requests/limits - 学习
kubectl apply -f xxx.yaml/kubectl delete -f xxx.yaml - 学习
kubectl explain deployment.spec查询字段文档(离线神器)
- 修改副本数、镜像、资源限制
- 进阶:Helm(模板化YAML,解决重复复制粘贴问题)
💡避坑:不要手写完整yaml,先生成模板再修改!
二、K8S网络(第二阶段,最抽象、面试高频)
四大网络模型(必须背通)
- Pod-to-Pod(同一节点/不同节点互通)
- Pod-to-Service(ClusterIP,iptables/ipvs模式)
- Pod-外网 / 外网-Pod(NodePort/LoadBalancer/Ingress)
- 集群内部DNS解析(coreDNS)
学习步骤(5~7天,必须抓包实操)
- 先理清K8S网络模型强制约定:
所有Pod直接通信不使用NAT;所有节点和所有Pod互通
- 本地Kind环境安装网络插件:Calico(生产主流)
- 实操任务清单
- 同一个Node两个Pod互相ping IP
- 不同Node两个Pod互相ping IP(验证CNI插件)
- 创建ClusterIP Service,用Pod访问Service名称(DNS)
- 切换kube-proxy模式:iptables → ipvs,对比日志
- 写NetworkPolicy(网络策略,Pod防火墙,Calico依赖)
- 底层知识前置(必须补)
Linux基础:网络命名空间、网桥、iptables/ipvs、路由表
如果不懂Linux网络,K8S网络永远只会停留在表面
工具
tcpdump、kubectl exec -it pod -- curl、kubectl get endpoints
⚠️大坑:很多人只学K8S命令,不懂底层Linux网络,一问原理就崩
三、K8S证书体系(第三阶段,运维/集群管理员核心,开发可以浅学)
核心痛点
CA根证书、客户端证书、服务端证书、ServiceAccount Token容易混淆
学习步骤(3~5天)
- 先分清两套身份体系:
- TLS X509证书:kube-apiserver、kubelet、etcd之间通信(真实证书文件 *.crt *.key)
- ServiceAccount JWT Token:Pod内部访问API的短令牌(不用证书)
- 集群关键证书清单(kubeadm搭建集群场景)
- ca.crt/ca.key:集群根CA(最高权限!)
- apiserver.crt:API服务端证书
- admin.crt:管理员客户端证书(kubectl ~/.kube/config 里面就是它)
- 实操环境:kubeadm创建集群(不要minikube!minikube隐藏了证书细节)
证书默认路径kubeadm init --apiserver-advertise-address=192.168.x.x/etc/kubernetes/pki - 实操任务
- 使用
openssl x509 -in ca.crt -text查看证书内容 - 使用
kubeadm certs check-expiration检查证书过期(运维重点!) - 使用
kubeadm certs renew all批量续期证书 - 手写一个普通用户证书,创建RBAC权限绑定(面试高频)
- 使用
- 进阶:
- 外部CA签发证书(企业生产场景)
- cert-manager:自动管理Ingress域名证书
💡区分重点:
- 开发:了解证书作用即可
- 运维/SRE:必须会生成、续期、排查证书过期、RBAC绑定证书用户
📅 完整学习顺序(最重要!不要颠倒)
- YAML基础 → Pod/Deployment/Service
- Linux网络基础 → K8S网络模型+CNI实操
- kubeadm搭建完整集群 → 证书体系 + RBAC
❌ 错误顺序:一上来啃证书/网络,看不懂直接放弃
📚免费资源推荐
- 文档:https://kubernetes.io/zh-cn/docs/home/
- 实操:Katacoda(在线K8s实验,不用本地装环境)
- 书籍:《Kubernetes权威指南》、《云原生网络实战》
面试高频问题预判(这三块必考)
- Service ClusterIP实现原理(iptables vs ipvs)
- NetworkPolicy为什么需要Calico
- kubeconfig里面证书三段内容是什么
- K8s证书过期怎么处理
- 写Deployment最小yaml文件
如果你需要,我可以给你一份【可直接复制执行的本地Kind一键脚本】用来做实验。