Leong's blog Leong's blog
首页
  • 编程
  • 资源
  • Golang
  • 微服务
  • vue
  • 操作系统
  • 数据结构与算法
  • Linux
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Leong Y

跑起来吧
首页
  • 编程
  • 资源
  • Golang
  • 微服务
  • vue
  • 操作系统
  • 数据结构与算法
  • Linux
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • K8S核心组件
  • K8S核心概念
    • 1、Pod
    • 2、Node
    • 3、Namespace
    • 4、Deployment
    • 5、StatefulSet
    • 6、Service
    • 7、ConfigMap和Secret
    • 8、Volume
    • 9、Ingress
    • 10、探针(Probe)
  • K8S
leong
2024-07-08
目录

K8S核心概念

# 1、Pod

Pod是K8s中最小的部署单元,一个Pod可以包含一个或多个容器,这些容器共享网络和存储资源。通常,一个Pod会包含一个应用程序的一个实例。多个容器在一个Pod中运行时,它们共享相同的网络命名空间和存储卷,这使得它们可以通过localhost进行通信,并且更容易共享文件。

# 2、Node

Node是K8s集群中的一个工作节点,可以是虚拟机或物理机。每个Node上运行以下关键组件:

  • Kubelet:负责管理Pod的生命周期,确保容器按照期望状态运行。
  • Kube Proxy:负责维护网络规则,实现集群内的服务发现和负载均衡。
  • Container Runtime:如Docker或containerd,用于实际运行容器。

# 3、Namespace

Namespace是K8s中的一个虚拟集群,用于在一个物理集群内划分多个逻辑区域。它们通常用于不同的项目、团队或环境(如开发、测试、生产)。Namespace提供了资源隔离和访问控制的机制,确保不同团队或项目之间的资源不会互相干扰。

# 4、Deployment

Deployment是用于声明和管理Pod副本的K8s资源。它定义了Pod的期望状态,包括运行的副本数、更新策略等。Deployment通过ReplicaSet确保指定数量的Pod副本始终在集群中运行,并且支持滚动更新和回滚功能。

# 5、StatefulSet

StatefulSet是K8s中用于管理有状态应用的资源,特别适用于需要持久化存储和有序部署的场景。与Deployment不同,StatefulSet提供了以下特性:

  • 稳定的网络标识:每个Pod都有一个唯一且稳定的网络标识(hostname)。
  • 稳定的持久存储:每个Pod都有一个唯一且稳定的持久存储(PersistentVolume),不会因为Pod的删除和重建而丢失数据。
  • 有序部署和扩展:Pod按照顺序进行部署、扩展和删除操作。 StatefulSet常用于需要保持状态的分布式系统,如数据库、分布式文件系统等。

# 6、Service

Service是K8s中定义的一种资源,用于将一组Pod暴露为一个稳定的网络服务。Service提供了负载均衡和服务发现的功能,即使Pod实例发生变化,Service的访问地址也不会改变。常见的Service类型包括ClusterIP、NodePort和LoadBalancer。

# 7、ConfigMap和Secret

  • ConfigMap:用于在Pod中存储非机密配置数据。ConfigMap将配置信息与容器镜像分离,使得应用程序配置更加灵活和可管理。
  • Secret:用于存储敏感数据,如密码、OAuth令牌和SSH密钥。Secret对数据进行编码,并提供安全的存储和访问机制。

# 8、Volume

Volume是K8s中用于存储数据的抽象,可以挂载到Pod中的一个或多个容器上。Volume的生命周期与Pod相同,但具体的存储实现可以是持久化存储(如NFS、Ceph)或临时存储(如emptyDir)。

# 9、Ingress

Ingress是用于暴露HTTP和HTTPS路由到集群外部的资源。它定义了从集群外部到服务的路径规则,并支持SSL终止、虚拟主机等高级功能。Ingress Controller是实现这些规则的组件,常见的有nginx Ingress Controller、Traefik等。

# 10、探针(Probe)

探针是K8s用来检查容器运行状况的机制,主要有三种类型:

  • 存活探针(Liveness Probe):用于检测容器是否处于健康状态。如果探测失败,K8s会重新启动容器。常见的使用场景是检测死锁等情况。
  • 就绪探针(Readiness Probe):用于检测容器是否已经准备好接受流量。如果探测失败,容器将从Service的负载均衡器中移除。常见的使用场景是确保应用在启动时完全加载并准备好处理请求。
  • 启动探针(Startup Probe):用于检测应用程序是否已经启动完成。它只在容器启动时执行,如果探测成功,其他探针将开始执行。常见的使用场景是针对启动时间较长的应用。

探针可以通过以下方式进行配置:

  • HTTP GET:向指定的端点发送HTTP GET请求,并根据响应状态码判断探测结果。
  • TCP Socket:尝试打开与容器的TCP连接,如果连接成功,探测就认为成功。
  • 命令执行:在容器内执行指定命令,根据命令的退出状态判断探测结果。
上次更新: 2024/07/08, 18:19:51
K8S核心组件

← K8S核心组件

最近更新
01
vue3快速上手
07-31
02
程序从加载到运行的过程
07-08
03
进程、线程、协程
07-08
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Leong Y | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式