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网络模型