主题
附录
A.1 面试高频题与参考答案
Linux 基础
Q1:如何查看 Linux 系统负载?
A:使用 uptime、top、htop 或 cat /proc/loadavg。load average 三个值分别表示 1 分钟、5 分钟、15 分钟的平均负载。
Q2:进程退出码 137 是什么意思?
A:137 = 128 + 9,表示进程收到 SIGKILL 信号。在 K8s 中通常是因为 OOMKilled 或被人为强制终止。
Q3:如何排查磁盘空间满?
A:
df -h查看分区使用率du -sh /*查找大目录find / -size +100M查找大文件lsof +L1查找被删除但未释放的文件
Docker
Q4:容器和虚拟机的区别?
A:容器是进程级隔离,共享宿主机内核,启动快、资源占用少;虚拟机是操作系统级隔离,有完整的 OS,资源占用大、启动慢。
Q5:Docker 镜像分层有什么好处?
A:分层可以实现层共享和缓存复用,减少存储占用和构建时间。
Kubernetes
Q6:K8s 控制平面有哪些组件?
A:kube-apiserver、etcd、kube-scheduler、kube-controller-manager、cloud-controller-manager。
Q7:Pod 和 Container 的区别?
A:Pod 是 K8s 的最小调度单位,可以包含一个或多个 Container。Pod 中的容器共享网络和存储。
Q8:Deployment 和 StatefulSet 的区别?
A:Deployment 适合无状态应用,支持滚动更新和回滚;StatefulSet 适合有状态应用,提供稳定的网络标识和持久存储。
Q9:Service 的几种类型?
A:ClusterIP、NodePort、LoadBalancer、ExternalName。
Q10:Pod Pending 可能的原因?
A:资源不足、节点亲和性/污点不满足、PVC 未绑定、镜像拉取策略问题等。
Q11:什么是 HPA 和 VPA?
A:HPA 是水平 Pod 自动伸缩,根据指标调整 Pod 数量;VPA 是垂直 Pod 自动伸缩,调整 Pod 的资源 requests/limits。
Q12:Prometheus 和 Grafana 的关系?
A:Prometheus 负责采集和存储指标数据;Grafana 负责可视化展示。
可观测性
Q13:可观测性的三大支柱是什么?
A:Metrics(指标)、Logs(日志)、Traces(链路)。
Q14:什么是 SLO、SLI、SLA?
A:SLI 是服务质量指标,SLO 是服务质量目标,SLA 是对用户的服务等级协议。
自动化与 SRE
Q15:什么是幂等性?
A:幂等性是指同一个操作执行一次和执行多次的结果相同。在运维自动化中非常重要。
Q16:什么是 Runbook?
A:Runbook 是标准化的故障处理手册,包含现象、排查步骤、修复步骤、验证方法和升级路径。
A.2 常用 YAML 模板
Deployment 模板
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 3
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: app:1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"Service 模板
yaml
apiVersion: v1
kind: Service
metadata:
name: app
spec:
selector:
app: app
ports:
- port: 80
targetPort: 8080
type: ClusterIPConfigMap 模板
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
key: valueSecret 模板
yaml
apiVersion: v1
kind: Secret
metadata:
name: app-secret
type: Opaque
stringData:
password: xxxPVC 模板
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5GiRBAC 模板
yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: dev
subjects:
- kind: ServiceAccount
name: dev-sa
namespace: dev
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.ioA.3 推荐学习资源
官方文档
- Kubernetes 官方文档:https://kubernetes.io/zh-cn/docs/home/
- Docker 官方文档:https://docs.docker.com/
- Prometheus 官方文档:https://prometheus.io/docs/
- Grafana 官方文档:https://grafana.com/docs/
书籍
- 《Kubernetes 权威指南》
- 《Docker 技术入门与实战》
- 《Google SRE 运维解密》
- 《凤凰项目》
- 《深入剖析 Kubernetes》(张磊)
在线课程
- CNCF 免费课程
- KodeKloud(CKA/CKAD/CKS 实战)
- 极客时间《Kubernetes 实战》
社区
- Kubernetes 中文社区
- 云原生技术社区
- GitHub 开源项目
A.4 实验环境快速启动脚本
bash
#!/bin/bash
# setup-lab.sh
# 快速搭建 K8s 学习实验环境
set -euo pipefail
echo "=== 安装基础工具 ==="
sudo apt update
sudo apt install -y vim git curl wget net-tools htop tree
echo "=== 安装 Docker ==="
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
echo "=== 安装 kubectl ==="
curl -LO "https://dl.k8s/release/$(curl -L -s https://dl.k8s/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
echo "=== 安装 minikube ==="
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
echo "=== 安装 Helm ==="
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
echo "=== 启动 minikube ==="
minikube start --driver=docker
echo "=== 验证 ==="
docker version
kubectl version --client
minikube status
echo "=== 实验环境准备完成 ==="A.5 学习进度跟踪表
| 部分 | 章节 | 完成日期 | 实验完成 | 练习完成 |
|---|---|---|---|---|
| 前言 | 00 | |||
| Linux | 1-4 | |||
| 云计算 | 5-7 | |||
| 容器 | 8-10 | |||
| K8s 基础 | 11-16 | |||
| K8s 运维 | 17-20 | |||
| 可观测性 | 21-24 | |||
| 自动化 | 25-29 | |||
| AI Agent | 30-32 | |||
| 算力平台 | 33-36 |
祝你学习顺利!