Master

Apiserver

Controller Manager

RC

副本控制器,通过一条标签选择 pod

RS

副本控制器进化版,可以通过一组标签选择 pod

Deployment

管理副本控制器,可以声明式升级

deployment由replicaSet组成

DaemonSet

每一个Node上都调度一个pod

Statefulset

有状态部属pod

Job

启动一个批处理任务

CronJob

定时启动一个批处理任务

Etcd

Schedule

Node

kube Proxy

Kubelet

Docker

资源

Pod

一个pod中包含一个或多个容器
pod中的容器不能跨节点

pod和pod之间是在同一个共享网络(多个容器组构成)

pod之间容器与容器共享网络和存储

pod的生命周启pending、running、successed、failed、unknow

pod中的pause可以判断业务容器的状态

pod可以使用hostport配置蒋端口暴露到所在的节点服务器上

Service

server能创建一个虚拟集群IP作为多个pod个通讯,service不能直接被ping

service访问pod实际是访问endpoints,endpoints由podid+暴露端口组成

service使用clusterip时,访问pod默认轮询分配到pod上

service使用clusterip且配置会话保持时,访问pod是基于clientip来分配到同一个pod上

service使用headless时,访问service分配到的pod由程序自己决定

service使用nodeport时,所有节点都能通过端口访问,若有负载均衡配置时可使用loadbalancer参数

Ingress

label

Annotation

健康检查

livenessProbe

readlinessProbe

网络原理

Kubernetes网络模型

Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的、扁平的网络空间中。

Docker网络模型

Kubernetes网络实现

pod内容器之间通讯依赖同一个网络共享空间

pod和pod之间单节点通讯依赖docker网络
pod和pod之间多节点通讯依赖kube_proxy(pod和node之间的关联,前提:docker网桥地址不同、pod容器组地址不同)

Docker网络实现

doker默认使用网桥网络模式

docker服务端启动会建立一个虚拟网桥docker0得到指定的子网,每启动一个容器便会建立一个虚拟以太网veth,veth一端连接docker0另一端连接容器中的使用linux网络命名空间创建的eth0,eth0的IP由docker0地址段中分配

容器端口想要映射到服务上需使用NAT模式进行网路地址转换

为了实现多主机间docker通讯简单便有了CNM网络模型