Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例)
本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署
内网ip 角色 安装软件 主机名192.168.0.10 master01 etcd,kube-apiserver,kube-controller-manager,kube-scheduler 8bettest518
192.168.0.12 master02 etcd,kube-apiserver,kube-controller-manager,kube-scheduler 8bettest519
192.168.0.7 node01 docker,kubelet,kube-proxy,flannel 8bettest520
192.168.0.8 node02 docker,kubelet,kube-proxy,flannel 8bettest521
192.168.0.4 slb master etcd,nginx 8bettest522
192.168.0.9 8bettest523
注意
flannel可以只安装node上,flannel只是跨机器宿主机和容器通讯使用
docker可以只安装node上,master上可以不安装
etcd 键值对的数据库,是独立三台机器。不要复用。
192.168.0.200是keepalived上的vip
自签SSL证书 k8s安装包下载https://github.com/kubernetes
部署网络说明 Kubernetes 网络架构图Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来。
VXLAN:将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。
Flannel:是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VXLAN、AWS VPC和GCE路由等数据转发方式。
Flannel网络架构图
数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
Flannel通过Etcd服务维护了一张节点间的路由表,在稍后的配置部分我们会介绍其中的内容。
源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,
然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。
Kubernetes基本工作流程客户端创建pod 流程:
首先管理员创建 Pod 的请求默认是通过kubectl 客户端管理命令 api server 组件进行交互的,默认会将请求发送给 API Server 集群统一入口。
API Server 会根据请求的类型选择用何种 REST API 对请求作出处理(比如:创建 Pod 时 Storage 类型是 Pods 时,其对应的就是 REST Storage API)。
REST Storage API 会对请求作相应的处理并将处理的结果存入高可用键值存储系统 Etcd 中。
同时Scheduler会检测到etcd集群的变化,Scheduler 会根据ETCD集群中运行 Pod情况 及 Node 信息进行判断,将需要创建的 Pod 分发到可用的 Node 节点上。然后根据一组相关规则将pod分配到可以运行它们的节点上,并更新etcd数据库,记录pod分配情况。
Node节点上Kubelet监控etcd数据库变化,管理创建pod,kubelet在Node节点上面开始创建新的pod,就会进行docker组件的启动,docker组件会启动对应的容器(pod),会在该节点上运行这个新pod。
kube-proxy运行在集群各个节点主机上,管理网络通信,如服务发现、负载均衡。例如当有数据发送到主机时,将其路由到正确的pod或容器。对于从主机上发出的数据,它可以基于请求地址发现远程服务器,并将数据正确路由,在某些情况下会使用轮训调度算法(Round-robin)将请求发送到集群中的多个实例。
集群功能各模块功能描述:
Master节点:
Master节点上面主要由四个模块组成,APIServer,schedule,controller-manager,etcd.