首页 > 其他分享 >D14 kubernetes 容器服务质量和容器环境变量

D14 kubernetes 容器服务质量和容器环境变量

时间:2024-09-05 19:24:52浏览次数:12  
标签:D14 容器 QoS name kubernetes env pod k8s root

1、容器服务质量

	服务质量(quality of Services,QoS),是kubernetes用于对pod的进行优先级划分的一种机制。通过QoS,kubernetes将pod划分为3个等级。如下所示
Guaranteed	优先级最高	pod中每个容器都被设置了CPU/内存的资源请求和资源限制,并且资源请求的值与资源限制的值相等
Burstable	优先级中等	pod中至少有一个容器设置了CPU或内存的资源请求或资源限制
BestEffort	优先级最低	pod中没有容器设置资源请求和资源限制
  • 创建一个QoS级别为Guaranteed的pod
[root@k8s-master k8s]# cat pod-qos1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-qos1
spec:
  containers:
  - name: web
    image: uhub.service.ucloud.cn/librarys/nginx:1.23
    resources:
      # 资源请求
      requests:
        memory: "500Mi"
        cpu: "200m"
      # 资源限制
      limits:
        memory: "500Mi"
        cpu: "200m"
[root@k8s-master k8s]# kubectl apply -f pod-qos1.yaml
pod/pod-qos1 created
[root@k8s-master k8s]# kubectl describe pod pod-qos1 | grep "QoS"
QoS Class:                   Guaranteed
  • 创建一个QoS级别为Burstable的pod
[root@k8s-master k8s]# cat pod-qos2-Burstable.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-qos2
spec:
  containers:
  - name: web
    image: uhub.service.ucloud.cn/librarys/nginx:1.23
    resources:
      # 资源请求
      requests:
        memory: "500Mi"
      # 资源限制
      limits:
        memory: "500Mi"
[root@k8s-master k8s]# kubectl apply -f pod-qos2-Burstable.yaml
pod/pod-qos2 created
[root@k8s-master k8s]# kubectl describe pod pod-qos2 | grep "QoS"
QoS Class:                   Burstable
  • 创建一个QoS级别为BestEffort的pod
[root@k8s-master k8s]# cat pod-qos3-BestEffort.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-qos3
spec:
  containers:
  - name: web
    image: uhub.service.ucloud.cn/librarys/nginx:1.23
[root@k8s-master k8s]# kubectl apply -f pod-qos3-BestEffort.yaml
pod/pod-qos3 created
[root@k8s-master k8s]# kubectl describe pod pod-qos3 | grep "QoS"
QoS Class:                   BestEffort
	综上所述,pod的QoS级别是由资源请求和资源限制决定的。了解pod的QoS级别对于管理和优化集群资源分配提供了有效的依据,具有以下作用
资源分配优化:了解pod 的QoS级别有助于更好的理解和规划资源分配,通过针对不同QoS级别的pod采取不同的资源调度策略,可以最大程度提高集群的资源利用率
故障恢复:当节点发生故障或资源不足时,kubernetes会优先保留Guaranteed级别的pod,并终止或重启低级别的pod,以保护集群的稳定性。因此,QoS级别可以帮助预测哪些pod可能受到影响,并相应的设计故障恢复机制
	为了提高应用程序的服务质量,可以根据应用程序的需求设置合适的QoS级别,如将核心应用设置为Guaranteed级别,将常规应用设置为Burstable级别。

2、容器环境变量

	在pod配置中,env字段用于设置容器的环境变量。通过环境变量,可以向容器中传递数据,如配置信息、授权凭据等。容器中的应用程序可以读取这些环境以获取数据并使用
  • 环境变量配置示例如下:
[root@k8s-master k8s]# cat pod-env.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: pod-env
  name: pod-env
spec:
  containers:
  - name: web
    image: uhub.service.ucloud.cn/librarys/nginx:1.23
    env:
    - name: API_URL
      value: "https://172.16.99.71/api"
    - name: API_KEY
      value: "LuNOpq"
在上述配置中,容器设置了两个环境变量。分别是API_URL和API_KEY
[root@k8s-master k8s]# kubectl apply -f pod-env.yaml
pod/pod-env created
[root@k8s-master k8s]# kubectl exec -it pod-env -- bash
容器中应用程序可以通过读取这两个环境变量来获取API连接信息
root@pod-env:/# echo $API_URL
https://172.16.99.71/api
root@pod-env:/# echo $API_KEY
LuNOpq
	另外,kubernetes还提供了 DownwardAPI功能,该功能允许容器获取与pod 相关的元数据信息。如pod的名称、命名空间、ip地址等。配置示例如下
[root@k8s-master k8s]# cat pod-env-info.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: pod-env-info
  name: pod-env-info
spec:
  containers:
  - name: web
    image: uhub.service.ucloud.cn/librarys/nginx:1.23
    env:
    - name: MY_NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
    - name: MY_POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name
    - name: MY_POD_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace
    - name: MY_POD_IP
      valueFrom:
        fieldRef:
          fieldPath: status.podIP
[root@k8s-master k8s]# kubectl apply -f pod-env-info.yaml
pod/pod-env-info created
[root@k8s-master k8s]# kubectl exec -it pod-env-info -- bash
root@pod-env-info:/# echo -e "$MY_NODE_NAME\t$MY_POD_NAME\t$MY_POD_NAMESPACE\t$MY_POD_IP"
k8s-node02	pod-env-info	default	10.244.58.238
  • 在上述配置中,将以下pod相关信息注入容器的环境变量中
MY_NODE_NAME:这个环境变量的值来自pod所在的节点名称
MY_POD_NAME:这个环境变量来自pod的名称
MY_POD_NAMESPACE:这个环境变量来自pod所在的命名空间
MY_POD_IP:这个环境变量来自pod的ip地址
容器中的应用程序可以很方便的读取这些环境变量,以获取pod相关信息

标签:D14,容器,QoS,name,kubernetes,env,pod,k8s,root
From: https://www.cnblogs.com/suyj/p/18397047

相关文章

  • D16 kubernetes 容器生命周期回调
    1、简介容器生命周期回调是指在容器的生命周期中执行用户定义的操作。kubernetes支持以下生命周期回调PostStart(容器启动后):在容器启动后立即执行的回调,它可以用于执行一些初始化任务PreStop(容器停止前):在容器停止之前执行的回调。它可以用于执行清理或保存状态的操作......
  • C++ STL queue容器——队列
    queue容器基本概念queue是一种**先进先出的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。queue容器没有迭代器,所有元素进出都必须符合“先进先出”条件,只有顶端的元素才有机会被外界取用,所以也不提供遍历功能。queue容器常用操作构造函数queue<T>qu......
  • D15 kubernetes 初始化容器(initContainers)
    初始化容器(initContainers)是Pod中一种特殊类型的容器,专用于在主容器启动之前执行一些初始化任务和操作,以满足主容器所需的环境。 初始化容器在整个pod的生命周期内仅运行一次,并且在主容器启动之前完成它们的任务,既初始化容器一旦任务完成,就必须退出。初始化容器有以下应用场......
  • 低压配电系统中的无功补偿设备——智能电力电容器
    摘要:智能电力电容器是低压配电系统中用于节能、降低线损、提高功率因数和电能质量的新一代无功补偿设备。它由智能测控单元、投切开关、线路保护单元、低压电力电容器等构成,改变了传统无功补偿装置体积庞大和笨重的结构模式,适应了现代电网对无功补偿的更高要求。关键词:智能电......
  • C++ STL stack容器——栈
    stack容器基本概念stack是一种先进后出的数据结构,它只有一个出口,形式如下图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何地方可以存取stack的娶她元素。换句话说,stack不允许有遍历行为。元素推入栈的操作称为push,将元素推出栈的操作称为pop。st......
  • 容性负载箱如何测量电容器的容量、电压、泄漏电流和ESR等参数?
    容性负载箱是用于测量电容器参数的重要设备。它的主要功能是通过向电容器施加不同的负载,从而测量电容器的容量、电压响应、损耗等关键参数。具体来说,容性负载箱可以通过以下方式测量电容器的各项参数:测量电容器的容量:容性负载箱可以通过施加不同的负载,测量电容器在不同电压下的......
  • Kubernetes学习指南:保姆级实操手册06——部署kubernetes集群
    Kubernetes学习指南:保姆级实操手册06——部署kubernetes集群1、配置YUM源###在所有Master节点执行#配置yum源cat>/etc/yum.repos.d/kubernetes.repo<<EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x8......
  • 最新版Kubernetes部署教程v1.31.0
    最新版Kubernetes高可用部署教程v1.31.0系统:Almalinux9架构:192.168.100.10control-plane-endpoint.k8s.localcontrol-plane-endpoint#负载均衡服务器,配置负载均衡后修改ip后续会讲解192.168.100.10masterA.k8s.localmasterA192.168.100.20masterB.k8s.localma......
  • 0904,关联式容器针对于自定义形式的写法(
    目录001_set.cc 002_set.cc   坏,我就说怎么想着不对嘻嘻003_setAA_Person.cc作业01 list拥有哪些特有的操作,其功能是什么,请举例说明。02 问答题:STL中的emplace_back和push_back有什么区别?提示:可以从构建方式、性能等方面作答。03 自己独立实现出set针对于Poin......
  • 【云原生•容器】Docker架构剖析,它还是从前那个Docker吗?(上)
    【云原生•容器】Docker架构剖析,它还是从前那个Docker吗?Docker架构Docker采用client/server架构,客户端向服务器发送请求,服务器负责构建、运行和分发容器:Docker架构说明:我们日常使用各种docker命令,如dockerrun、dockerpull等,其实就是在使用Docker客户端(DockerCLI);客户端将用户输......