如何创建 Kubernetes Pod 和服务

KubernetesKubernetesBeginner
立即练习

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

简介

本全面的Kubernetes教程为开发者和DevOps专业人员提供了一份实用指南,帮助他们理解和实施容器编排。通过探索核心概念、部署策略和配置管理,学习者将获得使用Kubernetes管理复杂分布式系统的实践技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("Edit") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/config("Config") subgraph Lab Skills kubernetes/create -.-> lab-393181{{"如何创建 Kubernetes Pod 和服务"}} kubernetes/delete -.-> lab-393181{{"如何创建 Kubernetes Pod 和服务"}} kubernetes/edit -.-> lab-393181{{"如何创建 Kubernetes Pod 和服务"}} kubernetes/apply -.-> lab-393181{{"如何创建 Kubernetes Pod 和服务"}} kubernetes/config -.-> lab-393181{{"如何创建 Kubernetes Pod 和服务"}} end

Kubernetes 基础

Kubernetes 简介

Kubernetes 是一个强大的容器编排平台,旨在自动化容器化应用程序的部署、扩展和管理。作为一种云原生解决方案,Kubernetes 为跨多个环境管理复杂的分布式系统提供了强大的基础设施。

核心概念与架构

Kubernetes 通过基于集群的架构运行,包含以下关键组件:

graph TD A[主节点] --> B[API 服务器] A --> C[控制器管理器] A --> D[调度器] A --> E[etcd] F[工作节点] --> G[Kubelet] F --> H[容器运行时]
组件 功能
主节点 管理集群操作
工作节点 运行容器化应用程序
Pod 最小的可部署单元
服务 Pod 的网络抽象

基本部署示例

以下是一个适用于 Ubuntu 22.04 的简单 Kubernetes Pod 配置:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80

要部署此 Pod,请使用以下命令:

kubectl apply -f nginx-pod.yaml

容器管理工作流程

Kubernetes 通过以下方式简化容器管理:

  • 自动扩展
  • 自我修复机制
  • 滚动更新
  • 服务发现
  • 负载均衡

云原生开发的关键特性

Kubernetes 使开发者能够:

  • 抽象基础设施复杂性
  • 确保一致的应用程序部署
  • 管理微服务架构
  • 优化资源利用率

配置管理

理解 Kubernetes 配置

Kubernetes 中的配置管理涉及通过声明式 YAML 文件来定义和管理应用程序部署、服务及资源。这些配置能够对容器环境和应用程序规范进行精确控制。

配置类型

graph TD A[Kubernetes 配置] --> B[部署] A --> C[服务] A --> D[配置映射] A --> E[密钥]
配置类型 用途
部署 定义应用程序副本集
服务 管理网络访问
配置映射 存储非敏感配置数据
密钥 管理敏感信息

部署配置示例

适用于 Ubuntu 22.04 的示例部署配置:

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

配置映射配置

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-configuration
data:
  DATABASE_HOST: database.example.com
  LOG_LEVEL: info

密钥管理

apiVersion: v1
kind: Secret
metadata:
  name: database-credentials
type: Opaque
stringData:
  username: admin
  password: secure-password

应用配置

使用 kubectl 部署配置:

kubectl apply -f deployment.yaml
kubectl apply -f configmap.yaml
kubectl apply -f secret.yaml

配置管理策略

Kubernetes 支持:

  • 声明式配置管理
  • 版本控制的资源定义
  • 动态配置更新
  • 回滚和版本跟踪

高级部署

高级部署策略

Kubernetes 提供了复杂的部署技术,可实现跨分布式环境的复杂应用程序管理和扩展。

部署技术

graph TD A[高级部署] --> B[滚动更新] A --> C[蓝绿部署] A --> D[金丝雀部署] A --> E[有状态集]
部署策略 描述
滚动更新 逐步替换应用程序实例
蓝绿部署 零停机时间部署,具有并行环境
金丝雀部署 增量流量转移
有状态集 为有状态应用程序提供稳定的网络标识

滚动更新配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-application
spec:
  replicas: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  template:
    spec:
      containers:
        - name: application
          image: myapp:v2

服务发现配置

apiVersion: v1
kind: Service
metadata:
  name: microservice-discovery
spec:
  selector:
    app: microservice
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

水平 Pod 自动缩放器

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: web-scaler
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-application
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 70

缩放命令

kubectl scale deployment web-application --replicas=10
kubectl autoscale deployment web-application --min=2 --max=10 --cpu-percent=70

高级部署功能

Kubernetes 支持:

  • 动态缩放
  • 智能流量路由
  • 自动回滚机制
  • 复杂的多环境部署

总结

Kubernetes 提供了一个强大的平台,用于自动化容器部署、扩展和管理。通过掌握其架构、配置技术和部署工作流程,开发者可以创建健壮、可扩展的云原生应用程序,这些应用程序能够高效利用基础设施资源并简化复杂的系统管理。