热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s容器内获取Pod信息和资源限制

文章目录1.获取pod信息1.1一个简单示例1.2可以获取那些信息2.获取容器资源限制前言:从容器内获取容器的IP端口namespace等信息,以及k8

文章目录

  • 1. 获取pod信息
    • 1.1 一个简单示例
    • 1.2 可以获取那些信息
  • 2. 获取容器资源限制


前言:
从容器内获取容器的IP/端口/namespace等信息,以及k8s对容器的内存/CPU等资源限制的值。


1. 获取pod信息

说明:容器中获取pod的所有信息,先看一个简单示例,然后我们说明怎么获取其他信息。


1.1 一个简单示例


说明:定义一些变量,以获取POD状态信息(如节点名/容器名/namespace等)


  • yml文件如下

apiVersion: v1
kind: Pod
metadata:name: busybox-infornamespace: test
spec:containers:- name: busybox-inforimage: harbocto.boe.com.cn/public/nginxenv:- name: MY_NODE_NAMEvalueFrom:fieldRef:fieldPath: spec.nodeName- name: MY_POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: MY_POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: MY_POD_IPvalueFrom:fieldRef:fieldPath: status.podIP- name: MY_POD_SERVICE_ACCOUNTvalueFrom:fieldRef:fieldPath: spec.serviceAccountNameports:- containerPort: 80

  • 结果测试
    用上边的yml文件启动容器(略)之后,进入容器,并打印yml文件中定义的变量,可以看见容器的信息被以变量形式传入容器。

[root@DoM01 test]# kubectl exec -it -n test busybox-infor bash
root@busybox-infor:/# echo ${MY_NODE_NAME}
don03
root@busybox-infor:/# echo ${MY_POD_NAME}
busybox-infor
root@busybox-infor:/# echo ${MY_POD_NAMESPACE}
test
root@busybox-infor:/# echo ${MY_POD_IP}
10.244.5.20
root@busybox-infor:/# echo ${MY_POD_SERVICE_ACCOUNT}
default

1.2 可以获取那些信息

上边通过k8s提供的这些接口看到的信息,实际上我们用edit 查看pod信息时都可以看到。

从示例中我们可以看到变量的valueFrom都是诸如: metadata.namespace, spec.nodeName, metadata.name …… 很容易猜到,这和我们使用edit pod 看到的信息应该是一致的。所以我们可以用变量取到这里的所有信息。


  • 我们验证一下,执行如下命令:

[root@DoM01 test]# kubectl edit -n test pod busybox-infor

可以查找到刚才的信息,如我们可以看到 namespace的key如下:

在这里插入图片描述

而我们刚才定义变量获取值的位置是:

metadata.namespace

这是一致的。如此我们可以定义你查到的pod的任意信息了。

2. 获取容器资源限制

说明:此处获取的是k8s对容器的资源限制,区别前边的容器信息。当然我们通过edit也是可以看到的。


  • 创建podinfo.yml文件如下:

apiVersion: v1
kind: Pod
metadata:name: busybox-infornamespace: test
spec:containers:- name: busybox-inforimage: harbocto.boe.com.cn/public/nginxenv:- name: MY_CPU_REQUESTvalueFrom:resourceFieldRef:resource: requests.cpu- name: MY_CPU_LIMITvalueFrom:resourceFieldRef:resource: limits.cpu- name: MY_MEM_REQUESTvalueFrom:resourceFieldRef:resource: requests.memory- name: MY_MEM_LIMITvalueFrom:resourceFieldRef:resource: limits.memoryresources:requests:cpu: "250m"memory: "64Mi"limits:cpu: "4000m"memory: "8Gi"

  • 启动容器

[root@DoM01 test]# kubectl create -f podinfo.yml
pod/pod-infor created
[root@DoM01 test]# kubectl get pod -n test
NAME READY STATUS RESTARTS AGE
pod-infor 1/1 Running 0 5s

  • 验证
    进入容器,打印刚才的变量如下:

[root@DoM01 test]# kubectl exec -it -n test busybox-infor bash
root@busybox-infor:/# echo ${MY_MEM_LIMIT}
8589934592
root@busybox-infor:/# echo ${MY_MEM_REQUEST}
67108864

如上,变量值和我们刚才设置的一样。如果没有设置,变量值为0



在这里插入图片描述


推荐阅读
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
author-avatar
西南科技大学地质协会_927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有