Kubernetes 学习(一)——Kubernetes 重要基础概念概述

Kubernetes(简称 K8s)是当前最流行的容器编排平台之一,用于自动化部署、扩展和管理容器化应用。理解其核心概念是掌握 Kubernetes 的基础。以下介绍 Kubernetes 的几个关键概念。

容器与 Pod

容器是轻量级的、可移植的运行环境,用于封装应用及其依赖。Kubernetes 不直接管理单个容器,而是通过 Pod 进行管理。Pod 是 Kubernetes 的最小调度单元,可以包含一个或多个容器,共享相同的网络命名空间和存储卷。

一个简单的 Pod 定义示例(YAML 格式):

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
Deployment

Deployment 用于管理 Pod 的声明式更新,确保 Pod 的副本数符合预期,并支持滚动更新和回滚。它通常用于无状态应用的部署。

定义 Deployment 的示例:

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

Pod 是动态创建的,其 IP 地址可能变化。Service 提供稳定的 IP 和 DNS 名称,用于访问一组 Pod。常见的 Service 类型包括 ClusterIP(内部访问)、NodePort(通过节点端口暴露)和 LoadBalancer(云厂商提供的负载均衡)。

定义 Service 的示例:

apiVersion: v1
kind: Service
 name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP
ConfigMap 与 Secret

ConfigMap 用于存储非敏感配置数据(如环境变量),而 Secret 用于存储敏感信息(如密码、密钥)。它们可以被 Pod 挂载或作为环境变量引用。

定义 ConfigMap 的示例:

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  database_url: "mysql://db-service:3306"
Namespace

Namespace 用于在同一个 Kubernetes 集群中划分逻辑隔离的环境(如开发、测试、生产)。它可以帮助管理资源配额和访问控制。

创建 Namespace 的示例:

apiVersion: v1
kind: Namespace
metadata:
  name: dev
总结

Kubernetes 的核心概念包括 Pod、Deployment、Service、ConfigMap、Secret 和 Namespace。理解这些概念是深入学习 Kubernetes 的基础。后续文章将进一步探讨更高级的功能,如 StatefulSet、Ingress 和 Helm 等。

更多推荐