文章目录
Kubernetes Pod 核心特性详解
Pod 容器的资源限制
通过 resources.requests
和 resources.limits
配置资源分配:
requests
:定义 Pod 容器启动时需预留的资源量。limits
:定义 Pod 容器可使用的最大资源量。
资源类型:
- CPU:单位为
m
(毫核,如1000m=1核
)或浮点数(如0.5
)。 - 内存/存储:支持单位
Ki
、Mi
、Gi
(2 的幂次)或k
、M
、G
(10 的幂次),默认单位为字节。 - GPU:需安装插件支持(如
nvidia.com/gpu
)。
关键规则:
- 若容器内存使用超过
limits.memory
,会触发 OOM(内存不足)错误,进程被终止。
PS:在买硬盘的时候,操作系统报的数量要比产品标出或商家号称的小一些,主要原因是标出的是以 MB、GB为单位的,1GB 就是1,000,000,000Byte,而操作系统是以2进制为处理单位的,因此检查硬盘容量时是以MiB、GiB为单位,1GiB=2^30=1,073,741,824,相比较而言,1GiB要比1GB多出1,073,741,824-1,000,000,000=73,741,824Byte,所以检测实际结果要比标出的少一些。
在您的YAML文件和命令输出中添加注释可以帮助更好地理解每个部分的功能和含义。以下是对您的YAML文件和命令输出进行注释的版本:
示例
apiVersion: v1 # Kubernetes API版本
kind: Pod # Kubernetes资源类型,这里是Pod
metadata:
name: frontend # Pod的名称
spec:
containers: # Pod中的容器列表
- name: web # 容器的名称
image: nginx # 容器使用的镜像
env: # 容器内的环境变量列表
- name: WEB_ROOT_PASSWORD
value: "password" # 环境变量的名称和值
resources: # 容器资源请求和限制
requests:
memory: "64Mi" # 请求的内存量
cpu: "250m" # 请求的CPU量(250毫核)
limits:
memory: "128Mi" # 限制的内存量
cpu: "500m" # 限制的CPU量(500毫核)
- name: db # 第二个容器的名称
image: mysql # 第二个容器使用的镜像
env: # 第二个容器内的环境变量列表
- name: MYSQL_ROOT_PASSWORD
value: "abc123" # 第二个环境变量的名称和值
resources: # 第二个容器的资源请求和限制
requests:
memory: "512Mi" # 请求的内存量
cpu: "0.5" # 请求的CPU量(半个核)
limits:
memory: "1Gi" # 限制的内存量
cpu: "1" # 限制的CPU量(一个核)
kubectl apply -f pod2.yaml # 应用YAML文件中定义的Pod到Kubernetes集群
kubectl describe pod frontend # 显示Pod的详细信息,包括状态、事件和资源使用情况
kubectl get pods -o wide # 显示集群中所有Pod的详细信息,包括IP地址、所在节点等
# 输出示例:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
frontend 2/2 Running 5 15m 10.244.2.4 node02 <none> <none>
kubectl describe nodes node02 # 显示指定节点的详细信息,包括资源分配情况
# 输出中的资源分配部分示例(已添加注释):
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
--------- ---- ------------ ---------- --------------- ------------- ---
default frontend 500m (25%) 1 (50%) 128Mi (3%) 1024Mi (25%) # 注意:这里的Memory Limits应为1Gi(1024Mi),可能是输出时的格式问题
kube-system kube-flannel-ds-amd64-f4pbp 100m (5%) 100m (5%) 50Mi (1%) 50Mi (1%) 19h
kube-