乔克视界 乔克视界
首页
  • 运维
  • 开发
  • 监控
  • 安全
  • 随笔
  • Docker
  • Golang
  • Python
  • AIOps
  • DevOps
  • Kubernetes
  • Prometheus
  • 心情杂货
  • 读书笔记
  • 面试
  • 实用技巧
  • 博客搭建
友链
关于
收藏
  • 分类
  • 标签
  • 归档

乔克

云原生爱好者
首页
  • 运维
  • 开发
  • 监控
  • 安全
  • 随笔
  • Docker
  • Golang
  • Python
  • AIOps
  • DevOps
  • Kubernetes
  • Prometheus
  • 心情杂货
  • 读书笔记
  • 面试
  • 实用技巧
  • 博客搭建
友链
关于
收藏
  • 分类
  • 标签
  • 归档
  • Docker

  • Golang

  • AIOps

  • Python

  • DevOps

  • Kubernetes

    • 什么是云原生?
    • Docker容器技术
    • Kubernetes简介
    • Kubernetes核心对象
      • Node
      • Namespace
      • Pod
      • Service
      • 总结
    • Kubernetes集群管理
    • Kubernetes权限管理
    • Kubernetes工作负载管理
    • Kubernetes调度管理
    • Kubernetes应用质量管理
    • Kubernetes数据持久化管理
    • Kubernetes应用访问管理
    • Kubernetes应用配置管理
    • Kubernetes有状态应用管理
    • Kubernetes网络管理
  • Prometheus

  • 专栏
  • Kubernetes
乔克
2025-07-19
目录

Kubernetes核心对象

在《Kubernetes 简介》中,我们了解到了 Kubernetes 是由哪些组件组成的,但是,我们现在只观察到了“形”,并没有领会其“神”,本章节就带大家来了解一下 Kubernetes 的核心对象有那些。

Kubernetes 的所有管理能力构建在对象抽象的基础上,它的核心对象有:

  • Node:计算节点的抽象,用来描述计算节点的资源抽象、健康状态等
  • Namespace:资源隔离的基本单位,只是逻辑上的隔离
  • Pod:用来描述应用实例,包括镜像地址、资源需求等,是 Kubernetes 最核心的对象
  • Service:为 Pod 提供集群内部访问入口,可以负载多个 Pod

# Node

Node 是 Pod 真正运行的主机,可以是物理机、也可以是虚拟机。

在每个 Node 节点上,必须安装 kubelet、kube-proxy 以及容器运行时,容器运行时可以选择 Docker、Containerd、Rkt 等,在新版本的 Kubernetes 中,docker-shim 从 Kubernetes 中移除了,如果要使用 Docker,就需要自己安装 docker-shim,所以如果是新版本的 Kubernetes,建议使用 Containerd,而不是 Docker。

# Namespace

Namespace 是对一组资源和对象的抽象集合。

常见的 pods,services,deployments 等都属于某一个 Namespace,我们可以通过kubectl get ns来查看集群有多少 Namespace,如下:

## kubectl get ns
NAME                 STATUS   AGE
default              Active   610d
kube-node-lease      Active   610d
kube-public          Active   610d
kube-system          Active   610d
1
2
3
4
5
6

# Pod

Pod 是一组紧密关联的容器组合,他们共享 PID,IPC,NETWORK,UTS namespace,一个 Pod 里可以运行多个容器,一个 Pod 里的多个容器共享网络和文件系统,它们可以直接通过 localhost 口进行通信。

05349526f359ddade9343697cc7c11ab MD5

Pod 是一个逻辑上的概念,在宿主机上并不存在一个 Pod 边界或者隔离环境,真正处理的是操作系统的 namespace 和 cgroups。

如上图,Pod 中的所有容器共享一个 Network namespace,并且可以声明共享同一个 volume,但是为了避免业务容器之间的强依赖,Kubernetes 引入了 Infra Container,它一定是 Pod 中最先启动的容器,其他的容器通过 Joine Network namespace 和 Infra Container 建立关联。

所以对于一个 Pod 中的多个容器来说:

  • 它们可以直接通过 localhost 进行通信
  • 它们看到的网络设备跟 Infra Container 完全一样
  • 一个 Pod,不管有多少容器,它的 IP 地址只有一个
  • Pod 的生命周期跟 Infra Container 保持一致,跟其他业务容器无关

一个 Pod 代表着某个应用程序的特定实例,如果我们需要去扩展这个应用程序,那么就意味着需要为该应用程序同时创建多个 Pod 实例,每个实例都代表着应用程序的一个运行副本。而这些副本化的 Pod 对象的创建和管理,都是由一组称为 Controller 的对象实现,比如 Deployment 控制器对象。

当创建 Pod 时,我们还可以使用 Pod Preset 对象为 Pod 注入特定的信息,比如 Configmap、Secret、存储卷、卷挂载、环境变量等。有了 Pod Preset 对象,Pod 模板的创建就不需要为每个模板显示提供所有信息。

基于预定的期望状态和各个节点的资源可用性,Master 会把 Pod 对象调度至选定的工作节点上运行,工作节点从指向的镜像仓库进行下载镜像,并在本地的容器运行时环境中启动容器。Master 会将整个集群的状态保存在 etcd 中,并通过 API Server 共享给集群的各个组件和客户端。

# Service

Pod 是灵活的,Pod 的 IP 是动态的,也就是说 Pod 的每次创建其 IP 地址是变化的。为了为应用提供稳定的访问入口,Kubernetes 引入了 Service 的概念。

Service 是应用服务的抽象,通过 Labels 为应用提供负载均衡和服务发现。匹配 Labels 的 Pod 和端口会加入到对应的 Endpoints 中,由 kube-proxy 负责将 Service IP 负载到这些 Endpoints 上。

每个 Service 会自动分配一个虚拟的 Cluster IP 和 DNS 名,只要这个 Service 不删除,其 IP 地址不会改变,其他服务可以通过 IP 地址和 DNS 来访问服务,不需要了解后端容器的 IP 是什么。

0b3c711e16af8b7489d6924fd855ca4b MD5

Service 的类型有四种,Cluster IP,LoadBalance,NodePort,ExternalName。其中 Cluster IP 是默认的类型。

(1)、Cluster IP:通过 集群内部 IP 暴露服务,默认是这个类型,选择该值,这个 Service 服务只能通过集群内部访问;

(2)、LoadBalance:使用云提供商的负载均衡器,可以向外部暴露服务,选择该值,外部的负载均衡器可以路由到 NodePort 服务和 Cluster IP 服务;

(3)、NodePort:如果选择该值,这个 Service 可以通过 NodeIP:NodePort 访问这个 Service 服务,NodePort 会路由到 Cluster IP 服务,这个 Cluster IP 会通过请求自动创建;

(4)、ExternalName:通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容,没有任何类型代理被创建,可以用于访问集群内其他没有 Labels 的 Pod,也可以访问其他 NameSpace 里的 Service。

# 总结

通过本章,我们了解到 Kubernetes 有哪些核心对象,它们分别代表什么意思,比如什么 Node,什么是 Pod。当然,在这章只是做了简单的介绍,具体的操作实践会在后面详细述说。

上次更新: 2025/07/19, 21:23:02
Kubernetes简介
Kubernetes集群管理

← Kubernetes简介 Kubernetes集群管理→

最近更新
01
在 Kubernetes 中使用 Skywalking 进行链路监控
07-20
02
链路监控 Skywalking
07-20
03
Kubernetes 性能指标
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 乔克 | MIT License | 渝ICP备20002153号 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式