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

pod基础篇

1、pod基础

1、pod概念

  1. pod是K8s最小的调度单元,pod里面有容器,pod运行,容器运行了

  2. 创建的Pod调度到工作节点上面(没有容忍度的时候)

  3. pod里面封装程序,基于镜像来创建Pod等

  4. 任何东西都可以装在Pod里面

1、pod工作方式

1、自主式pod

  • 直接定义的Pod,直接使用,没有控制器,删除不会重新建,类型就是Pod

  • 没有故障恢复

  • 更新了字段的话,需要删除之前,在来进行创建,apply 会报错,控制器不会

[root@master yaml]# cat tomcat1.yaml 
apiVersion: v1
kind: Pod
metadata:name: tomcat-testnamespace: defaultlabels:app: tomcat
spec:containers:- name: tomcat-javaports:- containerPort: 8080image: docker.io/library/tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresent#访问pod,ip+容器端口

2、控制器管理Pod

  • 先创建控制器,再来创建pod

  • 这样的话,Pod能被误删了,也能自动恢复

apiVersion: apps/v1
kind: Deployment
metadata:name: d1namespace: default
spec:selector:   #必须的参数,标签选择器,选择app=dd1的pod控制matchLabels:app: dd1replicas: 2   #默认是1template:  #容器模版metadata:   #容器的元数据,标签等labels:app: dd1spec:containers:- name: tomcat1image: docker.io/library/tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresent

2、创建Pod流程

  1. 客户端提交创建pod请求,调用api-server接口,也可以使用kubectl命令

  2. apiserver接受到请求后,将yaml属性信息写入etcd中

  3. apiserver出发watch机制准备创建pod,信息转发到scheduler,调度器使用调度算法选择node,调度器将node信息给apiserver,apiserver将绑定的node信息写入etcd中

  4. apisrever通过watch机制,调用kubelet指定pod信息,调用containerd创建并启动容器

  5. 创建完成后反馈给kubelet,又将pod信息给apiserver

3、yaml文件编写

  • string字符串

  • object对象,后面有好多的字段

  • []表示是一个对象列表,后面有多个对象

  • : Pod :后面必须空格

  • 带有required就是必须字段

apiVersion: #定义了对象,代表了一个版本
kind: #字符类型的值,代表了要创建的资源
metadata: #对象,定于元数据属性信息
spec: #定义Pod的规格,里面包含容器信息

4、kubectl命令

#进入pod里面的容器
[root@master yaml]# kubectl exec -it -n default pod-first -c tomcat1 -- /bin/bash#查看pod里面指定的容器日志
[root@master yaml]# kubectl logs pod-first -c 容器名称[root@master namepsace]# kubectl run --help#将这个pod的yaml文件导出来
[root@master qinhexing]# kubectl get pod -n kube-system calico-node-6gkfs  -o yaml > 1.yaml

2、namespace

1、操作

#切换默认的名称空间
[root@master yaml]# kubectl config set-context --current --namespace=kube-system
Context "kubernetes-admin@kubernetes" modified.查看哪些命名空间的资源,不指定的,就是默认空间
[root@master yaml]# kubectl api-resources --namespace=true

2、名称空间资源限额

  • 限制这个空间下面所有Pod使用的资源
    防止某个名称空间下面,pod大量的占用资源
[root@master yaml]# kubectl explain ResourceQuota[root@master namepsace]# cat testsource.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:name: mem-cpu-quotanamespace: test
spec:hard:  #限制资源requests.cpu: "2"  #最少cpurequests.memory: "2Gi"  #最少内存,Gi或者Mblimits.cpu: "4"   #最大cpulimits.memory: "4G"  #最大cpu#查看名称空间的限制
[root@master namepsace]# kubectl get resourcequotas -n test
NAME            AGE   REQUEST                                     LIMIT
mem-cpu-quota   22m   requests.cpu: 0/2, requests.memory: 0/2Gi   limits.cpu: 0/4, limits.memory: 0/4G[root@master namepsace]# kubectl describe ns test
Name:         test
Labels:       kubernetes.io/metadata.name=test
Annotations:  <none>
Status:       ActiveResource QuotasName:            mem-cpu-quotaResource         Used  Hard--------         ---   ---limits.cpu       0     4limits.memory    0     4Grequests.cpu     0     2requests.memory  0     2GiNo LimitRange resource.

3、限制pod的内存和cpu

apiVersion: v1  #pod属于k8s核心组v1
kind: Pod  #创建的是一个Pod资源
metadata:  #元数据name: demo-pod  #pod名字namespace: test  #pod所属的名称空间labels:app: myapp  #pod具有的标签env: dev      #pod具有的标签
spec:containers:      #定义一个容器,容器是对象列表,下面可以有多个name- name:  tomcat-pod-java  #容器的名字ports:- containerPort: 8080image: tomcat:8.5-jre8-alpine   #容器使用的镜像imagePullPolicy: IfNotPresentresources:limits:memory: "2Gi"   #容器内存不允许超过2Gcpu: "2"        #容器cpu不允许超过2requests:memory: "100Mi"cpu: " 500m#超过了名称空间的限制无法进行创建resources:limits:memory: "4Gi"cpu: "2"requests:memory: "100Mi"cpu: "500m"[root@master yaml]# kubectl apply -f tomcat.yaml 
Error from server (Forbidden): error when creating "tomcat.yaml": pods "demo-pod" is forbidden: exceeded quota: mem-cpu-quota, requested: limits.memory=6Gi,requests.memory=5Gi, used: limits.memory=0,requests.memory=0, limited: limits.memory=4G,requests.memory=2Gi#所以的话创建pod的时候,限制要小一点,pod的最大不能和名称空间的最大一样,要小一点,以便能够创建其他的pod资源,否则报错#pod最大资源小于名称空间的资源

3、labels

  • 给pod打上标签,方便管理

  • 控制器,svc等都是通过标签来进行管理

#打上标签fff=111
[root@master ~]# kubectl label pod d1-7458697cff-9pzb5  fff=111
pod/d1-7458697cff-9pzb5 labeled#找出fff=111标签的pod列举出来
[root@master ~]# kubectl get pods -l fff=111
NAME                  READY   STATUS    RESTARTS   AGE
d1-7458697cff-9pzb5   1/1     Running   0          42m#查看所有名称空间所有标签
[root@master ~]# kubectl get ns --all-namespaces --show-labels 
NAME              STATUS   AGE     LABELS
default           Active   27h     kubernetes.io/metadata.name=default
kube-node-lease   Active   27h     kubernetes.io/metadata.name=kube-node-lease
kube-public       Active   27h     kubernetes.io/metadata.name=kube-public
kube-system       Active   27h     kubernetes.io/metadata.name=kube-system
test              Active   8m27s   kubernetes.io/metadata.name=test#删除标签
[root@master yaml]# kubectl label pod d1-7458697cff-9pzb5 fff-
pod/d1-7458697cff-9pzb5 unlabeled#修改标签
kubectl label nodes k8s-test01 gpu=false --overwrite
http://www.jsqmd.com/news/638670/

相关文章:

  • 可靠的宁波电线电缆回收公司聊聊,哪家性价比更高靠谱吗 - mypinpai
  • UnrealPakViewer终极指南:三步搞定虚幻引擎Pak文件深度解析
  • Apollo Save Tool:革命性PS4游戏存档管理神器
  • WeMod Patcher终极指南:三步免费解锁WeMod Pro高级功能
  • Elasticsearch搜索引擎深度解析:把搜索核心讲透,面试都是小菜
  • EldenRingFPSUnlockAndMore:艾尔登法环终极帧率解锁与游戏优化指南
  • CasRel模型企业级部署架构设计:高可用与弹性伸缩
  • 探寻杜邦艺术漆加盟靠谱吗,为你解答疑惑 - myqiye
  • k8s字段
  • 大模型Post-training优化新趋势:GRPO算法深度解析(小白程序员必备,建议收藏)
  • 2026从原理到实战:C# 深度解析 Modbus TCP 报文结构与通信机制
  • Phi-4-mini-reasoning开发者手册:vLLM服务日志排查与Chainlit调试技巧
  • 5分钟解锁Windows本地实时语音转文字:隐私与效率的完美平衡
  • AI编程助手完全指南:Cursor、Copilot、Claude深度对比 (2026版)
  • 2026 北京地区老酒回收实测报告:主流商家实测对比与科学选择指南 - 资讯焦点
  • 2026年新疆升学宴场地预定与发布会年会场地公司推荐:十二星座礼宴中心一站式礼宴解决方案专业供应 - 品牌推荐官
  • VBA图表绘制:处理不同日期的数据
  • 3小时落地企业级RAG应用:从文档检索到智能问答全流程
  • GLM-4.1V-9B-Base免配置环境:内置Jupyter+Web双入口,调试运维一体
  • 深度解析Balena Etcher:跨平台镜像烧录工具的技术实现与应用指南
  • OpenClaw开源汉化发行版:2026最新完整介绍+下载+安装+配置全教程
  • FLUX.小红书极致真实V2内容提效:单日产出30+小红书笔记配图工作流拆解
  • 终极指南:如何在Zotero中一键实现PDF文献智能双语翻译
  • 实验报告一
  • 纯化正常兔IgG,DEAE层析+免疫电泳双重质控
  • 2026年PVC公司最新排行榜/PVC排水管,PVC给水管,PVC穿线管,PVC七孔管,PVC工程管 - 品牌策略师
  • RWKV7-1.5B-g1a多场景应用:法律条文摘要+合同关键条款提取演示
  • 实测踩坑:MPQ4572降压芯片SW波形出现大小波,别急着换电感,先看这个补偿设置
  • 手把手教你部署清音刻墨:基于Qwen3的智能字幕对齐工具实战体验
  • 开源OBS多路RTMP推流插件:3个核心机制深度解析与实战指南