如何使用自定义镜像创建 Kubernetes 部署

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你了解 Kubernetes 部署的基础知识,包括如何部署和配置它们,以及如何管理和更新你的容器化应用程序的部署。在本教程结束时,你将对 Kubernetes 部署以及如何利用它们来管理应用程序的生命周期有扎实的理解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedDeploymentGroup(["Advanced Deployment"]) kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/run("Run") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/scale("Scale") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/create -.-> lab-417503{{"如何使用自定义镜像创建 Kubernetes 部署"}} kubernetes/run -.-> lab-417503{{"如何使用自定义镜像创建 Kubernetes 部署"}} kubernetes/apply -.-> lab-417503{{"如何使用自定义镜像创建 Kubernetes 部署"}} kubernetes/scale -.-> lab-417503{{"如何使用自定义镜像创建 Kubernetes 部署"}} kubernetes/describe -.-> lab-417503{{"如何使用自定义镜像创建 Kubernetes 部署"}} end

理解 Kubernetes 部署

Kubernetes 部署是 Kubernetes 生态系统中的一个基本概念,它提供了一种声明式的方式来管理容器化应用程序的生命周期。部署抽象了底层的 Pod 和 ReplicaSet,简化了应用程序的扩展、更新和回滚过程。

部署基础

Kubernetes 部署是一种更高级别的抽象,用于管理 ReplicaSet 的创建和管理,而 ReplicaSet 又负责管理 Pod 的生命周期。部署提供了一种声明式的方式来定义应用程序的期望状态,Kubernetes 会努力确保实际状态与期望状态匹配。

graph TD A[部署] --> B[副本集] B[副本集] --> C[Pod] C[Pod] --> D[容器]

Kubernetes 部署的关键组件包括:

组件 描述
部署 定义应用程序的期望状态
副本集 确保运行所需数量的副本
Pod 部署的基本单元,包含一个或多个容器

部署架构

Kubernetes 部署利用底层的 Kubernetes 架构来提供一个强大且可扩展的应用程序管理解决方案。当你创建一个部署时,Kubernetes 会自动创建一个副本集来管理所需数量的 Pod。当你更新应用程序时,Kubernetes 会使用更新后的配置创建一个新的副本集,并逐渐将流量迁移到新的 Pod,确保顺利推出。

graph TD A[部署] --> B[副本集 1] B[副本集 1] --> C[Pod 1] B[副本集 1] --> C[Pod 2] A[部署] --> D[副本集 2] D[副本集 2] --> E[Pod 3] D[副本集 2] --> E[Pod 4]

部署生命周期管理

Kubernetes 部署提供了一组丰富的功能来管理应用程序的生命周期,包括扩展、更新和回滚。你可以通过修改部署配置中的 replicas 字段轻松扩展应用程序。当你更新应用程序时,Kubernetes 会使用更新后的配置创建一个新的副本集,并逐渐将流量迁移到新的 Pod,确保顺利推出。如有必要,你还可以回滚到应用程序的先前版本。

## 扩展部署
kubectl scale deployment my-app --replicas=5

## 更新部署
kubectl set image deployment/my-app my-app=my-app:v2

## 回滚部署
kubectl rollout undo deployment/my-app

通过了解 Kubernetes 部署的基础知识,包括其架构和生命周期管理功能,你可以有效地管理容器化应用程序的部署和演进。

部署和配置 Kubernetes 部署

部署和配置 Kubernetes 部署是一个简单直接的过程,它能让你管理容器化应用程序的生命周期。在本节中,我们将探讨创建部署、使用自定义设置进行配置以及根据应用需求进行扩展的步骤。

创建部署

要创建 Kubernetes 部署,你可以使用 kubectl create deployment 命令,或者以 YAML 格式定义部署清单。以下是一个部署清单的示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:v1
          ports:
            - containerPort: 8080

此部署将创建 my-app 容器的三个副本,每个副本都暴露端口 8080。

配置部署

Kubernetes 部署提供了广泛的配置选项来定制应用程序的行为。你可以指定各种设置,例如环境变量、资源请求和限制、存活和就绪探针等等。以下是一个更复杂的部署配置示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:v2
          ports:
            - containerPort: 8080
          env:
            - name: DATABASE_URL
              value: postgres://user:password@db/myapp
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            periodSeconds: 10
            failureThreshold: 3

此配置为 my-app 容器设置了环境变量、资源请求和限制以及存活探针。

扩展部署

Kubernetes 部署的主要优势之一是能够轻松地向上或向下扩展应用程序。你可以通过修改部署清单中的 replicas 字段或使用 kubectl scale 命令来扩展部署:

## 将部署扩展到 5 个副本
kubectl scale deployment my-app --replicas=5

Kubernetes 将自动创建或删除 Pod 以匹配所需的副本数量,确保你的应用程序能够处理增加或减少的负载。

通过了解如何创建、配置和扩展 Kubernetes 部署,你可以有效地管理容器化应用程序的部署和扩展。

管理和更新 Kubernetes 部署

Kubernetes 部署提供了一组强大的功能来管理容器化应用程序的生命周期,包括更新和回滚部署。在本节中,我们将探讨如何更新部署、管理推出过程以及在必要时执行回滚。

更新部署

更新 Kubernetes 部署是一个简单直接的过程。你可以修改部署清单来更改容器镜像、环境变量或任何其他配置设置。当你应用更新后的清单时,Kubernetes 将使用新配置创建一个新的副本集,并逐渐将流量迁移到新的 Pod,确保顺利推出。

## 更新容器镜像
kubectl set image deployment/my-app my-app=my-app:v2

## 应用更新后的部署清单
kubectl apply -f deployment.yaml

管理推出

Kubernetes 部署提供了一个内置的推出管理系统,允许你监控更新的进度,并在必要时暂停或回滚部署。你可以使用 kubectl rollout 命令与推出过程进行交互。

## 检查推出状态
kubectl rollout status deployment/my-app

## 暂停推出
kubectl rollout pause deployment/my-app

## 恢复推出
kubectl rollout resume deployment/my-app

回滚部署

如果对部署的更新引入了问题,你可以轻松地回滚到应用程序的先前版本。Kubernetes 会维护所有部署修订的历史记录,允许你回滚到特定的修订版本。

## 列出部署修订版本
kubectl rollout history deployment/my-app

## 回滚到先前的修订版本
kubectl rollout undo deployment/my-app --to-revision=2

部署最佳实践

在管理 Kubernetes 部署时,遵循最佳实践以确保应用程序的可靠性和可维护性非常重要。一些关键的最佳实践包括:

  • 对你的容器镜像使用语义化版本控制
  • 实施存活和就绪探针以确保 Pod 的健康状态
  • 配置资源请求和限制以防止资源匮乏
  • 利用蓝绿部署或金丝雀部署等部署策略进行更安全的更新
  • 实施自动化测试和持续部署管道

通过了解如何管理和更新 Kubernetes 部署,你可以有效地管理容器化应用程序的生命周期,并确保它们始终在健康且最新的状态下运行。

总结

Kubernetes 部署是管理容器化应用程序生命周期的强大工具。在本教程中,你了解了 Kubernetes 部署的关键组件,包括部署、副本集和 Pod。你还探索了部署架构以及 Kubernetes 如何管理应用程序的生命周期,包括扩展、更新和回滚。有了这些知识,你现在可以自信地创建和管理 Kubernetes 部署,以确保容器化应用程序的可靠性和可扩展性。