docker+k8s技术笔记 正文-四组基本概念(二)

Docker+k8s 技术笔记

正文

k8s 四组基本概念

  • pod/pod控制器
  • Name/Namespace
  • Label/label选择器
  • Service/Ingress

pod

  • Pod是k8s里能够被运行的最小逻辑单元 (原子单元)

  • 一个pod可以运行多个容器,他们共享UTS+NET+IPC名称空间,容器会实现6个维度的隔离

  • 可以把pod理解为豌豆荚,而同一pod里的每个容器是一颗颗豌豆

  • 一个pod运行多个容器 边车(sidecar)模式

  • 容器 containers 隔离
Namespace Constant 隔离内容 内核版本
IPC CLONE_NEWIPC 信号量,消息队列和共享内存 Linux 2.6.19
NET CLONE_NEWNET 网络资源 始于Linux 2.6.24 完成于 Linux 2.6.29
Mount CLONE_NEWNS 文件系统挂载点 Linux 2.4.19
PID CLONE_NEWPID 进程ID Linux 2.6.24
UTS CLONE_NEWUTS 主机名和域名 Linux 2.6.19
User CLONE_NEWUSER 用户ID和组ID 始于 Linux 2.6.23 完成于 Linux 3.8)

pod控制器

  • pod控制器是pod启动的一种模板,用来保证在k8s里启动的pod应始终按照人们的预期运行(副本数、生命周期、健康状态检查…)
  • k8s内提供了众多的pod控制器,常用的有以下几种:

​ Deployment #生成副本数

​ Daemonset #要求保证在每个节点上都起一个副本

​ …

Name

  • 名称 每一种功能都叫一种资源 每一种功能的实现都叫做资源的实例化。
  • 资源 api版本(apiServer) 类别(kind) 元数据(metadata) 定义清单(spec) 状态(status) 资源是一种逻辑功能的抽象。
  • 名称 通常定义在 资源 的 元数据 信息里

Namespace

  • 名称空间 做一定程度的隔离 只是将资源分组

  • k8s内部的虚拟集群组

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

  • 合理分配名称空间 使k8s里的服务 进行分类管理和浏览

  • k8s里存在默认的名称空间 default kube-system kube-public

Label

  • 标签是k8s特色的管理方式,便于分类管理资源对象
  • 标签与资源的关系 多对多
  • 标签的组成 key=value

Label选择器

  • 给资源打上标签,可以使用标签选择器过滤指定的标签
  • 基于等值关系(等于 不等于) 基于集合关系 (属于 不属于 存在)
  • 许多资源支持内嵌标签选择

Services

  • 在k8s里,每个pod都会被分配一个单独的ip地址,这个地址会随着pod的销毁而消失
  • Service 就是用来解决这问题的的核心概念
  • 一个services可以看作是一组提供相同服务的pod的对外访问接口
  • Service作用于哪些pod 是可以通过pod标签选择器来定义的

Ingress

  • ingress是k8s集群里工作在osi网络模型参考下第七层的应用,对外暴露的接口
  • Service只能进行L4流量调度,表现形式为 ip+port
  • ingress则可以调度不同业务域、不同URL访问路径的业务流量

http://abc.od.com/sh 通过ingress可以决定去寻找哪个location

先寻找services根据标签选择pod

ingress —>service—>pod

docker+k8s技术笔记 正文-组件(三)

Guess you like

Origin blog.csdn.net/weixin_52099680/article/details/120745760