K8S基本概念

Pod / Pod 控制器

  • Pod

    • Pod 是K8S中能够被运行的最小逻辑单元
    • 1个Pod里可以运行多个容器, 它们共享UTS+NET+IPC名称空间
    • 一个Pod里运行多个容器, 可称为SideCar模式
  • Pod控制器

    • Pod控制器是Pod启动的一种模板, 用来保证在K8S里启动的Pod始终按照人们的预期运行(副本数, 生命周期, 健康状态检查...)

    • K8S 内提供了众多的Pod控制器, 常用的有:

      • Deployment

      • DaemonSet (每一个运算节点都起一份)

      • ReplicaSet (本身不提供对外服务, 真正暴露在外的是Deployment。Deployment -> ReplicaSet -> Pod)

      • StatefulSet (管理有状态应用的Pod控制器)

      • Job

      • Cronjob (管理周期任务)

Name / Namespace

  • Name

    • 由于K8S内部, 使用 “资源” 来定义每一种逻辑概念(功能), 所以每种 "资源", 都应该有自己的 "名称 "

    • "资源" 有API版本(apiVersion) 类别 (kind)、元数据(metadata) 、定义清单(spec list)、状态(status) 等配置信息

    • "名称" 通常定义在 ”资源“ 的 ”元数据“ 信息中

  • Namespace

    • 随着项目增多、人员增加、集群规模的扩大, 需要一种能够隔离K8S内各种 "资源" 的方法, 此即为名称空间

    • 可以理解为K8S内部的虚拟集群组

    • 不同的名称空间内的 “资源”, 名称可以相同; 相同名称空间内的同种 "资源", “名称” 不能相同

    • 合理的使用K8S的名称空间, 使得集群管理员能够更好地对交付到K8S里的服务进行分类管理和浏览

    • K8S里默认存在的名称空间有:

      • default
      • kube-system
      • kuben-public
      • 可以自建
    • 查询K8S 里特定 "资源" 要带上相应的名称空间

Label / Label 选择器

  • Label

    • 标签是K8S特色的管理方式, 便于分类管理资源对象

    • 一个标签可以对应多个资源, 一个资源也可以有多个标签, 它们是多对躲的关系

    • 一个资源拥有多个标签, 可以实现不同维度的管理

    • 标签的组成: key = value

    • 与标签类似的, 还有注解(annotations)

  • Label Selector

    • 给资源打上标签后, 可以使用标签选择器过滤指定的标签
    • 标签选择器目前有两个: 基于等值关系(等于、不等于) 和 基于集合关系(属于、不属于、存在)
    • 许多资源支持内嵌标签选择器字段
      • matchLabels
      • matchExpressions

Service / Ingress

  • Service

    • 每个Pod都会被分配一个单独的IP地址, 但这个IP地址会随着Pod的销毁而消失

    • Service (服务) 就是用来解决这个问题的核心概念

    • 一个Service可以看作一组提供相同服务的Pod对外访问接口

    • Service作用于哪些Pod是通过标签选择器来定义的

  • Ingress

    • Ingress 是K8S集群里工作在OSI网络参考模型下, 第7层的应用, 对外暴露的接口
    • Service只能进行L4流量调度, 表现形式是ip+port
    • Ingress则可以调度不同业务域、不同URL访问路径的业务流量
posted @ 2020-03-30 11:21  wellDoneGaben  阅读(318)  评论(0编辑  收藏  举报