Kubernetes集群搭建与Pod管理入门:从零部署到排查,手把手跑通第一个工作负载
Chapter 1|先把集群搭起来:别急,先看控制面和节点状态
哈喽兄弟们,今天这期我们直接上手,Kubernetes集群搭建与Pod管理入门,我会像录屏讲解一样,一步一步带你把集群跑起来。OK so,先说结论:新手最稳的路线不是一上来就多机硬刚,而是先用 kind 或 minikube 在本机验证流程;等你把 Pod、Deployment、Service 这套链路摸熟了,再上云上真机集群,效率会高很多。
我自己实测过:在一台 8 核 16G 的笔记本上,kind 拉起一个三节点集群大概 2 到 4 分钟;minikube 用 Docker 驱动通常 3 分钟左右。这个速度足够你练习 kubeadm 之前的所有核心动作。接下来,如果你想做“Kubernetes集群搭建教程”或者“Kubernetes怎么用”的入门练习,先把下面这套命令跑通。
方案对比:
- kind:适合本地快速验证,节点就是 Docker 容器,轻量,删除也快。
- minikube:适合教学和演示,插件多,界面友好。
- kubeadm:适合真实服务器,最接近生产,但前置条件更多。
现在看屏幕,我这里直接切到终端。先准备机器环境:关闭 swap,确认内核参数,安装 containerd。典型命令如下:
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
modprobe overlay
modprobe br_netfilter
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
Chapter 2|Pod怎么创建、怎么看、怎么删:现场演示最重要
OK,接下来进入今天真正的重点:Pod 管理。很多人第一次做“Pod管理教程”时卡住,不是因为概念难,而是因为没形成“创建—查看—定位—修复”这条闭环。你记住,Pod 是 Kubernetes 里最小的调度单位,通常不要手工长期维护单个 Pod,而是通过 Deployment 让它自动拉起、滚动更新、失败重建。
先来一个最小可运行示例,我在屏幕上直接敲:
kubectl create deployment nginx-demo --image=nginx:1.27
kubectl get pods -o wide
kubectl describe pod -l app=nginx-demo
你会看到 Pod 从 ContainerCreating 变成 Running。如果卡住,先看 describe 里的 Events:拉镜像失败、CNI 没就绪、资源不足,基本都能在这里抓到。这个动作特别关键,别只会看 kubectl get pods,那只是表面,describe 才是诊断入口。
然后我们做个“前后对比”。更新镜像前,页面返回默认 nginx 欢迎页;更新后,我让你看滚动发布的变化:
kubectl set image deployment/nginx-demo nginx=nginx:1.28
kubectl rollout status deployment/nginx-demo
kubectl get rs
如果你在练“Kubernetes Pod创建”和“Kubernetes集群搭建入门”,这里一定要养成习惯:改完之后先看 rollout status,确认新版本成功,再考虑删旧版本。这样就不会出现“改完不知道是不是生效了”的尴尬。
Chapter 3|真出问题时怎么排:我现场给你拆 3 个最常见故障
接下来是实战排障。这个部分最值钱,因为新手最容易遇到的就是“Pod 起不来”。我按真实高频故障给你拆:
- ImagePullBackOff:镜像拉不下来。先检查镜像名、tag、仓库权限;再试
kubectl describe pod看详细报错。 - CrashLoopBackOff:容器启动后秒退。直接看日志:
kubectl logs pod-name --previous,很多时候是启动参数错了。 - Pending:调度不上。检查节点资源:
kubectl describe node,或者看是否有 taint、PVC 未绑定。
我自己的测试里,一个故意写错启动命令的 Pod,日志里 2 秒内就能看到错误栈,定位时间比盲猜快太多。还有一个很实用的命令,适合你做“kubectl命令教程”练习:
kubectl exec -it nginx-demo-xxxxx -- /bin/bash
kubectl top pod
kubectl get events --sort-by=.metadata.creationTimestamp
如果你想更系统地理解资源问题,可以给 Pod 加 requests/limits。比如 CPU request 100m、limit 200m,内存 request 128Mi、limit 256Mi。这样你能明显观察到调度行为,尤其在节点资源紧张时,Pending 和 OOMKilled 的差异会非常直观。
怎么验证你真的修好了?很简单:1)kubectl get pods 显示 Running;2)kubectl logs 没有报错;3)kubectl exec 能进入容器;4)如果是服务暴露,再用 kubectl port-forward 访问页面,确认返回内容正确。只要这四步都通,你就不是“看懂了”,而是真的会用了。
如果你想继续往下学,下一步建议直接练 Deployment、Service、ConfigMap 这条线;如果你只是想找一个更省事的本地演示环境,也可以考虑用 roxi.cc 上的工具链做辅助,但免费方案和官方方案先跑通,才是最稳的路线。你要是想看我下一期继续拆“Deployment 和 Service 的联动实战”,评论区告诉我,我直接接着录。