容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额

  • 1 Before you begin
  • 2 创建命名空间
  • 3 创建 LimitRange 和 Pod
  • 4 如果您指定了容器的限额值,但未指定请求值,会发生什么?
  • 5 如果您指定了容器的请求值,但未指定限额值,会发生什么?
  • 6 默认内存限额与请求的动机
  • 7 What’s next
    • 7.1 对于集群管理员
    • 7.2 对于应用开发者

本页展示了如何给命名空间配置默认的内存请求与限额。 如果在一个拥有默认内存限额的命名空间中创建一个容器,并且这个容器未指定它自己的内存限额, 它会被分配这个默认的内存限额值。Kubernetes 在某些条件下才会分配默认的内存请求值,这个将在本主题的后面解释。

Before you begin

You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube.

集群中的每个节点必须具有至少 300GiB 的内存。

创建命名空间

创建一个命名空间,以便您在本练习中创建的资源与集群的其它部分相隔离。

kubectl create namespace default-mem-example

创建 LimitRange 和 Pod

以下是一个 LimitRange 对象的配置文件。该配置指定了默认的内存请求与默认的内存限额。

memory-defaults.yaml 
apiVersion: v1
kind: LimitRange
metadata:name: mem-limit-range
spec:limits:- default:memory: 512MidefaultRequest:memory: 256Mitype: Container

在 default-mem-example 命名空间中创建 LimitRange:

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/memory-defaults.yaml --namespace=default-mem-example

现在如果在这个 default-mem-example 命名空间中创建一个容器,并且该容器未指定它自己的内存请求与内存限额, 该容器会被赋予默认的内存请求值 256MiB 和默认的内存限额值 512MiB。

以下是一个 Pod 的配置文件,它含有一个容器。这个容器没有指定内存请求和限额。

memory-defaults-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: default-mem-demo
spec:containers:- name: default-mem-demo-ctrimage: nginx

创建 Pod:

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/memory-defaults-pod.yaml --namespace=default-mem-example

查看关于该 Pod 的详细信息:

kubectl get pod default-mem-demo --output=yaml --namespace=default-mem-example

输出显示该 Pod 的容器的内存请求值是 256MiB, 内存限额值是 512MiB. 这些是由 LimitRange 指定的默认值。

containers:
- image: nginximagePullPolicy: Alwaysname: default-mem-demo-ctrresources:limits:memory: 512Mirequests:memory: 256Mi

删除 Pod:

kubectl delete pod default-mem-demo --namespace=default-mem-example

如果您指定了容器的限额值,但未指定请求值,会发生什么?

以下是含有一个容器的 Pod 的配置文件。该容器指定了内存限额,但未指定请求:

memory-defaults-pod-2.yaml 
apiVersion: v1
kind: Pod
metadata:name: default-mem-demo-2
spec:containers:- name: defalt-mem-demo-2-ctrimage: nginxresources:limits:memory: "1Gi"

创建 Pod:

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/memory-defaults-pod-2.yaml --namespace=default-mem-example

查看关于该 Pod 的详细信息:

kubectl get pod mem-limit-no-request --output=yaml --namespace=default-mem-example

输出显示该容器的内存请求值与它的限额值相等。
注意该容器并未被赋予默认的内存请求值 256MiB。

resources:limits:memory: 1Girequests:memory: 1Gi

如果您指定了容器的请求值,但未指定限额值,会发生什么?

以下是含有一个容器的 Pod 的配置文件。该容器指定了内存请求,但未指定限额:

memory-defaults-pod-3.yaml 
apiVersion: v1
kind: Pod
metadata:name: default-mem-demo-3
spec:containers:- name: default-mem-demo-3-ctrimage: nginxresources:requests:memory: "128Mi"

创建该 Pod:

kubectl create -f https://k8s.io/docs/tasks/administer-cluster/memory-defaults-pod-3.yaml --namespace=default-mem-example

查看该 Pod 的配置信息:

kubectl get pod default-mem-request-no-limit --output=yaml --namespace=default-mem-example

输出显示该容器的内存请求值被设置为该容器配置文件中指定的值。该容器的内存限额设置为 512Mi,这是该命名空间的默认内存限额值。

resources:limits:memory: 512Mirequests:memory: 128Mi

默认内存限额与请求的动机

如果您的命名空间具有资源配额, 它为内存限额设置默认值是有意义的。 以下是资源配额对命名空间施加的两个限制:

  • 在命名空间运行的每一个容器必须有它自己的内存限额。
  • 在命名空间中所有的容器使用的内存总量不能超出指定的限额。

如果一个容器没有指定它自己的内存限额,它将被赋予默认的限额值,然后它才可以在被配额限制的命名空间中运行。

What’s next

对于集群管理员

  • 为 Namespace 设置最小和最大内存限制
  • 为 Namespace 配置默认内存请求和限制
  • 为 Namespace 配置默认 CPU 请求和限制
  • 为 Namespace 配置最小和最大 CPU 限制
  • 为 Namespace 配置内存和 CPU 配额
  • 为 Namespace 配置 Pod 配额
  • 为 API 对象配置配额

对于应用开发者

  • 为容器和 Pod 分配内存资源
  • 为容器和 Pod 分配 CPU 资源
  • 为 Pod 配置服务质量

译者:jianzhangbjz / 原文链接

容器编排技术 -- Kubernetes 为 Namespace 配置默认的内存请求与限额相关推荐

  1. 容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额

    容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 创建一个Po ...

  2. 容器编排技术 -- Kubernetes 为 Namespace 配置最小和最大 CPU 限制

    容器编排技术 -- Kubernetes 为 Namespace 配置最小和最大 CPU 限制 1 Before you begin 2 创建一个 namespace 3 创建一个 LimitRang ...

  3. 容器编排技术 -- Kubernetes 为 Namespace 配置Pod配额

    容器编排技术 -- Kubernetes 为 Namespace 配置Pod配额 1 Before you begin 2 创建名字空间 3 创建ResourceQuota对象 4 练习环境的清理 5 ...

  4. 容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额

    容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额 1 Before you begin 2 创建一个命名空间 3 创建一个LimitRange和一个Pod ...

  5. 容器编排技术 -- Kubernetes 给 Pod 配置服务质量等级

    容器编排技术 -- Kubernetes 给 Pod 配置服务质量等级 1 Before you begin 2 QoS 等级 3 创建一个命名空间 4 创建一个 Pod 并分配 QoS 等级为 Gu ...

  6. 容器编排技术 -- Kubernetes 为 Namespace 设置最小和最大内存限制

    容器编排技术 -- Kubernetes 为 Namespace 设置最小和最大内存限制 1 Before you begin 2 创建一个 namespace 3 创建一个 LimitRange 和 ...

  7. 容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet

    容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet 1 Before you begin 2 重新配置集群活动节点上的 Kubelet 2.1 基本工作流程概览 2.2 ...

  8. 容器编排技术 -- Kubernetes kubectl create namespace 命令详解

    容器编排技术 -- Kubernetes kubectl create namespace 命令详解 1 kubectl create namespace 2 语法 3 示例 4 Flags kube ...

  9. 容器编排技术 -- Kubernetes kubectl delete 命令详解

    容器编排技术 -- Kubernetes kubectl delete 命令详解 1 kubectl delete 2 语法 3 示例 4 Flags kubectl delete 通过配置文件名.s ...

最新文章

  1. 6.微信小程序的如何使用全局属性
  2. 'yii\base\InvalidRouteException' with message 'Unable to resolve the request site/error.'
  3. Android开发实践:掌握Camera的预览方向和拍照方向
  4. 自己封装一个弹框插件
  5. 与计算机相关的课外活动,课外活动学生论文,关于应用型院校计算机专业课外活动相关参考文献资料-免费论文范文...
  6. leetcode双指针(python与c++)
  7. Codeforces 827D Best Edge Weight 倍增 + 并查集 || 倍增 + 压倍增标记 (看题解)
  8. Spring的beans标签下可以有其他标签
  9. 你是怎么发现你的同事很有钱的?
  10. Python制作彩色验证码
  11. win11触屏模式在哪 Windows11触屏模式的设置方法
  12. 【计算机网络笔记】数据链路层(封装成帧,差错检测,可靠传输)
  13. 演练一下500台主机的内网中IP地址的划分
  14. Linux/Windows/C++网络开源库项目集合
  15. IP地址,子网掩码,网络地址,直接广播地址,网络位主机位的计算
  16. mac 长时间锁屏后进入无声音
  17. 在浏览器连接linux服务器,使用浏览器连接Linux服务器
  18. CSGO显示FPS(帧数)指令集设置调用方法 2020年最新版本CSGO教程
  19. 【python 监控报警】python 免费短信报警和电话报警
  20. 90%的 CTO 都做不好绩效管理?看看这个十年 IT 老兵都有什么绝活?

热门文章

  1. 关于键盘事件中keyCode、which和charCode 的兼容性测试
  2. Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向
  3. 面向普通人的 PHP 加密
  4. Python_sklearn_回归
  5. Mysql 5.7安装部署和基本命令
  6. Python——编码风格建议
  7. 2021.03.14.浩楠卷子
  8. linux-目录命令-mk dir- cd- pwd- rm dir- cp- mv- rm
  9. git-版本控制介绍
  10. mysql5.7参数简单介绍