【云原生之K8S】k8s资源限制以及探针检查

目录

一、资源限制

1.1、资源限制的使用

1.2、request资源(请求)和limit资源(约束)

1.3、Pod和容器的资源请求和限制

1.4、官方文档示例

1.5、资源限制实操

1.5.1编写yaml资源配置清单

1.5.2释放内存(node节点,以node01为例)

1.5.3创建资源

1.5.4跟踪查看pod状态

1.5.5查看容器日志

1.5.6删除pod

1.5.7修改yaml配置资源清单,提高mysql资源限制

二、健康检查

2.1、探针的三种规则

livenessProbe存活探针

readinessProbe就绪探针

startupProbe启动探针(1.17版本新增)

同时定义

2.2、Probe支持的三种检测方法

exec

tcpSocket

2.3、探测结果

2.4、exec方式

2.5、httpGet方式

2.6、tcpSocket方式

总结

1. 探针

2. 检查方式


一、资源限制

1.1、资源限制的使用

当定义Pod时可以选择性地为每个容器设定所需要的资源数量。最常见的可设定资源是CPU和内存大小,以及其他类型的资源。

1.2、request资源(请求)和limit资源(约束)

  1. 当为Pod中的指定了request资源时,调度器就使用该信息来决定将Pod调度到哪个节点上。当还为容器指定了limit资源时,kubelet就会确保运行的容器不会使用超过所设的limit资源量。kubelet还会为容器预留所设的request资源量,供该容器使用
  2. 如果Pod所在的节点具有足够的可用资源,容器可用使用超过所设置的request资源量。不过,容器不可以使用超过所设置的limit资源量。
  3. 如果给容器设置了内存的limit值,但未设置内存的request值,Kubernetes会自动为其设置于内存limit相匹配的request值。类似的,如果给容器设置了CPU的limit值但未设置CPU的request值,则Kubernetes自动为其设置CPU的request值,并使之与CPU的limit值匹配。

1.3、Pod和容器的资源请求和限制

#定义创建容器时预分配的CPU资源
spec.containers[].resources.requests.cpu
#定义创建容器时预分配的内存资源
spec.containers[].resources.requests.memory
#定义创建容器时预分配的巨页资源
spec.containers[].resources.requests.hugepages-<size>
#定义cpu的资源上限
spec.containers[].resources.limits.cpu
#定义内存的资源上限
spec.containers[].resources.limits.memory
#定义巨页的资源上限
spec.containers[].resources.limits.hugepages-<size>

1.4、官方文档示例

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: log-aggregator
    image: images.my-company.example/log-aggregator:v6
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

该例子中Pod有两个Container。每个Container的请求为0.25cpu和64MiB(226字节)内存,每个容器的资源约束为0.5cpu和128MiB内存。你可以认为该Pod的资源请求为0.5cpu和128MiB内存,资源限制为1cpu和256MiB内存

1.5、资源限制实操

1.5.1编写yaml资源配置清单

[root@master ~]# mkdir /opt/test
[root@master ~]# cd !$
cd /opt/test
[root@master test]# vim test1.yaml
 
apiVersion: v1
kind: Pod
metadata:
  name: test1
spec:
  containers:
  - name: web
    image: nginx
    env:
    - name: WEB_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: db
    image: mysql
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

1.5.2释放内存(node节点,以node01为例)

由于mysql对于内存的使用要求比较高,因此需要检查内存的可以的空间是否能够满足mysql的正常运行,若剩余内存不够,可对其进行释放操作。

查看内存

free -mh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值