学习目标:了解k8s


学习内容:

1、简介:

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

2、作用:

(1)、快速部署应用
(2)、快速扩展应用
(3)、无缝对接新的应用功能
(4)、节省资源,优化硬件资源的使用

3、优点

通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。容器比虚机轻量、更“透明”。

4、组件

(1)pod

1)概念:

是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。

2)生命周期:

Pod 在其生命周期中只会被调度一次。
绑定:将 Pod 分配到特定节点的过程。
调度:选择使用哪个节点的过程。
一旦 Pod 被调度并绑定到某个节点,Kubernetes 会尝试在该节点上运行 Pod。Pod 会在该节点上运行,直到 Pod 停止或者被终止; 如果 Kubernetes 无法在选定的节点上启动 Pod(例如,如果节点在 Pod 启动前崩溃),那么特定的 Pod 将永远不会启动。

(2) Controller

可以创建和管理多个Pod,提供副本管理、滚动升级和集群级别的自愈能力。
例如,如果一个Node故障,Controller就能自动将该节点上的Pod调度到其他健康的Node上。

(3)Node

是Kubernetes中的工作节点,最开始被称为minion。一个Node可以是VM(虚拟机)或物理机。每个Node(节点)具有运行pod的一些必要服务,并由Master组件进行管理,Node节点上的服务包括Docker、kubelet和kube-proxy。

5、容器

(1)镜像

1)概念:

是容器运行的核心基础,本质上是一个包含应用程序代码、运行时环境、依赖库、配置文件和环境变量的不可变模板。容器则是镜像的运行实例,而 k8s 通过管理镜像来实现对容器的编排和调度。

2)组成结构:

一个标准的容器镜像由多层文件系统组成(基于 UnionFS 技术,层叠挂载),每层仅记录增量变化,最终合并为一个可读写的容器实例。典型结构包括:

a、基础镜像(Base Image):

底层操作系统或运行时环境(如 ubuntu:22.04、alpine:3.18、openjdk:17-jre-slim),提供最基础的系统工具和库。

b、应用依赖层:

应用运行所需的中间件、库或框架(如 Python 的 pip 包、Node.js 的 npm 依赖)。

c、应用代码层:

业务代码、配置文件(如 Java 的 JAR 包、前端的静态资源)。

d、元数据层:

镜像的描述信息(如作者、构建时间、启动命令 CMD 或 ENTRYPOINT)。

示例:一个简单的 Node.js 应用镜像可能包含:alpine 基础镜像 → Node.js 运行时 → 应用依赖(package.json)→ 应用代码(app.js)→ 启动命令(node app.js)。

3)构建镜像

构建工具Docker、Buildah、Kaniko、Buildpacks

6、Docker

是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐