Kubernetes资源管理

【K8S系列】Kubernetes集群资源管理与调度 深度分析 在现代微服务架构中,Kubernetes(K8s)作为容器编排平台,提供了强大的资源管理和调度能力。然而,随着应用规模的扩大和复杂性增加,如何高效地管理和调度集群资源成为一个关键挑战。本文将深入探讨 Kubernetes 中的资源管理策略,重点介绍资源请求和限制、资源配额、限制策略、调度策略以及监控与自动调整机制。 阅读详情

 

随笔- 102  文章- 0  评论- 39 

Kubernetes资源管理

目录贴:Kubernetes学习系列

1、资源模型

  虛拟化技术是云计算平台的基础,其目标是对计算资源进行整合或划分,这是云计算管理平台中的关键技术。虚拟化技术为云计算管理乎台的资源管理提供了资源调配上的灵活性,从而使得云计算管理平台可以通过虚拟化层整合或划分计算资源。

  相比于虚拟机,新出现的容器技术使用了一系列的系统级别的机制,诸如利用Linux Namespace进行空间隔离,通过文件系统的挂载点决定容器可以访问哪些文件,通过Cgroup确定每个容器可以利用多少资源。此外,容器之间共享同一个系统内核,这样当同一个内核被多个容器使用时,内存的使用效率会得到提升。

  容器和虛拟机两大虛拟化技术,虽然实现方式完全不同,但是它们的资源需求和模型其实是类似的。容器像虛拟机一样需要内存、CPU、硬盘空间和网络带宽,宿主机系统可以将虛拟机和容器都视作一个整体,为这个整体分配其所需的资源,并进行管理。当然, 虚拟机提供了专用操作系统的安全性和更牢固的逻辑边界,而容器在资源边界上比较松散,这带来了灵活性以及不确定性。

  Kubernetes是一个容器集群管理平台,Kubernetes需要统计整体平台的资源使用情况,合理地将资源分配给容器使用,并且要保证容器生命周期内有足够的资源来保证其运行。 更进一步,如果资源发放是独占的,即资源已发放给了个容器,同样的资源不会发放给另外一个容器,对于空闲的容器来说占用着没有使用的资源比如CPU是非常浪费的,Kubernetes需要考虑如何在优先度和公平性的前提下提高资源的利用率。

2、资源请求与限制

  创建Pod的时候,可以指定计算资源(目前支持的资源类型有CPU和内存),即指定每个容器的资源请求(Request)和资源限制(Limit),资源请求是容器所需的最小资源需求,资源限制则是容器不能超过的资源上限。它们的大小关系是:

0<=request<=limit<=infinity

  Pod的资源请求就是Pod中容器资源请求之和。Kubernetes在调度Pod时,会根据Node中的资源总量(通过cAdvisor接口获得),以及该Node上已使用的计算资源,来判断该Node是否满足需求。

  资源请求能够保证Pod有足够的资源来运行,而资源限制则是防止某个Pod无限制地使用资源,导致其他Pod崩溃。特别是在公有云场景,往往会有恶意软件通过抢占内存来攻击平台。

  原理:Docker 通过使用Linux Cgroup来实现对容器资源的控制,具体到启动参数上是--memory和--cpu-shares。Kubernetes中是通过控制这两个参数来实现对容器资源的控制。

以下给出某个Pod申请内存及CPU的示例:

复制代码

[root@k8s-master demon2]# cat test-limit.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: test-limit
    role: master
  name: test-limit
spec:
  containers:
    - name: test-limit
      image: registry:5000/back_demon:1.0
      resources:
        requests:
          memory: "256Mi"
          cpu: "500m"
        limits:
          memory: "512Mi"
          cpu: "1000m"
      command:
      - /run.sh 

复制代码

待Pod调度到具体某个机器上之后,在该机器上查询对应容器的详情,如下:

复制代码

[root@k8s-node-4 home]# docker inspect 1fdbd6f1b39b
[
    {
        "Id": "1fdbd6f1b39b561d09084adafb382b721959e5edd0ee9538472313ed0a39162a",
        "Created": "2017-03-20T05:40:30.756006226Z",
        "Path": "/run.sh",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 18603,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2017-03-20T05:40:31.113657323Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:9369911131d30b12759074e5b72356345446996bf6044950c2def787471e9b4c",
        "ResolvConfPath": "/var/lib/docker/containers/8fdb38a4d0074b07ff2f07e21fd8602fdbf4267eafc76179e931d4f5d9265940/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/8fdb38a4d0074b07ff2f07e21fd8602fdbf4267eafc76179e931d4f5d9265940/hostname",
        "HostsPath": "/var/lib/kubelet/pods/ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b/etc-hosts",
        "LogPath": "/var/lib/docker/containers/1fdbd6f1b39b561d09084adafb382b721959e5edd0ee9538472313ed0a39162a/1fdbd6f1b39b561d09084adafb382b721959e5edd0ee9538472313ed0a39162a-json.log",
        "Name": "/k8s_test-limit.79cbd53f_test-limit_default_ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b_efc94078",
        "RestartCount": 0,
        "Driver": "devicemapper",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/var/lib/kubelet/pods/ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b/etc-hosts:/etc/hosts:Z",
                "/var/lib/kubelet/pods/ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b/containers/test-limit/efc94078:/dev/termination-log:Z"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "container:8fdb38a4d0074b07ff2f07e21fd8602fdbf4267eafc76179e931d4f5d9265940",
            "PortBindings": null,
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "container:8fdb38a4d0074b07ff2f07e21fd8602fdbf4267eafc76179e931d4f5d9265940",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 984,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": [
                "seccomp=unconfined"
            ],
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "docker-runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 1024,
            "Memory": 536870912,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 100000,
            "CpuQuota": 200000,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": -1,
            "MemorySwappiness": -1,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Name": "devicemapper",
            "Data": {
                "DeviceId": "210",
                "DeviceName": "docker-253:0-100693626-cb08877222f483f043fc45c5c4b024de8da9c393c3c06c6252d3c59d330dd4d4",
                "DeviceSize": "10737418240"
            }
        },
        "Mounts": [
            {
                "Source": "/var/lib/kubelet/pods/ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b/etc-hosts",
                "Destination": "/etc/hosts",
                "Mode": "Z",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Source": "/var/lib/kubelet/pods/ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b/containers/test-limit/efc94078",
                "Destination": "/dev/termination-log",
                "Mode": "Z",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "test-limit",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "222/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "KUBERNETES_PORT_443_TCP_PROTO=tcp",
                "KUBERNETES_PORT_443_TCP_PORT=443",
                "FRONTEND_SERVICE_PORT=tcp://10.254.232.119:8080",
                "REDIS_SERVICE_SERVICE_PORT=6379",
                "REDIS_SERVICE_PORT_6379_TCP_ADDR=10.254.71.136",
                "KUBERNETES_SERVICE_PORT_HTTPS=443",
                "KUBERNETES_SERVICE_HOST=10.254.0.1",
                "KUBERNETES_PORT_443_TCP=tcp://10.254.0.1:443",
                "BACK_SERVICE_PORT_8080_TCP_PORT=8080",
                "FRONTEND_SERVICE_PORT_8080_TCP=tcp://10.254.232.119:8080",
                "FRONTEND_SERVICE_PORT_8080_TCP_ADDR=10.254.232.119",
                "REDIS_SERVICE_PORT_6379_TCP=tcp://10.254.71.136:6379",
                "REDIS_MASTER_PORT_6379_TCP_PORT=6379",
                "FRONTEND_PORT_80_TCP_PORT=80",
                "REDIS_MASTER_PORT_6379_TCP_ADDR=10.254.132.210",
                "REDIS_SLAVE_PORT_6379_TCP=tcp://10.254.104.23:6379",
                "REDIS_SLAVE_PORT_6379_TCP_PORT=6379",
                "BACK_SERVICE_SERVICE_HOST=10.254.246.51",
                "BACK_SERVICE_PORT=tcp://10.254.246.51:8080",
                "BACK_SERVICE_PORT_8080_TCP_PROTO=tcp",
                "FRONTEND_PORT=tcp://10.254.93.91:80",
                "REDIS_MASTER_SERVICE_HOST=10.254.132.210",
                "REDIS_MASTER_PORT_6379_TCP_PROTO=tcp",
                "KUBERNETES_SERVICE_PORT=443",
                "FRONTEND_SERVICE_PORT_8080_TCP_PROTO=tcp",
                "REDIS_MASTER_SERVICE_PORT=6379",
                "REDIS_SLAVE_SERVICE_HOST=10.254.104.23",
                "REDIS_SLAVE_PORT=tcp://10.254.104.23:6379",
                "REDIS_SERVICE_PORT_6379_TCP_PROTO=tcp",
                "REDIS_MASTER_PORT=tcp://10.254.132.210:6379",
                "KUBERNETES_PORT_443_TCP_ADDR=10.254.0.1",
                "BACK_SERVICE_SERVICE_PORT=8080",
                "FRONTEND_SERVICE_HOST=10.254.93.91",
                "FRONTEND_SERVICE_SERVICE_PORT=8080",
                "REDIS_SERVICE_SERVICE_HOST=10.254.71.136",
                "REDIS_SERVICE_PORT=tcp://10.254.71.136:6379",
                "BACK_SERVICE_PORT_8080_TCP=tcp://10.254.246.51:8080",
                "REDIS_SLAVE_SERVICE_PORT=6379",
                "REDIS_SLAVE_PORT_6379_TCP_PROTO=tcp",
                "REDIS_SLAVE_PORT_6379_TCP_ADDR=10.254.104.23",
                "KUBERNETES_PORT=tcp://10.254.0.1:443",
                "BACK_SERVICE_PORT_8080_TCP_ADDR=10.254.246.51",
                "FRONTEND_PORT_80_TCP=tcp://10.254.93.91:80",
                "FRONTEND_PORT_80_TCP_ADDR=10.254.93.91",
                "FRONTEND_SERVICE_PORT_8080_TCP_PORT=8080",
                "REDIS_MASTER_PORT_6379_TCP=tcp://10.254.132.210:6379",
                "FRONTEND_PORT_80_TCP_PROTO=tcp",
                "FRONTEND_SERVICE_SERVICE_HOST=10.254.232.119",
                "REDIS_SERVICE_PORT_6379_TCP_PORT=6379"
            ],
            "Cmd": null,
            "Image": "registry:5000/back_demon:1.0",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/run.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "io.kubernetes.container.hash": "79cbd53f",
                "io.kubernetes.container.name": "test-limit",
                "io.kubernetes.container.restartCount": "0",
                "io.kubernetes.container.terminationMessagePath": "/dev/termination-log",
                "io.kubernetes.pod.name": "test-limit",
                "io.kubernetes.pod.namespace": "default",
                "io.kubernetes.pod.terminationGracePeriod": "30",
                "io.kubernetes.pod.uid": "ba75e7a9-0d2f-11e7-b3d5-fa163ebba51b"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": null,
            "SandboxKey": "",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": null
        }
    }
]

复制代码

3、LimitRange

  LimitRange设计的初衷是为了满足以下场景:

    能够约束租户的资源需求。

    能够约束容器的资源请求范围。

    能够约束Pod的资源请求范围。

    能够指定容器的默认资源限制。

    能够指定Pod的默认资源限制。

    能够约束资源请求和限制之间的比例。

4、Resource Quota

  Kubernetes是一个多租户架构,当多用户或者团队共享一个Kubernetes系统的时候,系统管理员需要防止租户的资源抢占,定义好资源分配策略。比如Kubernetes系统共有20 核CPU和32GB内存,分配给A租户5核CPU和16GB,分配给B租户5核CPU 和8GB,预留10核CPU和8GB内存。这样,租户中所使用的CPU和内存的总和不能超过指定的资源配额,促使其更合理地使用资源。

  Kubernetes提供API对象Resource Quota(资源配额)来实现资源配额,Resource Quota不仅可以作用于CPU和內存,另外还可以限制比如创建Pod的总数目、Service总数目、RC总数目等。

  默认情况下,Namespace是没有Resource Quota的,需要另外创建Resource Quota。一旦Namespace中有了Resource Quota,那么创建Pod的时候就必须制定资源请求,否则Pod就会创建失败。

深入解析GEM5 McPAT NoC功耗模型:从arbiter电容计算到微架构关联 本文深入解析GEM5 McPAT NoC功耗模型,重点探讨arbiter电容计算与微架构的关联。通过拆解动态功耗公式和四类电容的物理本质,揭示能量与功率的转换关系,并提供参数调试和模型精度优化的实战技巧,帮助开发者更准确地预测和优化NoC功耗。 阅读详情

相关推荐

零基础玩转NILM:用nilmtk提取UKDALE电器数据的保姆级教程

本文为零基础用户提供了一份详细的NILM入门指南,重点讲解如何使用nilmtk工具包从UKDALE数据集中提取电器级用电数据。教程涵盖环境搭建、核心概念解析、数据提取实战及常见问题排查,帮助读者快速掌握非侵入式负荷监测的数据预处理关键步骤。

rgv234567的博客 499

Kubernetes:容器编排和管理平台

k8s

Jacksonfan1的博客 891

使用VIVADO 2019.1 搭建以太网接口

以太网 MAC+SGMII->GMII接口转换 以FPGA V7为例,搭建一个千兆以太网接口。运行环境为Vivado2019.1。板卡的FPGA V7与千兆网口芯片采用SGMII互联,最终实现FPGA与上位机之间的千兆网卡通信,实际实现时,V7采用MAC + GMII ->SGMII的结构。SGMII接口使用1G/2.5G Ethernet PCS/PMA or SGMII ip核,MAC层使用Tri Mode Ethernet MAC ip核。 由于MAC层IP不支持SGMII接口,因此需要G

qq_44641513的博客 8415

k8s笔记15--配置共享内存

k8s笔记15--配置共享内存 介绍 案例 docker 环境 说明 介绍 容器启动后默认会有 64M 的共享内存挂载在/dev/shm 目录,用户可以向访问本地文件系统一样访问该共享内存,如果需要配置更大的内存,那么在docker中需要通过 shm-size 来获取,k8s 中需要通过挂载memory类型的emptyDir来实现。 本文主要介绍如何配置docker 和 k8s 环境的共享内存目录,并加以案例说明。 案例 docker 环境 默认为64M,如下图: 在这里插入图片描述 通 shm-size

脚步不能达到的地方,眼光可以达到;眼光不能达到的地方,精神可以飞到 5584

Arduino IDE 2.3.2 配置 UNO R4 WIFI 开发环境避坑指南(附LED矩阵驱动测试)

本文详细介绍了如何在Arduino IDE 2.3.2中配置UNO R4 WIFI开发环境,并提供了LED矩阵驱动的实战指南。从开发环境搭建到硬件连接,再到LED矩阵的初始化和弹球动画实现,手把手教你避开常见配置陷阱,最终实现流畅的动画效果。特别适合刚接触UNO R4 WIFI的开发者快速上手。

weixin_28675839的博客 220

避坑指南:ESP32S3驱动INMP441麦克风时的常见硬件冲突与解决方案

本文详细解析了ESP32S3驱动INMP441麦克风时常见的硬件冲突问题,包括GPIO资源冲突、电源噪声、I2S时钟同步等,并提供了实用的解决方案和优化策略。通过实测数据和代码示例,帮助开发者快速排查和解决音频设备开发中的疑难问题,提升系统稳定性和音频质量。

embedding5hiker的博客 943

Docker 学习笔记

Docker 学习笔记

u011781185的博客 2010

告别Qweb!用ReportBro在Odoo 13-19版本中5步搞定动态报表

本文介绍了如何在Odoo 13-19版本中使用ReportBro替代Qweb快速实现动态报表设计。通过5步集成指南,包括环境准备、前端集成、后端服务搭建等,展示了ReportBro在可视化设计、即时预览和多格式输出(PDF/XLSX)方面的优势,显著提升开发效率和报表灵活性。

mac99的博客 801

深入了解Kubernetes(K8s):现代化容器编排和管理平台

Kubernetes(简称K8s)是一种开源的容器编排和管理平台,用于自动化应用程序在容器化环境中的部署、扩展、管理和运维。Kubernetes最初由Google开发,并于2014年发布为开源项目,现在由Cloud Native Computing Foundation(CNCF)维护和管理。Kubernetes的设计目标是简化容器应用的部署、管理和扩展。它提供了一种灵活的、可扩展的平台,可以在物理机、虚拟机或云上运行容器化应用。

DTCloud 720

超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!

你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!

网络技术联盟站 1109

100天精通Oracle-实战系列(第14天)Veritas NetBackup(NBU) 配合 RMAN 脚本备份 Oracle 数据库

100天精通Oracle-实战系列(第14天)Veritas NetBackup(NBU) 配合 RMAN 脚本备份 Oracle 数据库

LuciferLiu_DBA 1993

Kubernetes(K8s)资源管理

本文介绍了Kubernetes(K8s)资源管理的关键概念和方法。K8s通过抽象资源(如Pod、控制器、Service等)实现集群管理,并提供三种资源操作方式:命令式对象管理(直接操作资源)、命令式对象配置(通过配置文件操作)和声明式对象配置(自动同步期望状态)。文章详细说明了kubectl命令行工具的使用方法,包括基础操作、资源更新、集群维护和故障排查等核心命令。同时介绍了命名空间的隔离作用及系统默认命名空间。建议开发/生产环境使用声明式对象配置方式,配合YAML配置文件实现高效管理。掌握这些基础概念和工

t_suifeng的博客 1171

EPO: Hierarchical LLM Agents with Environment PreferenceOptimization

长期决策和规划任务依然是基于大型语言模型(LLM)的智能体面临的一大挑战(Valmeekam 等,2023;Liu 等,2023;Silver 等,2024)。这些任务需要智能体进行多步骤的规划,同时保持行为的一致性和目标导向,这对于通常被设计用于即时和局部预测的大型语言模型来说颇为困难。此外,针对具身智能体的大型语言模型微调面临的一个关键难题是大规模标注数据的需求(Reed 等,2022)。

qq_52053775的博客 142

mcp-k8s:赋能智能化的Kubernetes资源管理

mcp-k8s:赋能智能化的Kubernetes资源管理 在云计算与容器技术日益普及的今天,Kubernetes已经成为管理和部署容器化应用的事实标准。然而,复杂的命令和资源配置文件常常让开发者和管理员感到困惑。mcp-k8s项目正是为了简化这一过程而诞生,它通过Model Control Protocol(MCP)提供了一种新的交互方式,让Kubernetes资源管理变得更加直观和高效。 项目介...

gitblog_00146的博客 1202

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【kubernetes】k8s配置资源管理

configMap资源(简称cm)作用:用于保存配置文件、环境变量等不需要加密的信息。它可以实现将配置信息与应用程序镜像解耦创建cm资源kubectl create cm <资源名称> -n <命名空间> --from-file=文件|目录 --from-liternal=<键名>=<键值>查看cm资源kubectl describe -n <命名空间> cm <资源名称>kubectl get -n <命名空间> cm <资源名称> -o yaml。

qq_54188720的博客 1389

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【kubernetes】探索k8s集群中kubectl的陈述式资源管理

k8s中文文档:http://docs.kubernetes.org.cn/683.html。

YCyjs的博客 1188

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【kubernetes】-2 K8S的资源管理

K8S资源管理

ordinary的博客 1813

【k8s应用管理】kubernetes 配置资源管理

Secret是 Kubernetes 中用于存储敏感信息的资源对象。可以通过命令行或 YAML 文件创建 Secret。Secret 可以通过挂载 Volume 或环境变量的方式在 Pod 中使用。使用 Secret 可以有效减少敏感信息的暴露风险,并方便管理。Secrets。作用:存储非加密的配置数据(如应用配置、环境变量),与 Secret 类似,但用于非敏感信息。应用场景:管理应用的配置参数(如数据库地址、日志级别)。核心特点支持从文件、目录或字面值创建。

Karoku的博客 1396

《Kubernetes》 资源管理+实战

本文介绍了Kubernetes资源管理和YAML语言基础,以及三种资源管理方式(命令式对象管理、命令式对象配置、声明式对象配置)。重点讲解了Namespace、Pod、Deployment和Service等核心资源的概念与操作,包括创建、查看和删除等。通过部署Nginx服务的实战案例,演示了从Pod创建到Service暴露的完整流程。此外,还介绍了如何开启IPVS模式优化Service性能。文章为Kubernetes初学者提供了入门级指导,涵盖资源管理的基本操作和实践技巧。

2301_80348933的博客 1096

【k8s应用管理】kubernetes lngress资源管理

作用:作为 Kubernetes 集群的接入层,接收外部请求并根据规则(域名或 URL 路径)将请求转发到相应的 Service 和 Pod。特点支持七层代理(HTTP/HTTPS)。提供灵活的流量管理(如基于域名、路径的转发)。支持 TLS 加密、认证、重写路径等高级功能。功能:现代 HTTP 反向代理和负载均衡工具,专为微服务架构设计。特点实时与 Kubernetes API 交互,自动感知后端 Service 和 Pod 的变化。支持自动服务发现和配置更新。

Karoku的博客 1370

kubernetes/k8s配置资源管理

系统自建的:kubernetes.io/service-account-token,用来访问apiserver,pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信,自动挂载到pod的/run/secret/kubernetes.io/serviceaccount.保存的是不需要加密的信息。configMap的热更新:热更新可以直接反映到容器内部,也不会触发pod的更新机制,如果不是需要重启的配置,都可以直接生效。

m0_52416577的博客 1143

【Kubernetes】k8s集群配置资源管理

k8s集群配置资源管理

weixin_68840588的博客 680

kubernetes中的资源管理

在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在Pod中,而kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。

weixin_68398469的博客 1139

Kubernetes(k8s)资源管理

Kubernetes(k8s)资源管理;yaml文件示例;三种资源管理的方式

你看月亮好美的博客 578

【Kubernetes】k8s集群中kubectl的陈述式资源管理

书籍是糊口的加速器

F12138X的博客 1557
上一篇: Kubernetes应用健康检查
下一篇: K8S的更新、回滚、伸缩
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值