Kubernetes 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案
1. 如何在 Kubernetes 中设置资源请求和限制?
资源请求确保容器有最小资源量(CPU/内存),而限制则强制容器消耗的最大资源量。这有助于高效资源分配并防止资源争用。
示例:
resources:
requests:
memory: "256Mi"
cpu: "500m"
limits:
memory: "512Mi"
cpu: "1000m
2. 为什么在 Kubernetes 中命名空间很重要?
命名空间允许您将单个 Kubernetes 集群划分为多个虚拟集群,为不同的团队或项目提供隔离。它们在管理资源配额和政策方面很有用。
示例:
kubectl create namespace dev
3. 如何确保 Kubernetes 的高可用性?
使用具有冗余控制平面组件的多区域集群。将工作负载分配到多个节点和区域,确保没有单点故障。
示例:
部署一个使用 Deployment
并在节点间分配 replicas
的应用程序
replicas: 3
4. Kubernetes 网络的最佳实践是什么?
- 使用网络策略来控制 Pod 通信并确保网络安全。
- 实现服务网格(例如,Istio)以实现更好的流量管理和可观察性。
示例:网络策略示例
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-only-app
spec:
podSelector:
matchLabels:
app: myapp
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
5. 如何在 Kubernetes 中保护机密?
避免在配置中将敏感信息以纯文本形式存储。使用 Kubernetes Secrets 管理凭证、API 密钥和其他机密数据。
示例:
kubectl create secret generic db-user-pass --from-literal=username=myuser --from-literal=password=mypassword
6. Kubernetes 滚动更新最佳实践是什么?
使用 RollingUpdate
策略在部署中减少停机时间。这允许逐步更新应用程序,同时保持其可用性。
示例:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
7. Kubernetes 中如何处理应用扩展?
使用水平 Pod 自动伸缩器(HPA)根据 CPU、内存或自定义指标自动扩展您的应用程序。
示例:
kubectl autoscale deployment myapp --cpu-percent=50 --min=1 --max=10
8. Kubernetes 日志和监控的最佳实践是什么?
- 使用 Fluentd 或 ELK 堆栈等日志工具集中日志。
- 使用 Prometheus 和 Grafana 监控集群性能并设置警报。
9. 如何优化 Kubernetes 存储?
使用持久卷(PV)和持久卷声明(PVC)将存储与 Pod 解耦。确保存储的可扩展性和可用性。
示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
10. 为什么你应该使用活动性和就绪性探测?
活跃探针有助于确保容器仍在运行,而就绪探针则检查容器是否准备好处理流量。这两者对于 Kubernetes 中的自我修复和正确流量路由都是必不可少的。
示例:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
结语
掌握 Kubernetes 最佳实践对于 DevOps 和 SRE 专业人员至关重要,以确保容器化应用程序的效率、可扩展性和安全性。通过理解资源管理、网络、安全和扩展策略,您可以更有效地管理 Kubernetes 集群,并确保您的应用程序在生产环境中平稳运行。无论您是在准备面试还是提高 Kubernetes 技能,遵循这些最佳实践将帮助您构建和维护强大、高性能的系统。