Ubuntu上Kubernetes资源管理指南
在Ubuntu系统上部署Kubernetes集群时,资源管理是保障集群稳定、高效运行的核心环节,需围绕节点基础配置、Pod资源管控、命名空间配额、动态调整及监控优化五大维度展开。
Ubuntu节点需提前完成资源相关的系统配置,为Kubernetes集群运行奠定基础:
sudo swapoff -a永久禁用(修改/etc/fstab文件注释Swap行)。sudo ufw disable)。sudo apt update && sudo apt install -y docker.io kubeadm kubelet kubectl安装Docker容器运行时及Kubernetes核心组件,并配置Docker与Kubernetes集成(如添加Docker镜像仓库源)。Pod是Kubernetes资源调度的基本单位,需通过requests(请求)和limits(限制)参数精准管控其资源使用:
requests:容器启动时所需的最小资源量,调度器据此将Pod分配至满足资源要求的节点(如节点剩余资源≥Pod requests才会调度)。limits:容器运行时的最大资源量,超出限制会触发资源回收(CPU会被限制使用,内存超过则会触发OOM Killer终止容器)。apiVersion: v1
kind: Pod
metadata:
name: ubuntu-pod
spec:
containers:
- name: ubuntu-container
image: ubuntu:latest
resources:
requests:
memory: "128Mi"
cpu: "250m" # 0.25个CPU核心
limits:
memory: "256Mi"
cpu: "500m" # 0.5个CPU核心
requests确保Pod获得基础资源,避免因资源不足无法启动;limits防止Pod过度消耗资源,保障节点及其他Pod的稳定性。为避免多租户共享集群时的资源争抢,需通过ResourceQuota(资源配额)和LimitRange(限制范围)实现命名空间级别的资源管控:
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-team-quota
namespace: dev
spec:
hard:
requests.cpu: "4" # 命名空间内所有Pod的CPU请求总和不超过4核
requests.memory: "8Gi" # 内存请求总和不超过8GiB
limits.cpu: "8" # CPU限制总和不超过8核
limits.memory: "16Gi" # 内存限制总和不超过16GiB
persistentvolumeclaims: "10" # PVC数量不超过10个
apiVersion: v1
kind: LimitRange
metadata:
name: default-limits
namespace: dev
spec:
limits:
- type: Container # 针对容器生效
default:
requests.cpu: "200m"
requests.memory: "128Mi"
defaultRequest:
requests.cpu: "100m"
requests.memory: "64Mi"
max:
requests.cpu: "1"
requests.memory: "512Mi"
min:
requests.cpu: "50m"
requests.memory: "32Mi"
Kubernetes支持动态调整Pod资源限制(无需重启Pod),适用于应对业务负载变化:
kubectl patch命令直接修改Pod的resources.requests或resources.limits字段。示例:kubectl patch pod ubuntu-pod -n dev -p '{"spec":{"containers":[{"name":"ubuntu-container","resources":{"requests":{"memory":"256Mi"},"limits":{"memory":"512Mi"}}}]}}'
持续监控资源使用情况是优化集群资源利用率的关键,需结合工具监控与日志分析:
kubectl top命令:快速查看节点/Pod的CPU、内存使用情况(需安装Metrics Server)。示例:kubectl top pods -n dev。requests和limits(如业务高峰期增加CPU请求)。通过以上步骤,可在Ubuntu系统上实现Kubernetes集群资源的精细化管控,确保集群稳定运行并提升资源利用率。