如何在Kubernetes中配置pod和容器?

5 篇文章 0 订阅

目录

为容器和Pod分配内存资源

创建命名空间

指定内存请求和限制

开始创建pod:

验证 Pod 中的容器是否已运行:

查看 Pod 相关的详细信息:

运行 kubectl top 命令,获取该 Pod 的指标数据

为容器和 Pods 分配 CPU 资源

创建命名空间

指定 CPU 请求和 CPU 限制

创建 Pod:

验证所创建的 Pod 处于 Running 状态

查看显示关于 Pod 的详细信息:

使用 kubectl top 命令来获取该 Pod 的指标:

扩展:

k8s中的CPU 单位


准备环境:拥有一个 Kubernetes 的集群,集群必须至少有 1 个 CPU 可用,且配置 kubectl 命令行工具与集群通信。

为容器和Pod分配内存资源

创建命名空间

[root@k8s-master-1 ~]# kubectl create namespace mem-example

或者直接在yaml文件里面创建:

指定内存请求和限制

[root@k8s-master-1 /]# vim ~/mem/memory-request-limit.yaml 

#创建命名空间mem-example-2

apiVersion: v1
kind: Namespace
metadata:
  name: mem-example-2
---

#Pod配置文件
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo
  namespace: mem-example-2
spec:
  containers:
  - name: memory-demo-ctr
    image: polinux/stress
    resources:
      requests
:
        memory: "100Mi"
      limits:
        memory: "200Mi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

要为容器指定内存请求,请在容器资源清单中包含 resources: requests 字段。 同理,要指定内存限制,请包含 resources: limits

这个例子中, 容器将会请求 100 MiB 内存,并且内存会被限制在 200 MiB 以内。

配置文件的 args 部分提供了容器启动时的参数: "--vm-bytes", "150M" 参数告知容器尝试分配 150 MiB 内存。

开始创建pod:

[root@k8s-master-1 mem]# kubectl apply -f memory-request-limit.yaml 

验证 Pod 中的容器是否已运行:

[root@k8s-master-1 mem]# kubectl get pod memory-demo --namespace=mem-example-2

查看 Pod 相关的详细信息:

[root@k8s-master-1 mem]# kubectl get pod memory-demo --output=yaml --namespace=mem-example-2

运行 kubectl top 命令,获取该 Pod 的指标数据

[root@k8s-master-1 mem]# kubectl top pod memory-demo --namespace=mem-example-2

输出结果显示:Pod 正在使用的内存为  150 MiB。 这大于 Pod 请求的 100 MiB,但在 Pod 限制的 200 MiB之内。

删除 Pod:

[root@k8s-master-1 mem]# kubectl delete pod memory-demo --namespace=mem-example-2

为容器和 Pods 分配 CPU 资源

创建命名空间

[root@k8s-master-1 mem]# kubectl create namespace cpu-example

指定 CPU 请求和 CPU 限制

[root@k8s-master-1 /]# vim ~/cpu/cpu-request-limit.yaml 

#Pod配置文件

apiVersion: v1
kind: Pod
metadata:
  name: cpu-demo
  namespace: cpu-example
spec:
  containers:
  - name: cpu-demo-ctr
    image: vish/stress
    resources:
      limits:

        cpu: "1"
      requests:
        cpu: "0.5"
    args:
    - -cpus
    - "2"

在容器资源清单中包含 resources: requests 字段为容器指定 CPU 请求,在 resources:limits指定 CPU 限制。

该例子中,容器将会请求 0.5 个 CPU,而且最多限制使用 1 个 CPU。

配置文件的 args 部分提供了容器启动时的参数, -cpus "2" 参数告诉容器尝试使用 2 个 CPU。

创建 Pod:

[root@k8s-master-1 mem]# kubectl apply -f cpu-request-limit.yaml --namespace=cpu-example

验证所创建的 Pod 处于 Running 状态

[root@k8s-master-1 mem]# kubectl get pod cpu-demo --namespace=cpu-example

查看显示关于 Pod 的详细信息:

[root@k8s-master-1 mem]# kubectl get pod cpu-demo --output=yaml --namespace=cpu-example

 输出显示 Pod 中的一个容器的 CPU 请求为 500 milliCPU,并且 CPU 限制为 1 个 CPU。

使用 kubectl top 命令来获取该 Pod 的指标:

[root@k8s-master-1 mem]# kubectl top pod cpu-demo --namespace=cpu-example

此示例输出显示 Pod 使用的是 1001 milliCPU,即略高于 Pod 配置中指定的 1 个 CPU 的限制。

回想一下,通过设置 -cpu "2",容器配置为尝试使用 2 个 CPU, 但是容器只被允许使用大约 1 个 CPU, 该容器正尝试使用超出其限制的 CPU 资源,但是容器的 CPU 用量受到限制。

删除 Pod:

[root@k8s-master-1 mem]# kubectl delete pod cpu-demo --namespace=cpu-example

扩展:

k8s中的CPU 单位

CPU 资源以 CPU 单位度量。Kubernetes 中的一个 CPU 等同于:

  • 1 个 AWS vCPU
  • 1 个 GCP核心
  • 1 个 Azure vCore
  • 裸机上具有超线程能力的英特尔处理器上的 1 个超线程

一个请求 0.5 CPU 的容器保证会获得请求 1 个 CPU 的容器的 CPU 的一半,可以使用后缀 m 表示毫。

例如 100m CPU、100 milliCPU 和 0.1 CPU 都相同, 精度不能超过 1m。

CPU 请求只能使用绝对数量,而不是相对数量。0.1 在单核、双核或 48 核计算机上的 CPU 数量值是一样的。

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值