kubernetes基础知识之download api

查看pod的信息:

kubectl get pod -n $namespace_name -o wide

kubernetes downward api 把容器的实际运行结果,反馈到容器内部,提供给容器,供给程序去调用。

资源的软限制等同于应用的目标消耗资源。

硬限制是说如果目标值不够用的话,可以临时扩容资源,但是不能超过硬限制的值。

kubernetes downward api 卷绑定:

downward api 卷绑定pod的yaml文件pod.yaml:

apiVersion: v1

kind: Pod

metadata:

name: downward-api-volume-example

namespace: default

spec:

containers:

- name: nginx-container

image: nginx

imagePullPolicy: Always

ports:

- containerPort: 80

resources:

limits:

cpu: "1"

memory: "512Mi"

requests:

cpu: "1"

memory: "256Mi"

volumeMounts:

- name: downward-api-volume

mountPath: /etc/podinfo

volumes:

- name: downward-api-volume

downwardAPI:

items:

- path: "annotations"

fieldRef:

fieldPath: metadata.annotations

- path: "labels"

fieldRef:

fieldPath: metadata.labels

- path: "name"

fieldRef:

fieldPath: metadata.name

- path: "namespace"

fieldRef:

fieldPath: metadata.namespace

- path: "uid"

fieldRef:

fieldPath: metadata.uid

-path: "cpuRequest"

resourceFieldRef:

containerName: nginx-container

resource: requests.cpu

-path: "memoryRequest"

resourceFieldRef:

containerName: nginx-container

resource: requests.memory

-path: "cpuLimit"

resourceFieldRef:

containerName: nginx-container

resource: limits.cpu

-path: "memoryLimit"

resourceFieldRef:

containerName: nginx-container

resource: limits.memory

restartPolicy: Never

卷名downward-api-volume绑定在了/etc/podinfo。

进入pod:

kubectl exec -it `kunectl get pod -n default --no-headers| awk '{print $1}'` -n default -- /bin/bash

cd /etc/podinfo

可以看到挂载过来的内容。

或者这样使用for循环批量显示内容:

for i in $(ls); do echo "filename: ${i}";cat ${i}; echo;done

这样可以显示/etc/podinfo文件目录下的所有文件内容。

Pod中内存的软限制和硬限制的单位是B(字节Byte),进制是1024。

使用卷volume的方式挂载的好处是:当内容被downward api内容修改之后,可以立即更新到pod中。

查看pod的标签:

kubectl get pod -n $namespace_name --show-labels --no-headers

给pod添加标签:

kubectl label pod $pod_name -n $namespace_name $key=$value

举例:

kubectl label pod $pod_name domain=87long.com

查看pod标签:

kubectl get pod -n default --show-labels

查看标签配置成功。

查看使用volume卷挂载绑定pod之后的挂载内容:

for i in $(ls);do echo "filename: ${i}";cat ${i};echo;done

说明以卷volume的方式绑定,可以进行热更新。

只要对pod进行了修改,都会被反馈到文件内部的变化。

对于卷来说,会保持热更新的特性。当对pod本身的数据进行了修改,元数据信息发生修改改变之后,会反馈到挂载的文件中,及时地保证更新。

还有就是可以传递一个容器的资源字段到另外一个容器中。这里有一个前提条件:必须是同一个pod的容器信息。

Downward API提供了一种简单的方式,将pod和容器的元数据传递给在它们内部运行的进程,但这种方式其实仅仅可以暴露一个pod自身的元数据传递给在它们内部运行的进程。这种方式仅仅可以暴露一个pod自身的元数据,而且只可以暴露部分元数据。

鼓励的话语:别怕过去的自己,如何生活得狼狈不堪;只有现在勇往直前的力量,才足以战胜遥不可及的梦想。路,一直在脚下,好好努力,明天必定越来越好!

相关文章

Nginx Proxy Manager - Docker 建站最佳伴侣

本文首发于: https://blog.frytea.com/archives/658/很长一段时间中,我都在思考容器建站的可行性。容器有诸多益处,各类好处就不一一列举了。在企业场景下,K8s 几乎一...

复杂系统如何在不停机升级同时保持稳定?你必须考虑以下几个点...

背景在互联网行业,线上服务的升级更新可谓家常便饭。据统计,在过去的一个季度中闲鱼工程师们执行了千余次发布,总计更新的代码数量超过百万行。这些发布中,有一些可能只更新了几行代码,而有一些可能执行了整个集...

redis 为什么这么快,除了io多路复用还有什么?

前言相信大家在面试过程中,都被面试官问到过这样一个问题,缓存中间件大名鼎鼎的 redis 速度为什么这么快呢?针对于面试过程中的痛点问题,笔者昨晚熬夜收集资料,并且通过走访大量使用者,整理出如下的结论...

什么是网关服务?

网关服务 (Gateway Service),也常被称为 API 网关 (API Gateway),在微服务架构中扮演着至关重要的角色。 简单来说,网关服务是微服务系统的单一入口点,就像建筑物的入口大...

「C++」频繁分配释放内存导致的性能问题的分析

现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C progra...

某大厂的C++协程框架(Kiev)技术内幕

Kiev框架简介kiev是该大厂推送平台目前使用的Linux-C++后台开发框架。先后由多位资深架构师、资深C++工程师倾力打造,已经在推送平台这个千万用户级的大型分布式系统上经历了近多年的考验。如今...