Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

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

Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

自签SSL证书

Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

k8s安装包下载

https://github.com/kubernetes

部署网络说明 Kubernetes 网络架构图

Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来。

VXLAN:将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。

Flannel:是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VXLAN、AWS VPC和GCE路由等数据转发方式。

Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

Flannel网络架构图

Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

数据从源容器中发出后,经由所在主机的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)将请求发送到集群中的多个实例。

image-20200712135141894

集群功能各模块功能描述:

Master节点:

Master节点上面主要由四个模块组成,APIServer,schedule,controller-manager,etcd.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjyp.html