admin管理员组

文章数量:1548487

K8s介绍

      • 资源抽象
      • 控制器抽象
      • 辅助概念
      • k8s的重要组件
        • master:负责集群的管理工作,调度,监控,操作资源等:
        • node:是实际工作的计算实例,需要预装一些必要软件来响应master管理。目前node至少包括容器docker,kubelet(与master节点通信),kube-proxy(网络相关功能)
        • 服务service:
          • PV:持久化卷
          • PVC:持久化卷声明
          • storageClass
        • CNI网络协议:

背景:目前容器化时代,然后docker的网桥 只能本机通信,想要跨主机通信就需要k8s,然而k8s也是强大管理容器的集群,所以综上所述必须整k8s

它是管理容器的集群!提供强大的应用管理和资源调度能力。将基础架构层面的计算,网络,存储运行在技术架构之上的应用和服务都进行抽象

结构图

资源抽象

容器组pod:k8s最小的资源单位,由同一节点上的若干容器组成,彼此共享网络空间和存储卷(Volume)
服务(service): 将pod关联,并对外提供功能,通过服务提供唯一固定访问地址,供外界使用。毕竟 pod随时会变,这样用户无须关心pod信息
存储卷(volume):和docker数据卷类似,提供数据持久化存储
命名空间namespace:k8s通过命名空间来实现虚拟化。
总而言之:k8s通过命名空间生成虚拟化,由服务提供入口,容器组是若个容器,存储卷持久化数据。
每个资源都是一个rest对象,通过api进行操作(跟es操作类似)

控制器抽象

控制器提供了自动管理pod功能,以特定场景去管理资源
副本集(replicaSet): 它让集群中始终维持pod的指定副本数的健康实例(不推荐使用)
部署(Deployment):管理pod或副本集 (推荐使用)
状态集(statefulset): 管理带状态的应用,为pod分配独一无二的身份
daemon集:确保节点上肯定运行某个pod,用来采集日志,监控节点或提供存储
任务job:适用于短期处理场景,任务创建若干pod,并确保最终能正常退出
横向pod扩展器(HPA): 类似自动扩展组,根据使用率(如CPU)自动调整部署pod的个数,保障可用性
入口控制器(Ingress Controller):定义外部访问集群中资源的一组规则,如负载均衡

辅助概念

标签(Label): 键值对,标记资源
选择器(selector):通过正则表达式筛选资源
注解(Annotation):存放任意数据,一般对资源进行详细说明
秘密数据(secret): 存放铭感数据,如用户认证的口令
名字(name):用户提供给资源的别名
持久化存储(PersistentVolumn): 确保数据不会丢失
资源限额(resource quotas):限制对资源的使用
安全上下文(security context) :容器的系统安全配置
服务账号(service account):操作系统的用户账号

个人梳理组件分工图

k8s的重要组件

kubectl: 是kubernates提供的客户端

master:负责集群的管理工作,调度,监控,操作资源等:

是集群的网关和中枢,调度工作负载并编排组件间通信
主要组件
etcd:作为数据库,存放集群状态,配置相关数据,记录所有节点状态
kube-apiserver: k8s系统的对外接口,通过restful进行调用
kube-scheduler:负责对资源进行调度,分配某个请求的pod到某个节点上
controller-manager:维护集群状态,包括故障检测,自动扩展,滚动更新
kube-ui: 自带一套用来查看集群状态的web页面
kube-dns:记录启动的容器组和服务地址
其他组件:包括容器资源使用监控,日志记录等

node:是实际工作的计算实例,需要预装一些必要软件来响应master管理。目前node至少包括容器docker,kubelet(与master节点通信),kube-proxy(网络相关功能)

接受master的工作指令并创建销毁pod,以及调整网络规则路由转发
主要组件
kubelet:汇报节点状态并实现容器组的生命周期管理,将pod运行在自己负责的节点上,如果kubelet出现故障,则k8s将node变成不可用,因此推荐对kubelet进行监控
kube-proxy:代理对抽象应用的地址访问,配置服务发现和负载均衡转发规则(利用iptables规则),支持tcp和udp
network plus:通信模块
node几个重要的属性:地址信息(address),状态(condition),资源容量(capa-city),节点信息(info)
地址信息:主机名,外部地址,内部地址
状态信息:磁盘不足,就绪,空余内存过低,空余磁盘过低,CPU,内存,最多存放pod个数等

服务service:

主要面向的对象是持续运行的,解决pod地址可变的问题,供外部访问
访问方式:
ClusterIP: 提供一个集群内部的地址,该地址只能在集群内解析和访问
NodePort: 在每个集群节点上映射一个本地端口,由外部直接访问
loadbalancer:使用外部的路由服务,自动访问到NodePort和clusterIP

上述是k8s大致组件的介绍,总结一切都环绕pod进行操作
下面讲剩下两个重要概念,数据卷和网络协议

数据卷指的是:存放数据的地方,底层是nfs文件共享组件
pv,pvc , sc , configmap

PV:持久化卷

让pod关联到PV做到数据持久化,它是共享存储的一种抽象概念,由管理员进行创建和配置。实现它的技术实现方式有很多,如NFS。

PVC:持久化卷声明

用户存储的一种声明,PVC和Pod类似,Pod消耗的事节点,PVC消耗的是PV资源。Pod可以请求cpu和内存,而PVC请求存储空间和访问模式。
用户直接使用PVC即可操作PV

storageClass

动态创建存储卷,定义存储类型,大小等。作用是充当PV的模板,只有同属一个storageClass的PV和PVC才可以绑定在一起。

用户以操作PVC的动作, 来动态操作storage的关联关系来生成PV

CNI网络协议:

是联通主机与主机间得通信,采用Calico网络插件实现

calico是一个三层虚拟网络解决方案,每个节点当作虚拟路由器(vRouter),每个pod当作节点路由器后的一个终端设备并分配一个IP。
各节点通过BGP协议生成路由规则,进行互通,而且pod间也能通

考虑到不是所有服务器都支持BGP,所以还支持基于IPIP和VXlan的Overlay网络模型,
默认使用的是IPIP

calico专有的资源类型有:IPPool(IP地址池),networkPolicy(网络策略),BGPConfiguration(BGP
配置参数)和FelixConfiguration(Felix配置参数)

calico整合k8s有两个重要组件 calico-node和 calico-kube-controllers两个组件

calico-node : 每个node节点的代理
calico-kube-controller: 自定义k8s控制器

calico原理
calico是一个纯三层的虚拟网络,它没有复用docker的docker0网桥,而是自己实现的, calico网络不对数据包进行额外封装,不需要NAT和端口映射,扩展性和性能都很好。Calico网络提供了DockerDNS服务, 容器之间可以通过hostname访问,Calico在每一个计算节点利用LinuxKernel实现了一个高效的vRouter(虚拟路由)来负责数据转发,它会为每个容器分配一个ip,每个节点都是路由,把不同host的容器连接起来,从而实现跨主机间容器通信。而每个vRouter通过BGP协议(边界网关协议)负责把自己节点的路由信息向整个Calico网络内传播——小规模部署可以直接互联,大规模下可通过指定的BGProute reflector来完成;Calico基于iptables还提供了丰富而灵活的网络策略,保证通过各个节点上的ACLs来提供多租户隔离、安全组以及其他可达性限制等功能。

网络模式
IPIP:默认模式,相当于一个基础IP层的网桥,node上会有一个tunl0的网卡设备,是ipip做隧道封装用的
BGP:边界网关协议(BorderGateway Protocol, BGP)是互联网上一个核心的去中心化的自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议

VXLAN通信:虚拟扩展局域网,VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发

采用wxlan模式
查看网络状态
[root@k8s-master-13 ~]# calicoctl node status
Calico process is running.

IPv4 BGP status
±-------------±------------------±------±---------±------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
±-------------±------------------±------±---------±------------+
| 192.168.1.14 | node-to-node mesh | up | 07:20:27 | Established |
| 192.168.1.15 | node-to-node mesh | up | 07:21:40 | Established |
| 192.168.1.16 | node-to-node mesh | up | 07:20:27 | Established |
| 192.168.1.21 | node-to-node mesh | up | 07:21:11 | Established |
±-------------±------------------±------±---------±------------+

本文标签: K8s