1. K8S基础系列篇(1) 基础理论和高可用架构
K8S基础系列篇 :1. 基础理论必会2. 高可用架构实现
·
文章目录
1. 什么是K8S?
Kubernetes是一个Google开源的容器集群编排管理系统,是一个多容器管理解决方案。
2.K8S和Docker的关系
Docker:
- 是一个开源的应用容器引擎;
- 对应用进程进行封装隔离;
- 独立于宿主机和其他进程;
- 提供容器的生命周期管理;
- 具有快速部署,可移植性,环境隔离等特点;
- Docker镜像构建运行时容器;
- 优点: 可移植性. 将软件和依赖包打包到一个容器中。
Kubernetes
- 用于关联和编排在多个主机上运行的容器;
- 是一个跨多主机的容器编排平台;
- 是一个开源容器集群编排管理系统;
- 是一个多容器管理解决方案。
3.K8S相关基础概念
- Master : (etcd, api-server, control-manager, scheduler)
- Node: (docker, kubelet,kube-proxy)
- Pod: 运行于Node节点上,若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通信。Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个Pod可以包含一个容器或者多个相关容器。
- Label: key/Value键值对,可附加到各种资源对象上, K8S可以通过Label Selector(标签选择器)查询和筛选资源对象;
- ReplicaSet:是 Pod 副本的抽象,管理Pod副本,保证集群中存在指定数量的Pod副本. 是实现弹性伸缩,动态扩容和滚动升级的核心. 是下一代 ReplicationController, 支持新的基于集合的标签选择算符。 它主要被 Deployment 用来作为一种编排 Pod 创建、删除及更新的机制。 请注意,我们推荐使用 Deployment 而不是直接使用 ReplicaSet.
- Deployment: 在内部使用ReplicaSet 来实现,可以通过 Deployment 来生成相应的 ReplicaSet 完成 Pod 副本的创建;
- HPA: Pod的横向自动扩容,通过追踪分析RC控制的所有Pod目标的负载变化情况,来确定是否需要针对性的调整Pod副本数量。
- Service: Service定义了Pod的逻辑集合和访问该集合的策略,是真实服务的抽象。Service提供了一个统一的服务访问入口以及服务代理和发现机制,关联多个相同Label的Pod,用户不需要了解后台Pod是如何运行。
- Volume: Volume是Pod中能够被多个容器访问的共享目录,Kubernetes中的Volume是定义在Pod上,可以被一个或多个Pod中的容器挂载到某个目录下。
- Namespace : Namespace用于实现多租户的资源隔离,可将集群内部的资源对象分配到不同的Namespace中,形成逻辑上的不同项目、小组或用户组,便于不同的Namespace在共享使用整个集群的资源的同时还能被分别管理。
4.K8S的核心功能
- 自我修复: 保证预期的副本数量,杀死健康检查失败的容器.
- 弹性伸缩: 保证应用业务高峰并发时的高可用性,业务低峰时回收资源,以最小成本运行服务.
- 自动部署和回滚: k8s采用滚动更新策略更新应用
- 存储编排: 挂载外部存储系统
- 服务发现和负载均衡
- 机密和配置管理
- 资源监控和资源配额管理
- 提供认证和授权: 角色访问控制(RBAC)认证授权策略.
5.K8S架构组成
5.1 Master
- 负责资源调度,控制副本,和提供统一访问集群的入口。
1. Kube-apiserver:
集群统一入口,所有对象资源增删改查和监听操作交给apiserver处理后再提交给etcd存储。
2. Kube-controller-manager: 负责管理所有控制器。
3. Kube-scheduler: 根据调度算法为新创建的Pod选择一个Node节点。
4. Etcd: 分布式键值存储系统.用于保存集群状态数据。
5.2 Node
Node由Master管理,并汇报容器状态给Master,同时根据Master要求管理容器生命周期。
1. Kubelet: kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期。
2. Kube-proxy: 在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。
3.Docker: docker或者rocket,containerd, 容器引擎和运行容器。
5.3 Etcd
1.简述etcd及特点?
etcd是CoreOS团队开源项目,负责管理配置信息和服务发现. 提供一个高可用的分布式键值数据库,基于Go语言实现。
特点:
- 简单:支持 REST 风格的 HTTP+JSON API。
- 安全:支持 HTTPS 方式的访问。
- 快速:支持并发 1k/s 的写操作。
- 可靠:支持分布式结构,基于 Raft 的一致性算法,Raft 是一套通过选举主节点来实现分布式系统一致性的算法。
2.etcd适用场景
- 服务发现
- 消息发布与订阅
- 负载均衡: etcd分布式架构存储的信息访问支持负载均衡.etcd集群中的每个节点都可以处理用户请求。
- 分布式通知与协调: 通过注册和异步通知机制,实现分布式环境下不同系统之间的通知与协调。
- 分布式锁: etcd使用Raft算法保持了数据的强一致性,锁服务有两种使用方式,1是保持独占,2是控制时序。
- 集群监控与Leader 竞选:通过etcd 来进行监控实现起来非常简单并且实时性强。
5.4 K8S单Master架构图
5.5 K8S多Master架构图
5.6 K8S系统组件图
5.7 理解容器编排系统
6.K8S应用场景
- K8S主要优势,适应场景及特点?
优势:
- 容器编排
- 轻量级
- 开源
- 弹性伸缩
- 负载均衡
K8S常见场景:
- 快速部署和扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源使用。
K8S特点:
- 可移植: 支持公有云,私有云,混合云.
- 可扩展: 模块化,、插件化、可挂载、可组合
- 自动化: 自动部署、自动重启、自动复制、自动伸缩/扩展。
更多推荐
已为社区贡献7条内容
所有评论(0)