跳转到内容

Kubernetes简介

来自代码酷

Kubernetes简介[编辑 | 编辑源代码]

Kubernetes(通常缩写为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它由Google开发并于2014年开源,现由云原生计算基金会(CNCF)维护。Kubernetes 提供了一种高效的方式来管理分布式系统,确保应用程序的高可用性、可扩展性和可维护性。

核心概念[编辑 | 编辑源代码]

Kubernetes 的核心围绕以下几个关键概念构建:

1. 集群(Cluster)[编辑 | 编辑源代码]

Kubernetes 集群由一组节点(Node)组成,分为两类:

  • 控制平面(Control Plane):负责管理集群状态,包括调度、监控和协调。
  • 工作节点(Worker Node):运行容器化应用程序的机器。

graph TD A[Control Plane] -->|Manages| B[Worker Node 1] A -->|Manages| C[Worker Node 2] B -->|Runs| D[Pod] C -->|Runs| E[Pod]

2. Pod[编辑 | 编辑源代码]

Pod 是 Kubernetes 的最小部署单元,包含一个或多个共享资源的容器(如网络和存储)。Pod 是短暂的,可以被动态创建或销毁。

3. 服务(Service)[编辑 | 编辑源代码]

Service 定义了一组 Pod 的逻辑集合和访问策略,提供稳定的 IP 地址和 DNS 名称,确保应用程序的可发现性。

4. 部署(Deployment)[编辑 | 编辑源代码]

Deployment 管理 Pod 的声明式更新,支持滚动更新和回滚。

为什么使用 Kubernetes?[编辑 | 编辑源代码]

Kubernetes 解决了以下问题:

  • 自动化运维:自动调度、扩展和修复容器。
  • 跨环境一致性:本地开发、测试和生产环境保持一致。
  • 资源优化:高效利用计算资源。

示例:运行一个简单的应用[编辑 | 编辑源代码]

以下是一个简单的 Nginx 部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

解释:

  • 创建一个名为 `nginx-deployment` 的 Deployment。
  • 运行 3 个副本(`replicas: 3`)。
  • 使用 `nginx:latest` 镜像,暴露 80 端口。

应用配置:

kubectl apply -f nginx-deployment.yaml

检查状态:

kubectl get pods

输出示例:

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-756d9fd5f9-2j4qg   1/1     Running   0          10s
nginx-deployment-756d9fd5f9-5j7vk   1/1     Running   0          10s
nginx-deployment-756d9fd5f9-9k8th   1/1     Running   0          10s

实际应用场景[编辑 | 编辑源代码]

场景 1:Web 服务扩展[编辑 | 编辑源代码]

一个电商网站在促销期间流量激增,使用 Kubernetes 的 Horizontal Pod Autoscaler(HPA)自动扩展 Pod 数量以应对负载。

场景 2:多环境部署[编辑 | 编辑源代码]

开发团队使用相同的 Kubernetes 配置在开发、预发布和生产环境部署应用,确保一致性。

数学基础(可选)[编辑 | 编辑源代码]

Kubernetes 调度器使用优先级函数计算节点得分,例如: score=i=1nwi×fi(resource) 其中:

  • wi 是权重因子。
  • fi 是资源(如 CPU、内存)的函数。

总结[编辑 | 编辑源代码]

Kubernetes 是一个强大的容器编排工具,适用于从简单应用到复杂分布式系统的管理。通过其声明式配置和自动化能力,开发者可以专注于应用逻辑而非基础设施细节。