原理、和k8s结合点(etcd与k8s的交集)、维护

基础概念:

物理组件、逻辑组件、网络组件、工作负载

1、物理组件:

Master(Control plane)

  • kube-apiserver:提供唯一api接口、提供集群管理接口(用户认证授权、数据校验)、操作etcd,k8s1.0时,没有apiserver,所有组件直连etcd
  • kube-controller-manager:所有资源对象的自动化控制中心,确保集群始终处于预期的工作状态
  • kube-scheduler:pod调度服务、根据调度策略为pod分配节点
  • etcd:保存所有的资源对象
  • dns:主要负责服务发现,服务地址与服务名称的转换,kube-dns(coredns)

Node

  • pod
  • 静态文件
  • 动态资源
  • 探针
  • kubelet:控制面驻节点办公室,pod管理、健康检查、资源监控
  • kube-proxy:控制面驻节点办公室,运行在节点上的网络代理,主要负责service的通信和负载均衡,通过userspace(已停用)、iptables、ipvs实现

二、逻辑组件

1、namespace

  • 资源和对象的抽象组合
  • 划分不同工作空间的逻辑单位
  • 隔离项目
  • 隔离环境
  • 隔离用户

2、Label/Selector

定位机制,label是key/value格式的标签,允许重复;selector通过等式、集合、逻辑运算

3、Annotation

注解,保存附加信息,供第三方工具提取使用

4、configmap/secret

保存配置信息,configmap存储非安全配置,secret保存敏感信息

5、volume

数据持久性、数据共享

6、PV/PVC

k8s为了实现存储和计算分离,而抽象出来的编排机制

 存储抽象和分配机制

pv是有管理员进行创建和配置,针对共享存储的一种抽象

pvc是用户针对存储需要的声明

k8s的三种编排:服务编排、流量编排、存储编排

三、网络组件

clusterIp:kube-proxy创建的网络访问规则

pod运行在一个扁平的网络空间中,pod间可以相互访问,跨节点访问或者节点内访问。

pod没有重建的概念,只有创建、销毁,每次销毁创建后pod的ip就会重新生成,ip属于pod的一部分,pod销毁后,ip也随之销毁,ip无法复用。

客户端请求pod时,如果pod的ip变化了,就无法访问了,为了让客户端不需要感知后端pod的ip变化,就产生了clusterip,为pod生成一个虚ip,就相当于一个lb,客户端访问clusterip就可以访问到pod上,不需要关心pod的ip。

clusterip和service的生命周期绑定在一起,service通过selector找到label对应的pod,clusterip通过iptables或ipvs规则,就能将请求均匀的分发到pod上,这个规则是由kube-proxy负责创建和维护。

四、工作负载

控制器:

1、ReplicaSet:用于创建和管理无状态的pod

ReplicaController是最早的工具后来被停用,仅支持对等的pod管理,不支持集合pod的管理,不支持复杂运维

停用RC的原因是,在管理无状态应用时,使用Deployment去管rs,rs再去管理pod,实现无状态的应用变更

2、Deployment:以Rs为基础提供进度感知,引入deployment主要是用于pod编排

3、DaemonSet:提供节点级永久性运行,在k8s每一个节点里面,把守护进程封装成容器,

应用场景主要用于工具,业务场景使用不多,节点监控、采集节点日志、节点网络插件

4、StatefulSet:有状态应用,每个pod有确定的启动顺序

容器化应用中,最困难的就是涉及有状态的应用的管理

 5、Job/cronjob

job运行一次就结束的任务,适合执行一次的任务

cronjob在job上加上了时间调度

6、Service

应用服务的抽象、通过label定位、负责负载和服务发现、

NodeIp:node节点的ip

podip:pod的ip地址

clusterIp:service的ip地址

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐