Kubernetes 初学者教程:基础知识、功能、 Archi质地
在开始本 Kubernetes 教程之前,让我们先学习一下:
什么是Kubernetes?
Kubernetes 是在 Google 平台上开发的容器管理系统。Kubernetes 有助于管理各种类型的物理、虚拟和云环境中的容器化应用程序。Google Kubernetes 是一种高度灵活的容器工具,可以一致地交付在数百到数千个单独服务器的集群上运行的复杂应用程序。
为什么需要容器?
如今的互联网用户无法接受宕机。因此开发人员必须找到一种不中断服务的方法进行维护和更新。
因此,容器是一个隔离的环境。它包含应用程序运行所需的一切。它使开发人员能够轻松地编辑和部署应用程序。此外,容器化已成为打包、部署和更新 Web 应用程序的首选方法。
Kubernetes 执行什么任务?
Kubernetes 是用于分布式系统的 Linux 内核。它可以帮助您抽象节点(服务器)的底层硬件,并为使用共享资源池的应用程序提供一致的接口。
为什么使用 Kubernetes?
Kubernetes 可帮助您控制云应用程序和微服务的资源分配和流量管理。它还有助于简化面向服务的基础架构的各个方面。Kubernetes 可让您确定容器化应用程序的运行位置和时间,并帮助您找到要使用的资源和工具。
Kubernetes的功能
以下是 Kubernetes 的基本功能:
- 自动排程
- 自愈能力
- 自动推出和回滚
- 水平扩展和负载平衡
- 为开发、测试和生产提供一致的环境
- 基础设施松散耦合,每个组件都可以作为独立的单元
- 提供更高的资源利用密度
- 提供企业级功能
- 以应用为中心的管理
- 自动可扩展的基础设施
- 您可以创建可预测的基础设施
Kubernetes 基础知识
现在,在本 Kubernetes 教程中,我们将学习 Kubernetes 的一些重要基础知识:
-
Cluster
它是主机(服务器)的集合,可帮助您聚合其可用资源。包括 RAM、CPU、RAM、磁盘及其设备,形成一个可用池。
-
总音量
Master 是组成 Kubernetes 控制面板的组件集合。这些组件用于所有集群决策。它包括调度和响应集群事件。
-
Node
它是一个能够在物理或 虚拟机。一个节点应该同时运行 kube-proxy、minikube 和 kubelet,它们被视为集群的一部分。
-
命名空间
它是一个逻辑上的集群或环境。它是一种广泛使用的方法,用于确定访问范围或划分集群。
Kubernetes Archi质地
下面是详细的Kubernetes架构图:
主节点
主节点是负责 Kubernetes 集群管理的第一个也是最重要的组件。它是所有管理任务的入口点。集群中可能会有多个主节点来检查容错能力。
主节点具有各种组件,例如 API 服务器、控制器管理器、调度程序和 ETCD。让我们看看所有这些组件。
API 服务器: API 服务器充当用于控制集群的所有 REST 命令的入口点。
调度
调度器将任务调度到从属节点,存储每个从属节点的资源使用信息,负责分配工作负载。
它还可以帮助您跟踪集群节点上的工作负载使用情况。它可以帮助您将工作负载放在可用的资源上并接受工作负载。
等
etcd 组件存储配置详细信息和正确值。它与大多数组件通信以接收命令和工作。它还管理网络规则和端口转发活动。
工作节点/从节点
工作节点是另一个重要组件,它包含管理容器之间的网络、与主节点通信所需的所有服务,并允许您为计划的容器分配资源。
- Kubelet:从 API 服务器获取 Pod 的配置,并确保所描述的容器启动并正在运行。
- Docker容器: Docker 容器在每个工作节点上运行,运行配置的 pod
- Kube-proxy:Kube-proxy 作为负载均衡器和网络代理在单个工作节点上执行服务
- Pod:Pod 是逻辑上在节点上一起运行的单个或多个容器的组合
其他关键术语
复制控制器
复制控制器是一个定义 Pod 模板的对象。它还控制参数,通过增加或减少正在运行的副本数量来水平扩展 Pod 的相同副本。
复制集
复制集是复制控制器设计上的一种交互,其灵活性在于控制器如何识别它要管理的 Pod。它取代了复制控制器,因为后者具有更高的复制选择能力。
部署
部署是一种常见的工作负载,可以直接创建和管理。部署使用复制集作为构建块,增加了生命周期管理的功能。
状态集
它是一种专门的 pod 控件,提供排序和唯一性。它主要用于进行细粒度控制,满足您对部署顺序、稳定网络和持久数据的特定需求。
守护进程集
守护程序集是另一种特殊形式的 Pod 控制器,它在集群中的每个节点上运行 Pod 的副本。这种类型的 Pod 控制器是一种有效的 Pod 部署方法,可让您执行维护并为节点本身提供服务。
Kubernetes 与 Docker Swarm
以下是两者之间的重要区别 Kubernetes与Docker.
产品型号 | 码头工人 | Kubernetes |
---|---|---|
缩放 | 无自动缩放 | 自动缩放 |
负载均衡 | 是否自动负载平衡 | 手动配置负载平衡设置 |
存储卷共享 | 与任何其他容器共享存储卷 | 在同一 Pod 内的多个容器之间共享存储卷 |
登录和监控工具的使用 | 使用3rd 类似 ELK 的聚会工具 | 提供内置的日志记录和监控工具。 |
安装 | 简便、快捷 | 复杂且耗时 |
GUI | GUI 不可用 | GUI 可用 |
可扩展性 | 扩展速度比 K8S 快,但集群强度不够 | 与 Swarm 相比,扩展速度较慢,但可以保证更强大的集群状态负载平衡需要手动服务配置 |
负载均衡 | 提供内置负载平衡技术 | 更新时进行进程调度以维护服务 |
更新和回滚数据量记录和监控 | 渐进式更新和服务健康监测。 | 仅与同一 Pod 内置日志和监控工具中的容器共享。 |
Kubernetes 的优势
- 使用 pod 轻松组织服务
- 它是由谷歌开发的,谷歌拥有多年宝贵的行业经验
- 容器编排工具中最大的社区
- 提供多种存储选项,包括本地、SAN 和公共云
- 遵守不可变基础设施的原则
- Kubernetes 可以运行本地裸机、OpenStack、公共云 Google, Azure, AWS等等。
- 帮助您避免供应商锁定问题,因为它可以使用任何特定于供应商的 API 或服务,除非 Kubernetes 提供抽象,例如负载均衡器和存储。
- 使用 kubernetes 进行容器化可以让软件包实现这些目标。它将使需要发布和更新的应用程序无需停机。
- Kubernetes 允许您确保这些容器化应用程序在您想要的时间和地点运行,并帮助您找到您想要使用的资源和工具。
Kubernetes 的缺点
- Kubenetes 仪表板没有应有的那么有用
- 在所有开发都在本地完成的环境中,Kubernetes 有点复杂且没有必要。
- 安全措施不是很有效。
总结
- 容器帮助组织在不中断服务的情况下进行维护和更新
- Kubernetes是Google平台开发的容器管理系统的一个示例。
- 使用 Kubernetes 的最大优势在于它可以在本地 OpenStack、公有云 Google 上运行, Azure、AWS 等
- Kubernetes 提供自动调度和自我修复功能。
- Cluster、master、node、namespace 是 kubernetes 的重要基础
- Master节点和Work节点是Kubernetes架构的重要组成部分。
- 复制控制器、复制集、部署、状态集、守护进程集是 Kubernetes 中使用的其他重要术语。
- Docker swarm 不允许自动缩放,而 Kubernetes 允许自动缩放。
- Kubenetes 最大的缺点是它的仪表板不太有用和有效