Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作笔记

  • K8S

    • kubectl常用命令
    • Kubernetes核心概念详解:Namespace、Pod、Deployment、PV和PVC
      • Kubernetes之yaml文件详解
      • k8s部署MySQL
      • Kubernetes (k8s) 相关名词详解
      • PV、PVC、StorageClass的区别和联系
    • Systemd

    • Nginx

    • Supervisord

    • OpenLdap

    • OpenVPN

    • GitLab

    • Sshd

    • WebDev

    • Docker

    • Prometheus

    • Rclone

    • Iptables

    • Firewalld

    • Linux笔记
    • K8S
    Carry の Blog
    2023-06-27
    目录

    Kubernetes核心概念详解:Namespace、Pod、Deployment、PV和PVC原创

    # Kubernetes中的Namespace、Pod、Deployment、PV和PVC详解

    # Namespace

    Namespace(命名空间)用于在同一个Kubernetes集群中将资源进行逻辑上的隔离。它类似于Linux中的命名空间,可以在一个集群中创建多个命名空间,每个命名空间下可以有一组独立的资源。

    • 创建命名空间
      kubectl create namespace <namespace-name>
      
      1
    • 查看所有命名空间
      kubectl get namespaces
      
      1
    • 删除命名空间
      kubectl delete namespace <namespace-name>
      
      1

    命名空间通常用于不同环境(如开发、测试、生产)或不同项目之间的资源隔离。

    # Pod

    Pod是Kubernetes中最小的部署单元,包含一个或多个容器(通常是Docker容器)。Pod中的容器共享网络和存储,并且始终在同一个Node上调度和运行。

    • 创建Pod(YAML文件)
      apiVersion: v1
      kind: Pod
      metadata:
        name: my-pod
        namespace: default
      spec:
        containers:
        - name: my-container
          image: nginx
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      kubectl apply -f pod.yaml
      
      1
    • 查看所有Pod
      kubectl get pods
      
      1
    • 描述Pod
      kubectl describe pod <pod-name>
      
      1
    • 删除Pod
      kubectl delete pod <pod-name>
      
      1

    # Deployment

    Deployment是Kubernetes中用于管理Pod的声明式定义。它可以确保集群中始终有指定数量的Pod副本在运行,并且可以实现滚动更新和回滚。

    • 创建Deployment(YAML文件)
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: my-deployment
        namespace: default
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: my-app
        template:
          metadata:
            labels:
              app: my-app
          spec:
            containers:
            - name: my-container
              image: nginx
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      kubectl apply -f deployment.yaml
      
      1
    • 查看所有Deployments
      kubectl get deployments
      
      1
    • 描述Deployment
      kubectl describe deployment <deployment-name>
      
      1
    • 更新Deployment
      kubectl apply -f deployment.yaml
      
      1
    • 删除Deployment
      kubectl delete deployment <deployment-name>
      
      1

    # PV(Persistent Volume)

    Persistent Volume(持久卷)是Kubernetes集群中的一块存储,可以由管理员预先配置,也可以通过动态供应器自动创建。PV是一个集群资源,与Pod独立。

    • 创建PV(YAML文件)
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: my-pv
      spec:
        capacity:
          storage: 1Gi
        accessModes:
          - ReadWriteOnce
        hostPath:
          path: "/mnt/data"
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      kubectl apply -f pv.yaml
      
      1
    • 查看所有PVs
      kubectl get pv
      
      1
    • 描述PV
      kubectl describe pv <pv-name>
      
      1
    • 删除PV
      kubectl delete pv <pv-name>
      
      1

    # PVC(Persistent Volume Claim)

    Persistent Volume Claim(持久卷声明)是用户请求PV资源的方式。PVC可以请求特定大小和访问模式的存储,Kubernetes会找到满足要求的PV并将其绑定到PVC上。

    • 创建PVC(YAML文件)
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: my-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      kubectl apply -f pvc.yaml
      
      1
    • 查看所有PVCs
      kubectl get pvc
      
      1
    • 描述PVC
      kubectl describe pvc <pvc-name>
      
      1
    • 删除PVC
      kubectl delete pvc <pvc-name>
      
      1

    # 总结

    • Namespace:用于逻辑上隔离资源。
    • Pod:Kubernetes中最小的部署单元,包含一个或多个容器。
    • Deployment:用于管理Pod的声明式定义,支持滚动更新和回滚。
    • PV(Persistent Volume):集群中的存储资源,管理员预先配置或动态供应。
    • PVC(Persistent Volume Claim):用户请求PV资源的方式。
    #Kubernetes#容器化#集群管理
    上次更新: 4/24/2025

    ← kubectl常用命令 Kubernetes之yaml文件详解→

    最近更新
    01
    tidb fast ddl
    04-04
    02
    TiDB配置文件调优 原创
    04-03
    03
    如何移除TiDB中的表分区 原创
    04-03
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式