K8S的Ingress特性,组件介绍,基础概念
背景:无论是iptables还是ipvs方式代理service,其实都是工作在4层(TCP/UDP over IP)概念,4层的代理方案是无法对协议进行解析并处理的。所以,在K8S v1.1版本中,新增了 Ingress API,用来可以实现7层(应用层)代理方案
采用Ingress方案需要有应用层的软件提供支持,例如 nginx 的ingress方案:
Ingress-nginx github地址:https://github.com/kubernetes/ingress-nginx
Ingress-Nginx 官网地址:https://kubernetes.github.io/ingress-nginx
常规nginx反向代理方案:
Ingress-Nginx工作原理:
采用ingress-nginx的方案最终的效果:
使用 k8s配置的风格,实现在nginx 配置文件中配置代理规则 相同的效果;
同理还有 Ingress-HAproxy 方案,配置比起nginx稍微麻烦
K8S发展历程
谷歌内部Borg系统架构
K8S架构
其他插件
总结:
K8S发展历程:
MESOS APACHE 分布式资源管理框架 2019-5 Twitter 》 Kubernetes
Docker Swarm 2019-07 阿里云宣布 Docker Swarm 剔除
Kubernetes Google 10年容器化基础架构 borg GO 语言 基于谷歌内部Borg系统
K8S特点:
- 轻量级:消耗资源小
- 开源
- 弹性伸缩
- 负载均衡:IPVS
- 资源清单:资源 掌握资源清单的语法 编写 Pod 掌握 Pod 的生命周期***
- Pod 控制器:掌握各种控制器的特点以及使用定义方式
- 服务发现:掌握 SVC 原理及其构建方式
- 存储:掌握多种存储类型的特点 并且能够在不同环境中选择合适的存储方案(有自己的简介)
- 调度器:掌握调度器原理 能够根据要求把Pod 定义到想要的节点运行
- 安全:集群的认证 鉴权 访问控制 原理及其流程
- HELM:Linux yum 掌握 HELM 原理 HELM 模板自定义 HELM 部署一些常用插件
- 运维:修改Kubeadm 达到证书可用期限为 10年 能够构建高可用的 Kubernetes 集群
服务分类
有状态服务:DBMS
无状态服务:LVS APACHE
高可用集群副本数据最好是 >= 3 奇数个
- APISERVER:所有服务访问统一入口
- CrontrollerManager:维持副本期望数目
- Scheduler::负责介绍任务,选择合适的节点进行分配任务
- ETCD:键值对数据库 储存K8S集群所有重要信息(持久化)
- Kubelet:直接跟容器引擎交互实现容器的生命周期管理
- Kube-proxy:负责写入规则至 IPTABLES、IPVS 实现服务映射访问的
- COREDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
- DASHBOARD:给 K8S 集群提供一个 B/S 结构访问体系
- INGRESS CONTROLLER:官方只能实现四层代理,INGRESS 可以实现七层代理
- FEDERATION:提供一个可以跨集群中心多K8S统一管理功能
- PROMETHEUS:提供K8S集群的监控能力
- ELK:提供 K8S 集群日志统一分析接入平台
Pod:
Pod是K8S中最小调度单位,一个Node上可以有一个或多个pod,每个pod中运行着容器
Pod类型:
- 自主式 Pod
- 控制器管理的 Pod
RC、RS:新版本中推荐使用RS,比RC多了选择器功能
Deployment:在RS基础上 扩缩容、滚动升级
HPA:利用资源监控信息动态分配资源
StatefulSet:有状态服务
DaemonSet:适用于守护进程服务
Job:任务与定时器任务
Service:服务发现
网络通信模式
新版本的K8S中,已经使用IPVS方案替代Iptables方案,性能更高
ETCD在Flannel中的作用:
不同情况下网络通讯方式: