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技术笔记 正文-组件(三)