一、概述
kubernetes,简称k8s
二、知识图谱
2.1、基础介绍
发展:服务说明、资源管理器、k8s优势
k8s组件说明:Borg组件说明、k8s结构说明【网络结构、组件结构】
关键字以及含义
2.2、基础概念
Pod概念:自主式Pod、管理器管理的Pod【RS、RC、deployment、HPA、StatefullSet、DaemonSet、Job,CronJob】、服务发现、Pod协同
通讯模式:网络通讯模式、组件通讯模式
2.3、k8s安装
系统初始化
Kubeadm部署安装
常见问题分析
2.4、资源清单
k8s中资源概念:什么是资源、名称空间级别的资源、集群级别的资源
资源清单:yam语法格式
通过资源清单编写Pod
Pod生命周期:initC、Pod phase、容器探针【livenessProbe、readinessProbe】、Pod hook、重启策略
2.5、Pod控制器
类型:ReplicationController和RelicaSet、Deployment、DaemonSet、Job、CronJob、StatefulSet、Horizontal Pod Autoscalling
2.6、服务发现
Service原理:分类【ClusterIP、NodePort、ExternalName】、实现方式【userspace、iptables、ipvs】
Ingress:nginx【http代理访问、https代理访问、使用cookie实现会话关联、BasicAuth、Nginx进行重写】
2.7、存储
configMap【配置文件】:创建【使用目录创建、使用文件创建、使用字面值创建】、Pod中使用configMap【ConfigMap来替代环境变量、ConfigMap设置命令行参数、通过数据卷插件使用COnfigMap】、热更新【实现、更新触发】
Secret【需要加密的】:分类、Service Account、Opaque Secret【创建、Secret挂载到Volume、Secret导出到环境变量】、kubernetes.io/dockerconfigjson
volume:卷的类型、emptyDir【说明、用途、实战】、hostPath【说明、用途、实战】
PV:概念【PV、PVC、类型】、后端类型、访问模式、回收策略、状态、实战
2.8、调度器【把pod定义到想要的节点运行】
基础:概念、调度过程、自定义调度器
调度亲和性:亲和性运算符、nodeAffinity【[preferred/required]DuringSchedulingIgnoredDuringExecution】、podAntiAffinity【[preferred/required]DuringSchedulingIgnoredDuringExecution】
污点:概念、Taint【组成、设置、查看、去除】、Tolerations【设置】
固定节点调度:PodName指定调度、标签选择器调度
2.9、集群安全机制
机制说明
认证:http token、http base、https
鉴权:AlwaysDeny、AlwaysAllow、ABAC、Webhook、RBAC【Role and ClusterRole、RoleBinding and CluesterRoleBinding、Resources、to Subjects、创建一个系统用户管理k8s Dev名称空间】
准入控制
2.10、HELM
概念:组成构成、HELM部署、自定义
部署实例:部署dashboard、metrics-server【HPA演示、资源限制(Pod、名称空间)】、Prometheus、EFK
2.11、运维
Kubeadm源码修改:默认证书只有一年
k8s高可用构建
三、基础介绍
3.1、发展
IaaS[Infrastructure as a Service,阿里云]→PaaS[Platform as a Service ,新浪云]→SaaS[Software as a Service ,office 365]
docker 是 PaaS层面的,平台管理层,
3.2、资源管理器
→Apache mesos【分布式资源管理框架,Twitter 2019年放弃,转k8s】
→swarm【docker 推,轻量,功能少,实现架构好,2019年阿里云放弃使用,转k8s】
→k8s【Google,10年容器化基础架构borg,go语言翻写borg】
特点:轻量级【消耗资源小】、开源、弹性伸缩、负载均衡【IPVS】
3.3、组件介绍
3.3.1、borg架构介绍
集群,选举,奇数
3.3.2、k8s架构
1》核心组件
api server :所有服务访问统一入口
ControllerManager:维持副本期望数目
Scheduler:负责介绍任务,选择合适节点进行任务分配
Kubelet:直接跟容器引擎交互实现容器的生命周期管理
Kube-proxy:负责写入规则值IPtabbles、ipvs实现服务映射访问
etcd:存储k8s集群所有重要信息【持久化】
etcd:可信赖的分布式键值存储服务,能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。v2版本 内存存储,v3版本db,在v1.11中开始使用v3
2》其他插件
CoreDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
DashBoard:给k8s提供一个bs结构访问体系
Ingress controller:官方只能实现4层代理,他可以实现7层代理
Federation:提供一个可以跨集群中心多k8s统一管理功能
Prometheus:提供k8s集群的监控能力
ELK:提供k8s集群日志统一分析接入平台