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

K8S-Pod资源对象——标签

 什么是标签?

标签其实就是分组

标签其实就一对 key/value ,被关联到对象上,比如Pod,标签的使用我们倾向于能够表示对象的特殊特点,就是一眼就看出了这个Pod是干什么的,标签可以用来划分特定的对象(比如版本,服务类型等),标签可以在创建一个对象的时候直接定义,也可以在后期随时修改,每一个对象可以拥有多个标签,但是,key值必须是唯一的。创建标签之后也可以方便我们对资源进行分组管理。如果对pod打标签之后就可以使用标签来查看、删除指定的pod。(慎重!!!)

在k8s中,大部分资源都可以打标签。

给pod资源打标签

#对已经存在的pod打标签
[root@k8s-master01 ~]#  kubectl label pods pod-first  release=v1
#查看标签是否打成功
[root@k8s-master01 ~]#  kubectl get pods pod-first --show-labels

 查看资源标签

#查看默认名称空间下所有pod资源的标签
[root@k8s-master01 ~]# kubectl get pods --show-labels
#查看默认名称空间下指定pod具有的所有标签
[root@k8s-master01 ~]# kubectl get pods pod-first --show-labels
#列出默认名称空间下标签key是release的pod,不显示标签
[root@k8s-master01 ~]# kubectl get pods -l release
#列出默认名称空间下标签key是release、值是v1的pod,不显示标签
[root@k8s-master01 ~]# kubectl get pods -l release=v1
#列出默认名称空间下标签key是release的所有pod,并打印对应的标签值
[root@k8s-master01 ~]# kubectl get pods -L release
#查看所有名称空间下的所有pod的标签
[root@k8s-master01 ~]# kubectl get pods --all-namespaces --show-labels

使用yaml文件生成标签

#使用yaml文件生成标签#yaml文件在更新时是不会中断业务的,所以使用很方便#查看pod标签
[root@k8s-master pki]# kubectl get pods --show-labels 
NAME       READY   STATUS    RESTARTS   AGE   LABELS
pod-test   1/1     Running   0          9h    app=nginx129
#修改podyaml文件
[root@k8s-master ~]# vim nginx-pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: pod-testnamespace: testlabels:app: nginx129app1: nginx129  #添加一个标签
spec:containers:- name: nginx129ports:- containerPort: 80image: nginx:latestimagePullPolicy: IfNotPresentresources:limits:cpu: 0.5memory: 1024Mi#更新配置文件
[root@k8s-master ~]# kubectl  apply  -f nginx-pod.yaml 
pod/pod-test configured
#会多出一个新添加的标签  app1=nginx129  (--show-labels显示所有标签)
#显示pod的所有标签
[root@k8s-master ~]# kubectl get pods --show-labels
NAME       READY   STATUS    RESTARTS   AGE   LABELS
pod-test   1/1     Running   0          9h    app1=nginx129,app=nginx129
#输出当前已经运行的,被系统的补齐的pod的yaml文件
[root@k8s-master ~]# kubectl get pod pod-test -o yaml
-----------------
restartPolicy: Always   #单一pod里的Always不生效,在pod控制器里边重启策略才生效schedulerName: default-schedulersecurityContext: {}serviceAccount: defaultserviceAccountName: defaultterminationGracePeriodSeconds: 30tolerations:- effect: NoExecutekey: node.kubernetes.io/not-readyoperator: ExiststolerationSeconds: 300--------------------------- configMap:items:- key: ca.crtpath: ca.crtname: kube-root-ca.crt   #所有pod都信任真证书
[root@k8s-master ~]# kubectl delete pod pod-test  #删除检测重启策略会不会生效
pod "pod-test" deleted
[root@k8s-master ~]# kubectl get pod   #不生效
No resources found in test namespace.
[root@k8s-master ~]# kubectl apply -f nginx-pod.yaml  #更新配置文件
pod/pod-test created
[root@k8s-master ~]# kubectl get pod
NAME       READY   STATUS    RESTARTS   AGE
pod-test   1/1     Running   0          20s
[root@k8s-master ~]# kubectl get pod -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP             NODE        NOMINATED NODE   READINESS GATES
pod-test   1/1     Running   0          51s   10.244.36.73   k8s-node1   <none>           <none>

使用命令生成标签

#使用命令生成标签
#添加新标签
[root@k8s-master ~]# kubectl  label pods pod-test  app2=nginx129 
pod/pod-test labeled
# (--show-labels显示所有标签)  
[root@k8s-master ~]# kubectl  get pod --show-labels 
NAME       READY   STATUS    RESTARTS   AGE     LABELS
pod-test   1/1     Running   0          4m36s   app1=nginx129,app2=nginx129,app=nginx129
创建一个新pod,并创建nginx129容器
#创建一个新pod,并创建nginx129容器
[root@k8s-master ~]# vim nginx-pod.yaml 
---------------------------------------
apiVersion: v1
kind: Pod
metadata:name: pod-test1namespace: testlabels:app: nginx129app1: nginx129
spec:containers:- name: nginx129ports:- containerPort: 80image: nginx:latestimagePullPolicy: IfNotPresentresources:limits:cpu: 0.5memory: 1024Mi---------------------------------------       [root@k8s-master ~]# kubectl apply -f nginx-pod.yaml 
pod/pod-test1 created
[root@k8s-master ~]# kubectl get pod
NAME        READY   STATUS    RESTARTS   AGE
pod-test    1/1     Running   0          20m
pod-test1   1/1     Running   0          11s
[root@k8s-master ~]# kubectl get pod -o wide 
NAME        READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
pod-test    1/1     Running   0          20m   10.244.36.73     k8s-node1   <none>           <none>
pod-test1   1/1     Running   0          25s   10.244.169.149   k8s-node2   <none>           <none>#可以通过delete pod -l 指向标签来删除pod      (标签是app=nginx129)
[root@k8s-master ~]# kubectl delete pod -l app=nginx129
pod "pod-test" deleted
pod "pod-test1" deleted#查看所有名称空间下的所有pod的标签
[root@k8s-master ~]# kubectl get pods --all-namespaces --show-labels

 资源限制

节点资源不足,导致调度失败

#节点资源不足,导致调度失败[root@k8s-master ~]# vim nginx-pod2.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-pod2
spec:containers:- name: nginx2image: nginximagePullPolicy: IfNotPresentresources:limits:cpu: '8'memory: '8Gi'requests:cpu: '6'#更新配置会报错,因为我们给的是4核4G
[root@k8s-master ~]# kubectl apply -f nginx-pod2.yaml 
Error from server (Forbidden): error when creating "nginx-pod2.yaml": pods "nginx-pod2" is forbidden: exceeded quota: mem-cpu-quota, requested: limits.cpu=8,limits.memory=8Gi,requests.cpu=6,requests.memory=8Gi, used: limits.cpu=0,limits.memory=0,requests.cpu=0,requests.memory=0, limited: limits.cpu=4,limits.memory=4Gi,requests.cpu=2,requests.memory=2Gi
#当资源配额配置不符合,但是更新配置成功了,并不代表成功,是node节点无法连接

所在命名空间资源不足

##创建命名空间并设置资源限制
[root@k8s-master ~]# vim c2409.txt
apiVersion: v1
kind: Namespace
metadata:name: c2409
---
apiVersion: v1
kind: ResourceQuota
metadata:name: mem-cpu-quotanamespace: c2409
spec:hard:requests.cpu: '2'requests.memory: '2Gi'limits.cpu: '4'limits.memory: '4Gi'
###创建pod
[root@k8s-master ~]# vim nginx.yaml 
apiVersion: v1
kind: Pod
metadata:name: nginx-pod2namespace: c2409
spec:containers:- name: nginx2image: nginximagePullPolicy: IfNotPresentresources:limits:cpu: '8'memory: '8Gi'requests:cpu: '6'memory: '2Gi'##提交后的报错信息
[root@k8s-master ~]# kubectl apply -f nginx.yaml 
Error from server (Forbidden): error when creating "nginx.yaml": pods "nginx-pod2" is forbidden: exceeded quota: mem-cpu-quota, requested: limits.cpu=8,limits.memory=8Gi,requests.cpu=6, used: limits.cpu=0,limits.memory=0,requests.cpu=0, limited: limits.cpu=4,limits.memory=4Gi,requests.cpu=2

http://www.dtcms.com/a/341149.html

相关文章:

  • 【AI学习100天】Day08 使用Kimi每天问100个问题
  • 【指纹浏览器系列-绕过cdp检测】
  • 数据预处理:机器学习的 “数据整容术”
  • nginx-下载功能-状态统计-访问控制
  • 【数据结构】线性表——顺序表
  • 循环神经网络(RNN, Recurrent Neural Network)
  • Effective C++ 条款52:写了placement new也要写placement delete
  • 使用acme.sh自动申请AC证书,并配置自动续期,而且解决华为云支持问题,永久免费自动续期!
  • Spring Boot 定时任务与 xxl-job 灵活切换方案
  • 层在init中只为创建线性层,forward的对线性层中间加非线性运算。且分层定义是为了把原本一长个代码的初始化和运算放到一个组合中。
  • B站 韩顺平 笔记 (Day 24)
  • C++ std::optional 深度解析与实践指南
  • 当 AI 开始 “理解” 情绪:情感计算如何重塑人机交互的边界
  • linux报permission denied问题
  • Advanced Math Math Analysis |01 Limits, Continuous
  • uniapp打包成h5,本地服务器运行,路径报错问题
  • PyTorch API 4
  • 使数组k递增的最少操作次数
  • 路由器的NAT类型
  • 确保测试环境一致性与稳定性 5大策略
  • AI 效应: GPT-6,“用户真正想要的是记忆”
  • 获取本地IP地址、MAC地址写法
  • SQL 中大于小于号的表示方法总结
  • Bitcoin有升值潜力吗
  • 《代码沙盒深度实战:iframe安全隔离与实时双向通信的架构设计与落地策略》
  • 在SQL中使用大模型时间预测模型TimesFM
  • Mybatis执行SQL流程(五)之MapperProxy与MapperMethod
  • zoho crm api 无法修改富文本字段的原因:api 版本太低
  • 23种设计模式——构建器模式(Builder Pattern)详解
  • Spring Boot Controller 使用 @RequestBody + @ModelAttribute 接收请求