如何在Kubernetes上开发和维护插件,扩展Kubernetes的功能? lstio 是什么? --- AIGC --- 游戏 ---- > # Docker - 核心概念 * **镜像(Image)**:一个应用的运行环境(类似 ISO)。 * **容器(Container)**:从镜像启动的运行实例(类似虚拟机,但更轻量)。 * **Dockerfile**:定义如何构建镜像的文件。 * **仓库(Registry)**:存储镜像的地方(如 Docker Hub)。 * **网络(Network)**:桥接容器通信(bridge、host、overlay)。 * **数据卷(Volume)**:持久化存储数据。 ``` docker ps # 查看运行的容器 docker images # 查看本地镜像 docker logs -f 容器ID # 查看日志 docker exec -it 容器ID sh # 进入容器 docker rm -f 容器ID # 删除容器 docker rmi 镜像ID # 删除镜像 ``` - Kubernetes:一个**容器编排系统**,提供了自动化的容器部署、扩展、负载均衡、容器健康检查、日志管理等功能,帮助开发者和运维人员高效地管理容器化应用。 - Pod 是 Kubernetes 中最小的可部署单元,它包含一个或多个容器。多个容器在同一个 Pod 中运行时,它们共享网络、存储等资源。 - Service: 为一组 Pod 提供一个固定的访问地址来解决这个问题。这个固定的地址不会随着 Pod 的重启或迁移而改变 * **ClusterIP**:默认类型,只能在集群内部访问。 * **NodePort**:让你可以通过集群节点的 IP 和指定端口访问服务。 * **LoadBalancer**:在支持的云平台上,创建一个外部负载均衡器来访问 Service。 * **ExternalName**:将 Service 映射到外部的 DNS 名称(例如:`example.com`) - Deployment (迪普洛伊门特)用于管理 Pod 的副本,控制应用的生命周期 - Namespace: 是 Kubernetes 中的一种隔离机制,允许在同一个集群内创建多个虚拟集群,每个虚拟集群有自己的资源和配置(区分 dev pre master) * **ConfigMap 和 Secret**: * **ConfigMap** 用于存储非敏感的配置信息,**Secret** 用于存储敏感信息(如密码、API 密钥等)。 * **Persistent Volume (PV) 和 Persistent Volume Claim (PVC)**: * PV 是集群中的存储资源,PVC 是对 PV 的请求。Kubernetes 管理存储资源的生命周期,以便容器使用持久化存储。 - Prometheus(普罗米修斯)- 收集和存储监控数据: - 开源的**时序数据库(TSDB)**,专门用于**监控 & 报警** - 通过 **Pull 模型** 定期从**目标**拉取监控数据 - Grafana(格拉发纳)- 展示和分析监控数据: - 可视化监控工具, 提供Dashboard(仪表盘,可以创建图表、警报 - DevOps (德夫-奥普斯): * **Agile**:采用敏捷框架(如 Scrum、Kanban、Extreme Programming 等)来管理开发过程,强调团队自主性、日常站立会议(Daily Standup)、冲刺(Sprint)、回顾和迭代。 * **DevOps**:采用一系列自动化工具和流程来进行代码的构建、测试、部署、监控和反馈。包括持续集成(CI)、持续交付(CD)、自动化测试、基础设施即代码(IaC)等实践 --- - 深度学习框架: - TensorFlow : 谷歌(Google)开发的开源机器学习库 - PyTorch : Facebook(现 Meta)开发的一个开源机器学习框架 - Python Django框架(江戈) * **Django**: * **大型和复杂的项目**:Django 是一个“全栈框架”,它集成了大量的功能(如 ORM、身份验证、管理后台等),非常适合开发功能复杂、需要快速开发的应用程序,尤其是大型网站和复杂系统。 * **有规范和标准化要求的项目**:Django 提供了统一的开发结构和很多约定,适合团队合作和需要遵循最佳实践的项目。 * **开发时间紧迫且功能要求全面的项目**:如果你需要一个开箱即用的解决方案,Django 提供了许多内置工具,可以快速开始开发。 * **Flask**: * **小型项目和原型开发**:Flask 是一个轻量级的框架,非常适合快速构建小型应用、原型开发或 MVP(最小可行产品)。 * **需要高度自定义的应用**:如果你需要完全控制应用程序的结构和功能,Flask 的灵活性非常适合这种场景。 * **RESTful API 开发**:Flask 非常适合开发 API 服务,许多开发者使用 Flask 来创建轻量级、快速响应的 RESTful API。