学习 Kubernetes(k8s)的资源管理指令是掌握集群运维的关键。以下是系统化的学习路径和常用指令示例,帮助你高效管理资源。
1. 基础资源管理指令
查看资源
# 查看所有命名空间的 Pod
kubectl get pods -A
# 查看指定命名空间的 Deployment
kubectl get deployments -n <namespace>
# 查看资源详细信息(如未调度原因)
kubectl describe pod <pod-name>
# 查看节点资源容量和分配情况
kubectl describe nodes
创建/删除资源
# 通过 YAML 文件创建资源
kubectl apply -f pod.yaml
# 通过命令行直接创建 Pod
kubectl run nginx --image=nginx --restart=Never
# 删除资源
kubectl delete pod <pod-name>
2. Pod 与 Deployment 资源限制
在 YAML 文件中定义资源请求(requests
)和限制(limits
):
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: app
image: nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
动态调整副本数
# 扩展 Deployment 副本数
kubectl scale deployment/my-deploy --replicas=3
# 查看副本状态
kubectl get deployments
3. 命名空间(Namespace)管理
# 创建命名空间
kubectl create namespace dev
# 切换默认命名空间(临时)
kubectl config set-context --current --namespace=dev
# 查看命名空间下的资源
kubectl get all -n dev
4. 资源配额(ResourceQuota)
限制命名空间的资源总量:
# quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: dev
spec:
hard:
requests.cpu: "2"
requests.memory: 4Gi
limits.cpu: "4"
limits.memory: 8Gi
kubectl apply -f quota.yaml
5. 资源监控
安装 Metrics Server
# 在 Minikube 中启用
minikube addons enable metrics-server
# 部署到集群(官方方式)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
查看资源使用
# 查看节点资源使用情况
kubectl top nodes
# 查看 Pod 的资源使用(需 Metrics Server)
kubectl top pods
# 按 CPU 排序查看 Pod
kubectl top pods --sort-by=cpu
6. 故障排除与优化
常见问题诊断
# 查看 Pod 未调度的原因(如资源不足)
kubectl describe pod <pod-name> | grep Events -A10
# 检查节点资源分配
kubectl describe node <node-name> | grep Allocated -A10
OOMKilled 错误处理
调整 Pod 的 limits.memory
,确保内存限制合理。
7. 高级资源管理
Horizontal Pod Autoscaler(HPA)
根据 CPU 使用率自动扩缩容:
# 创建 HPA(目标 CPU 使用率 80%)
kubectl autoscale deployment/my-deploy --cpu-percent=80 --min=1 --max=5
LimitRange(限制范围)
设置默认资源限制:
# limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: default-limits
spec:
limits:
- default:
cpu: "500m"
memory: "1Gi"
type: Container
kubectl apply -f limitrange.yaml
8. 实战案例
场景:优化资源分配
- 查看节点负载:
kubectl top nodes
- 调整 Pod 资源限制:修改 YAML 文件中的
requests
和limits
。 - 重新部署并验证:
kubectl apply -f deployment.yaml kubectl describe pod <pod-name>
总结
• 核心工具:kubectl
是核心,配合 get
、describe
、top
等指令。
• 资源定义:在 YAML 中通过 resources
控制请求和限制。
• 配额与监控:用 ResourceQuota
和 Metrics Server
管理集群资源。
• 自动扩缩:HPA 根据负载动态调整副本数。
通过实践这些指令和场景,你将能高效管理 Kubernetes 资源,确保集群稳定运行。