Kumu's wiki
  • SUMMARY
  • Docker
    • 理论概述
    • 安装入门
    • 配置说明
    • 基础命令
    • 镜像构建
    • 镜像存储
      • OverlayFS 存储驱动
      • Habor 安装和升级标注
    • Compose
      • Compose 概览
      • Compose 安装
      • Compose 入门
      • Compose 环境变量
      • Compose 服务扩展
      • Compose 网络
      • Compose 生产实践
      • Compose 启动顺序控制
  • Kubernetes
    • 架构概览
    • 基础术语
    • 集群构建
    • 工作负载
      • Deployments
      • StatefulSets
      • Volumes
      • Persistent Volumes
    • 集群调度
      • 亲和性和反亲和性
      • 污点和容忍机制
    • 集群组件
      • Kubelet
    • 网络方案
      • 网络策略
      • Calico BGP 网络(v2.6.x)
      • Kubelet CNI 源码解析
    • client-go
      • client-go 背后机制
    • Helm
      • Helm 架构
      • Helm 快速上手
      • Helm 使用
      • Helm 命令
    • Google 大规模集群管理器 Borg
由 GitBook 提供支持
在本页
  • Namespaces
  • Pods
  • ReplicaSet (RS) and ReplicationController (RC)
  • Deployments
  • StatefulSets
  • DaemonSet
  • Jobs and CronJob
  • Services
  • Ingress
  • Configmap

这有帮助吗?

  1. Kubernetes

基础术语

Namespaces

同一个 Kubernetes 物理集群支持多个虚拟集群,而这个虚拟集群的概念就是 namespaces。这是官方的介绍,官方的介绍多少有点让人不那么容易理解。简单来说,namespaces 可以认为是一个环境或者项目组的概念,namespaces 下创建操作相应的服务。每个 namespaces 都是逻辑隔离的,针对指定 namespaces 可以做相应的资源(CPU、Memory 等)限制以及用户权限控制(RBAC)。namespaces 名字是全局唯一的。

针对同一软件的不同版本,官方是不建议启用多个 namespaces 的,而是推荐在同一个 namespaces 下使用 labels 去区分标识。不过,这还是得看情况,针对多环境不同版本测试来说,还是采用多个 namespaces 比较好,方便隔离。

Kubernetes 集群创建之后会看到三个初始化 namespaces:

  • default 默认 namespace

  • kube-system Kubernetes 系统 namespace

  • kube-public 用于集群中所有用户都可读的 namespace,是个惯例做法,但是非必须的

Pods

Pods 是 Kubernetes 中创建和管理的最小可部署计算单元,一个 pod 是由一个或者多个容器组成(如 Docker 容器),pod 中的容器共享存储、网络。

ReplicaSet (RS) and ReplicationController (RC)

单个部署 pod,如果 pod 因为一些因素异常退出了,pod 本身是不会自动恢复的。RS 和 RC 则担任管理 pod 状态的角色,RS 和 RC 的机制保证通过它们管理的 pod 保持固定的副本数并持续运行。如果 pod 因异常原退出了,那么 RS 或 RC 会请求创建新的 pod。

需要注意的是,ReplicationController 已经被 ReplicaSet 替代

Deployments

Deployments 提供了 pod 和 ReplicaSets 的更新声明。一般情况下不需要单独创建 ReplicaSet,而是直接通过创建 Deployments,由 Deployments 创建管理 ReplicaSet。此外,Deployments 还提供了滚动更新、回滚、暂停、恢复等功能。

StatefulSets

StatefulSets 同 Deployments/Replicas 类似,相较于 Deployments/ReplicaSets 对应无状态服务,StatefulSets 则针对有状态服务。StatefulSets 适用于以下特性的应用:

  • 稳定唯一的网络标识

  • 稳定持久性存储

  • 有序优雅的部署和扩展

  • 有序优雅的删除和销毁

  • 有序自动更新

DaemonSet

DeamonSet 确保所有或者部分节点运行同一个 Pod,当节点添加之后,Pod 会自动在所在节点创建,节点移除则 Pod 会被自动清理。删除 DaemonSet 将会清除它创建的所有 Pod,一般用于以下场景:

  • 在每个节点运行集群存储 daemon,如 glusterfs、ceph 等

  • 在每个节点运行日志收集 daemon,如 fluentd、filebeat 等

  • 在每个节点运行节点监控 daemon,如 Prometheus Node Exporter、sysdig agent 等

Jobs and CronJob

Jobs 用于一次性的部署任务,可以是一个或者多个 Pods。Pods 成功执行后,Jobs 本身也完成了。如运行单元测试、一次性的脚本运行等等都可以使用 Jobs 来做。CronJob 顾名思义,则是定时执行的一种 Job。

Services

因为 K8s 中 pod 的 ip 是不固定的,那么应用之间就不能单纯的简单靠 ip 来访问,另外有些应用拥有多个副本。因此,K8s 引入了 Services 的抽象,Services 简单可以理解为一个负载均衡器,每个 Services 都拥有一个名字和 vip,通过 Label 来对应一个或者一组 pods,集群内部的应用通过 Services name 直接访问对应的应用。

Ingress

Configmap

Configmap 提供键值对存储,一般用于静态配置文件或者环境变量配置等。

上一页架构概览下一页集群构建

最后更新于5年前

这有帮助吗?

图引用自

Services 用于内部集群应用间调用,Ingress 定义则为了集群内部服务暴露到外部访问。单纯创建 Ingress 还不够,需要结合 Ingress controller 才能真正实现服务的外部暴露。当前 Ingress controller 有 、 等。

CoreOS Overview of a Service
ingress-nginx
Traefik