【Kubernets】Kubernets资源类型Deployment详细介绍

ops/2025/2/22 12:46:16/

文章目录

Kubernets资源概览

<a class=k8s-reources" />

Deployment__4">Kubernetes Deployment 资源类型详细介绍

Deployment 是 Kubernetes 中用于管理 无状态应用 的核心资源类型之一。它提供了一种声明式的方式来定义应用的期望状态,并确保 Pod 的副本数、更新策略和回滚机制等都能按照预期运行。

Deployment__8">Deployment 的主要功能

  1. 声明式更新

    • 定义应用的期望状态(如副本数、镜像版本等),Kubernetes 会自动调整实际状态以匹配期望状态。
  2. 副本管理

    • 确保指定数量的 Pod 副本始终运行。
    • 支持动态扩缩容。
  3. 滚动更新

    • 支持无缝更新应用版本,逐步替换旧版本的 Pod。
    • 可以配置更新策略(如最大不可用 Pod 数和最大超出副本数)。
  4. 回滚机制

    • 如果更新失败,可以快速回滚到之前的稳定版本。
  5. 健康检查

    • 结合 Readiness ProbeLiveness Probe,确保只有健康的 Pod 才会接收流量。
  6. 版本历史

    • 记录每次更新的历史,方便回滚和审计。

Deployment__30">Deployment 的核心字段

以下是一个典型的 Deployment 配置文件示例:

apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deploymentlabels:app: myapp
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: myapp:1.0ports:- containerPort: 80resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"livenessProbe:httpGet:path: /healthzport: 80initialDelaySeconds: 3periodSeconds: 10readinessProbe:httpGet:path: /readyport: 80initialDelaySeconds: 5periodSeconds: 10restartPolicy: Alwaysstrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1

字段详解

1. metadata
2. spec
  • replicas:指定 Pod 的副本数。例如,replicas: 3 表示运行 3 个 Pod。
  • selector:定义 Deployment 如何选择管理的 Pod。
    • matchLabels:通过标签选择 Pod。必须与 template.metadata.labels 匹配。
3. template
  • 定义 Pod 的模板,用于创建 Pod。
  • metadata:Pod 的元数据,包括标签。
  • spec:Pod 的规格,定义容器、卷、环境变量等。
4. containers
  • 定义 Pod 中的容器。
  • name:容器名称。
  • image:容器镜像。
  • ports:容器暴露的端口。
  • resources:资源请求和限制。
    • requests:容器启动所需的最小资源。
    • limits:容器可以使用的最大资源。
  • livenessProbe:健康检查,用于判断容器是否存活。
  • readinessProbe:就绪检查,用于判断容器是否准备好接收流量。
5. strategy
  • 定义更新策略。
  • type:更新类型,默认为 RollingUpdate
    • RollingUpdate:滚动更新,逐步替换旧 Pod。
    • Recreate:先删除所有旧 Pod,再创建新 Pod。
  • rollingUpdate:滚动更新的详细配置。
    • maxUnavailable:更新过程中允许的最大不可用 Pod 数(可以是数字或百分比)。
    • maxSurge:更新过程中允许的最大超出副本数(可以是数字或百分比)。
6. restartPolicy
  • 定义 Pod 的重启策略,默认为 Always
  • 可选值:
    • Always:容器退出时总是重启。
    • OnFailure:容器失败时重启。
    • Never:容器退出时不重启。

Deployment__123">Deployment 的生命周期

  1. 创建 Deployment

    • 用户通过 kubectl apply -f deployment.yaml 创建 Deployment
    • Kubernetes 根据 spec.template 创建 Pod。
  2. 更新 Deployment

    • 修改 Deployment 的配置(如镜像版本)并重新应用。
    • Kubernetes 根据更新策略(如滚动更新)逐步替换旧 Pod。
  3. 回滚 Deployment

    • 如果更新失败,可以通过 kubectl rollout undo deployment/<deployment-name> 回滚到之前的版本。
  4. 扩缩容

    • 修改 replicas 字段并重新应用,Kubernetes 会自动调整 Pod 的数量。
  5. 删除 Deployment

    • 通过 kubectl delete deployment/<deployment-name> 删除 Deployment,同时会删除其管理的所有 Pod。

Deployment__143">Deployment 的常用操作

Deployment_144">1. 创建 Deployment
kubectl apply -f deployment.yaml
Deployment__149">2. 查看 Deployment 状态
kubectl get deployments
3. 查看 Pod 状态
kubectl get pods -l app=myapp
Deployment_159">4. 更新 Deployment(修改镜像版本)
kubectl set image deployment/myapp-deployment myapp-container=myapp:2.0
Deployment_164">5. 回滚 Deployment
kubectl rollout undo deployment/myapp-deployment
6. 查看更新历史
kubectl rollout history deployment/myapp-deployment
7. 扩缩容
kubectl scale deployment/myapp-deployment --replicas=5
Deployment_179">8. 删除 Deployment
kubectl delete deployment/myapp-deployment

Deployment__185">Deployment 的适用场景

  1. 无状态应用

    • 例如 Web 服务器、API 服务等。
    • 每个 Pod 是独立的,不依赖本地存储或状态。
  2. 滚动更新

    • 需要无缝更新应用版本,避免停机。
  3. 自动恢复

    • 当 Pod 失败时,Deployment 会自动创建新的 Pod 替换。
  4. 多副本负载均衡

    • 通过 Service 将流量负载均衡到多个 Pod。

总结

  • Deployment 是 Kubernetes 中用于管理无状态应用的核心资源。
  • 它支持副本管理、滚动更新、回滚和健康检查等功能。
  • 通过声明式配置,用户可以轻松定义和管理应用的期望状态。
  • 适用于需要高可用性、无缝更新和自动恢复的场景。

http://www.ppmy.cn/ops/160512.html

相关文章

ClickHouse分布式高可用实战:ReplicatedMergeTree引擎深度解析与代码实践

引言 在大数据场景下&#xff0c;数据的高可用性和容灾能力是核心需求。ClickHouse作为一款高性能的列式数据库&#xff0c;其 ReplicatedMergeTree 引擎完美解决了数据复制与分布式存储的难题。本文将通过代码实战原理解析&#xff0c;带你快速掌握这一核心引擎的使用技巧&am…

PDF文档中文本解析

常用的PDF文档解析解决方案有两种。 一是通过文档结构读取解析&#xff0c;另一种是通过ocr技术处理。 这里我们主要说一下文档读取解析的方案&#xff0c;现在常用的解析库有mupdf、pdfium、Aspose等第三方库来处理。其中mupdf、pdfium为开源、免费的。Aspose是一款收费的商业…

AI会取代人类?云电脑会取代传统PC吗?

随着DeepSeek的诞生及运用&#xff0c;AI相关内容再次引发社会的广泛关注和探讨。不仅不少人预测未来AI或将取代多数人类的工作&#xff0c;更可怕的是细细观察会发现目前AI其实已经取代了很多“蓝领”甚至“白领”的工作。不得不感叹AI真的太强、太全面了&#xff0c;果真是人…

该如何搭建高效的跨境网络专线?

在如今这个全球化的商业环境中&#xff0c;跨境网络专线成为了企业与个人实现高效、安全跨国通信的重要工具。大家好&#xff0c;在接下来的内容中&#xff0c;我将深入为您探讨跨境网络专线的概念、特点以及搭建流程&#xff0c;帮助您更好地理解和利用这一技术。 一、什么是…

jvm中各个参数的理解

MEMORY - MANAGERS 定义 MEMORY - MANAGERS即内存管理器&#xff0c;它是操作系统或软件系统中负责管理计算机内存资源的组件。从本质上来说&#xff0c;它是一种软件机制&#xff0c;旨在协调计算机系统中内存的分配、使用和回收等操作&#xff0c;确保系统能够高效、稳定地…

MinkowskiEngine安装(CUDA11.8+torch2.0.1+RTX4070TI)

1、背景 1&#xff09;因为项目要用这个库&#xff1a;MinkowskiEngine&#xff0c;Minkowski Engine — MinkowskiEngine 0.5.3 documentation 然后就用了之前安装好 MinkowskiEngine 的torch1.8.1,cuda11.1的环境。 2&#xff09;自己的代码出现cuda不支持torch用gpu进行矩…

Docker 性能优化指南

Docker 提供了强大的容器化功能&#xff0c;能够帮助开发者在不同的环境中构建、测试和部署应用。然而&#xff0c;随着容器化应用的不断增长&#xff0c;Docker 容器可能会面临一些性能瓶颈&#xff0c;影响其运行效率、资源占用和扩展能力。为了确保容器在生产环境中的高效运…

2024华为OD机试真题-单词接龙(C++)-E卷B卷-100分

2024华为OD机试最新题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述: 输入描述: 输出描述: 示例1 示例2 题目解析 考点 代码 c++ 题目描述: 单词接龙的规则是:可用于接龙的单词首字母必须要前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取…