一 Kubernetes学习前期准备
(一) Kubeadm方式一次安装即成功原则
1.安装及优化部分
-
1)基本环境配置及优化
-
2)安装Runtime
-
3)Kubeadm&Kubelet
-
4)高可用实现
2.集群建立部分
-
1)Master节点初始化
-
2)Node节点配置
-
3)CNI插件安装
3.Addons安装
-
1)Metrics Server
-
2)DashBoard
4.收尾工作
-
1)集群可用性验证
-
2)生产必备配置
(二) 二进制一次安装即成功原则
1.安装及优化部分
-
1)基本环境配置及优化
-
2)安装Runtime
-
3)K8S组件及Etcd安装
-
4)高可用实现
2.集群建立部分
-
1)生成集群证书
-
2)Master节点初始化
-
3)Node节点配置
-
4)CNI插件安装
3.Addons安装
-
1)Metrics Server
-
2)DashBoard
-
3)CoreDNS
4.收尾工作
-
1)集群可用性验证
-
2)生产必备配置
(三) 安装准备
1.集群网段划分
- 1)主机节点网段
192.168.1.0/24
- 2)Service网段
10.96.0.0/16
- 3)Pod网段
10.244.0.0/16
2.集群资源配置
- 1)Master节点
2C4G*3
- 2)Node节点
2C4G*3
3.生产环境K8S版本选择及安装注意事项
- 1)K8S版本选择
https://kubernetes.io/docs/home/
- 2)安装环境与工具
Workstation
SecureCRT
- 3)安装技巧
CentOS 7系统安装
虚拟机拍快照技巧
(四) K8S高可用架构解析
1.K8S基本架构及核心工作过程
![](https://img.haomeiwen.com/i20896689/3188bbced115ecdd.png)
Kubernetes的核心工作过程
・资源对象:Node、Pod、Service、Replication Controller 等都可以看作一种资源对象
・操作:通过使用 kubectl 工具,执行增删改查
・存储:对象的目标状态(预设状态),保存在 etcd 中持久化储存;
・自动控制:跟踪、对比 etcd 中存储的目标状态与资源的当前状态,对差异资源纠偏,自动控制集群状态。
Kubernetes 实际是高度自动化的资源控制系统,将其管理的一切抽象为资源对象,大到服务器 Node 节点,小到服务实例 Pod。
Kubernetes 的资源控制是一种声明+引擎的理念:
・声明:对某种资源,声明他的目标状态
・自动:Kubernetes 自动化资源控制系统,会一直努力将该资源对象维持在目标状态。
Master:管理节点,集群的控制和调度
・kube-apiserver
・kube-controller-manager
・kube-scheduler
・etcd
Maste管理节点:管理整个 Kubernetes集群,接收外部命令,维护集群状态。
kube-apiserver: Kubernetes API Server集群控制的入口;资源的增删改查,持久化存储到 etcd;kubectl 直接与 API Server 交互,默认端口 6443。
kube-scheduler: 负责将 pod 资源调度到合适的 node 上。调度算法:根据 node 节点的性能、负载、数据位置等,进行调度。默认监听 10251 端口。
etcd: 一个高可用的 key-value 存储系统。作用:存储资源的状态;默认监听 2379 和 2380 端口(2379提供服务,2380用于集群节点通信)
controller-manager: 所有资源的自动化控制中心;controller manager 管理这些控制器;controller manager 是自动化的循环控制器。
Kubernetes 的核心控制守护进程,默认监听10252端口。scheduler和controller-manager都是通过apiserver从etcd中获取各种资源的状态,进行相应的调度和控制操作。
Node:工作节点,执行具体的业务容器
・kubelet
・kube-proxy
Node 节点:Master 节点,将任务调度到 Node 节点,以 docker 方式运行;当 Node 节点宕机时,Master 会自动将 Node 上的任务调度到其他 Node 上。
kubelet: 本节点Pod的生命周期管理,定期向Master上报本节点及Pod的基本信息。kubelet是在每个Node节点上运行agent;负责维护和管理所有容器:从 apiserver 接收 Pod 的创建请求,启动和停止Pod。Kubelet不会管理不是由Kubernetes创建的容器定期向Master上报信息,如操作系统、Docker/ container版本、CPU、内存、pod 运行状态等信息。
kube-proxy:集群中 Service 的通信以及负载均衡。功能:服务发现、反向代理。
-
反向代理:支持TCP和UDP连接转发,默认基于Round Robin算法将客户端流量转发到与service对应的一组后端pod。
-
服务发现:使用 etcd 的 watch 机制,监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系。(本质是:路由关系)
-
实现方式:存在两种实现方式,userspace 和 iptables。
userspace:在用户空间,通过kuber-proxy实现负载均衡的代理服务,是最初的实现方案,较稳定、效率不高;
iptables:在内核空间,是纯采用iptables来实现LB,是Kubernetes目前默认的方式;
runtime
- 一般使用Docker/ container容器,也支持其他的容器。
2.K8S高可用架构
![](https://img.haomeiwen.com/i20896689/4570eae07d1e4a5a.png)