当前位置: 首页 > news >正文

kubernetes笔记(四)

一、Pod调度策略

1.基于节点的调度

spec->nodeName

[root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttp
spec:nodeName: node-0001     # 基于节点名称进行调度containers:- name: apacheimage: myos:httpd[root@master ~]# kubectl apply -f myhttp.yaml  [root@master ~]# kubectl get pods -o wide

2.标签管理

1)查询标签

--show-labels

[root@master ~]# kubectl get pods --show-labels [root@master ~]# kubectl get namespaces --show-labels [root@master ~]# kubectl get nodes --show-labels 

2)使用标签过滤

在查询命令后面加: -l 标签名称

# 使用标签过滤资源对象
[root@master ~]# kubectl get nodes -l kubernetes.io/hostname=master

3)添加标签

kubectl label ~~~

[root@master ~]# kubectl label pod myhttp app=apache[root@master ~]# kubectl get pods --show-labels 

4)删除标签

kubectl label ~~~ 标签名称-

[root@master ~]# kubectl label pod myhttp app-[root@master ~]# kubectl get pods --show-labels 

5)资源文件标签

metadata->lebels->键值对

[root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttplabels:               # 声明标签app: apache         # 标签键值对
spec:containers:- name: apacheimage: myos:httpd[root@master ~]# kubectl delete pods myhttp[root@master ~]# kubectl apply -f myhttp.yaml  [root@master ~]# kubectl get pods --show-labels 

3.基于标签的调度

[root@master ~]# kubectl get nodes node-0002 --show-labels [root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttplabels:app: apache
spec:nodeSelector:                        # 基于节点标签进行调度kubernetes.io/hostname: node-0002  # 标签containers:- name: apacheimage: myos:httpd[root@master ~]# kubectl delete pods myhttp [root@master ~]# kubectl apply -f myhttp.yaml  [root@master ~]# kubectl get pods -l app=apache -o wide

4.容器调度

[root@master ~]# kubectl label nodes node-0002 node-0003 disktype=ssd[root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttplabels:app: apache
spec:nodeSelector:disktype: ssdcontainers:- name: apacheimage: myos:httpd[root@master ~]# sed "s,myhttp,web1," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web2," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web3," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web4," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web5," myhttp.yaml |kubectl apply -f -[root@master ~]# kubectl get pods -o wide

1)清理实验配置(根据标签删除容器,再删除标签)

[root@master ~]# kubectl delete pod -l app=apache[root@master ~]# kubectl label nodes node-0002 node-0003 disktype-

二、Pod资源配额

1.资源对象文件

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]

2.内存资源配额

spec->containers->resources->requests->memory

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0nodeSelector:                        # 配置 Pod 调度节点kubernetes.io/hostname: node-0003  # 在 node-0003 节点创建containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:               # 资源策略requests:              # 配额策略memory: 1100Mi       # 内存配额# 验证配额策略
[root@master ~]# for i in app{1..5};do sed "s,minpod,${i}," minpod.yaml;done |kubectl apply -f -# 清理实验配置
[root@master ~]# kubectl delete pod --all

3.计算资源配额

spec->containers->resources->requests->cpu

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0nodeSelector:kubernetes.io/hostname: node-0003containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 800m          # 计算资源配额# 验证配额策略
[root@master ~]# for i in app{1..5};do sed "s,minpod,${i}," minpod.yaml;done |kubectl apply -f -[root@master ~]# kubectl get pods# 清理实验配置
[root@master ~]# kubectl delete pod --all

4.综合资源配额

spec->containers->resources->requests->xxx

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0nodeSelector:kubernetes.io/hostname: node-0003containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 800m          # 计算资源配额memory: 1100Mi     # 内存资源配额

三、Pod资源限额

1.限额内存CPU

spec->containers->resources->limits->cpu/memory等

# 创建限额资源对象文件
[root@master ~]# vim maxpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:limits:cpu: 800mmemory: 2000Mi[root@master ~]# kubectl apply -f maxpod.yaml 

2.验证内存限额

[root@master ~]# kubectl cp memtest.py maxpod:/usr/bin/
[root@master ~]# kubectl exec -it maxpod -- /bin/bash
[root@maxpod /]# memtest.py 2500[root@maxpod /]# memtest.py 1500

3.验证CPU限额

[root@master ~]# kubectl exec -it maxpod -- ps aux[root@master ~]# kubectl top pods# 清理实验 Pod
[root@master ~]# kubectl delete pod maxpod

四、全局资源管理

1.LimitRange

1)默认配额策略

spec->limits->default

spec->limits->defaultRequest

# 创建名称空间
[root@master ~]# kubectl create namespace work
namespace/work created
# 设置默认配额
[root@master ~]# vim limit.yaml
---
apiVersion: v1
kind: LimitRange
metadata:name: mylimit namespace: work   
spec:limits:               - type: Container     default:            cpu: 300m memory: 500Mi     defaultRequest:cpu: 8m  memory: 8Mi [root@master ~]# kubectl -n work apply -f limit.yaml

验证配额策略

[root@master ~]# vim maxpod.yaml
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"][root@master ~]# kubectl -n work apply -f maxpod.yaml[root@master ~]# kubectl -n work describe pod maxpod
... ...Limits:cpu:     300mmemory:  500MiRequests:cpu:     10mmemory:  8Mi
... ...[root@master ~]# kubectl -n work top pods

2)自定义资源

spec->containers->resources->requests->xx

spec->containers->resources->limits->xx

[root@master ~]# vim maxpod.yaml
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 1100mmemory: 2000Mi[root@master ~]# kubectl -n work delete -f maxpod.yaml [root@master ~]# kubectl -n work apply -f maxpod.yaml[root@master ~]# kubectl -n work describe pod maxpod
... ...Limits:cpu:     1100mmemory:  2000MiRequests:cpu:     10mmemory:  10Mi
... ...
[root@master ~]# kubectl -n work top pods maxpod

3)资源配额范围

spec->limits->max->cpu/memory等

spec->limits->min->cpu/memory等

[root@master ~]# vim limit.yaml 
---
apiVersion: v1
kind: LimitRange
metadata:name: mylimitnamespace: work
spec:limits:               - type: Container     default:            cpu: 300m memory: 500Mi     defaultRequest:cpu: 8m  memory: 8Mi max:cpu: 800mmemory: 1000Mimin:cpu: 2mmemory: 8Mi[root@master ~]# kubectl -n work apply -f limit.yaml [root@master ~]# kubectl -n work delete -f maxpod.yaml [root@master ~]# kubectl -n work apply -f maxpod.yaml 

4)多容器资源配额

spec->containers->resources->requests->xxx

spec->containers->resources->limits->xxx

[root@master ~]# vim maxpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 800mmemory: 1000Mi- name: linux1image: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 800mmemory: 1000Mi[root@master ~]# kubectl -n work apply -f maxpod.yaml [root@master ~]# kubectl -n work get pods[root@master ~]# kubectl -n work top pods maxpod

5)Pod资源配额

[root@master ~]# vim limit.yaml 
---
apiVersion: v1
kind: LimitRange
metadata:name: mylimitnamespace: work
spec:limits:               - type: Container     default:            cpu: 300m memory: 500Mi     defaultRequest:cpu: 8m  memory: 8Mi max:cpu: 800mmemory: 1000Mimin:cpu: 2mmemory: 8Mi- type: Podmax:cpu: 1200mmemory: 1200Mimin:cpu: 2mmemory: 8Mi[root@master ~]# kubectl -n work apply -f limit.yaml[root@master ~]# kubectl -n work delete -f maxpod.yaml [root@master ~]# kubectl -n work apply -f maxpod.yaml 

多个Pod消耗资源

[root@master ~]# vim maxpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 800mmemory: 1000Mi# 创建太多Pod,资源也会耗尽
[root@master ~]# for i in app{1..9};do sed "s,maxpod,${i}," maxpod.yaml ;done |kubectl -n work apply -f -# Pod 创建成功后,查看节点资源使用情况
[root@master ~]# kubectl top nodes# 清理实验配置
[root@master ~]# kubectl -n work delete pods --all

2.ResourceQuota

1)全局配额策略

spec->hard->requests.cpu

spec->hard->requests.memory

spec->hard->limits.cpu

spec->hard->limits.memory

spec->hard->pod->数值

[root@master ~]# vim quota.yaml
---
apiVersion: v1
kind: ResourceQuota
metadata:name: myquotanamespace: work
spec:hard:requests.cpu: 1000mrequests.memory: 2000Milimits.cpu: 5000mlimits.memory: 8Gipods: 3[root@master ~]# kubectl -n work apply -f quota.yaml 

验证quota配额

[root@master ~]# for i in app{1..5};do sed "s,maxpod,${i}," maxpod.yaml ;done |kubectl -n work apply -f -# 删除实验 Pod 与限额规则
[root@master ~]# kubectl -n work delete pods --all[root@master ~]# kubectl -n work delete -f limit.yaml -f quota.yaml[root@master ~]# kubectl delete namespace work
http://www.lryc.cn/news/452146.html

相关文章:

  • 通信工程学习:什么是SNMP简单网络管理协议
  • ubuntu20.04系统下,c++图形库Matplot++配置
  • [激光原理与应用-126]:南京科耐激光-激光焊接 - 焊中无损检测技术 - 智能制程监测系统IPM介绍 - 26- 频域分析法
  • 深入理解 Solidity 修饰符(Modifier):功能、应用与最佳实践
  • YOLO11项目实战1:道路缺陷检测系统设计【Python源码+数据集+运行演示】
  • 怎么屏蔽统计系统统计到的虚假ip
  • 前端开发设计模式——策略模式
  • SysML案例-潜艇
  • 车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27
  • 基于深度学习的任务序列中的快速适应
  • 虚拟机三种网络模式详解
  • [leetcode]674_最长连续递增序列
  • 【无人机设计与技术】四旋翼无人机,UAV仿真,轨迹跟踪PID控制
  • 回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测
  • javaScript基础知识汇总
  • 《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)
  • 双端之Nginx+Php结合PostgreSQL搭建Wordpress
  • Another redis desktop manager使用说明
  • 【git】配置 Git 的换行符处理和安全性||安装 Ruby
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布
  • Unity 代码裁剪(Strip Engine Code)
  • 单目3d重建DUSt3R 笔记
  • AI驱动TDSQL-C Serverless 数据库技术实战营-与AI的碰撞
  • C++之String类(上)
  • kubernets基础-ingress详细介绍
  • jenkins部署Maven和NodeJS项目
  • 在unity资源中发现无效引用
  • C#知识|基于反射和接口实现抽象工厂设计模式
  • 【分布式微服务云原生】gRPC vs RPC:深入探索远程过程调用的现代与经典
  • 听说这是MATLAB基础?