热门标签 | 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



在这里插入图片描述


推荐阅读
  • minikube安装过程介绍minikubeMinikube是一个可以在本地轻松运行Kubernetes的工具。Minikube会在您的笔记本电脑中的虚拟机上运行一个单节点的Kub ... [详细]
  • Kubernetes(k8s)基础简介
    Kubernetes(k8s)基础简介目录一、Kubernetes概述(一)、Kubernetes是什么(二& ... [详细]
  • kubelet配置cni插件_Kubernetes新近kubectl及CNI漏洞修复,Rancher 2.2.1发布
    今天,Kubernetes发布了一系列补丁版本,修复新近发现的两个安全漏洞CVE-2019-1002101(kubectlcp命令安全漏洞)和CVE-2 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • k8shelm官网:https:helm.sh点击charts:https:artifacthub.iopackagessearch?sortrelevance&page11.1h ... [详细]
  • 今天在node节点发现不能查看pod了输入命令错误如下[rootnode01~]#kubectlgetpodTheconnectiontotheserverlocalhost:8 ... [详细]
  • 虚拟机CentOS7挂载文件系统失败上周五下班前没有关闭虚拟机和物理机,今天周一开了虚拟机之后,发现操作系统启动失败。原因跟这篇文章描述的一模一样。解决操作系统的文件系统挂载的问题 ... [详细]
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社区 版权所有