首页 > 其他分享 >Docker 和 k8s 学习

Docker 和 k8s 学习

时间:2024-07-27 17:30:29浏览次数:17  
标签:Node 容器 K8S Worker 应用程序 学习 Docker k8s

披个甲:偷的图灵学院的笔记
docker:https://note.youdao.com/ynoteshare/index.html?id=db5365c679b7d9129cbcfab5cb682d69&type=note&_time=1722071596141
k8s:https://note.youdao.com/ynoteshare/index.html?id=b2d5991b16e43cef9ac5071fbc516026&type=note&_time=1722068196342

1.1 Docker 介绍

Docker是一个开源的容器化平台,可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。
Docker的主要目标是通过容器化技术实现应用程序的快速部署、可移植性和可扩展性,从而简化应用程序的开发、测试和部署过程。
与传统的虚拟机相比,容器化具有以下优势:

  • 轻量级: 容器与宿主机共享操作系统内核,因此容器本身非常轻量级,启动和停止速度快,资源占用少。
  • 可移植性: 容器可以在任何支持相应容器运行时的系统上运行,无需关注底层操作系统的差异,提供了高度的可移植性。
  • 快速部署: 容器化应用程序可以通过简单的操作进行打包、分发和部署,减少了部署过程的复杂性和时间成本。
  • 弹性扩展: 可以根据应用程序的需求快速创建、启动和停止容器实例,实现应用程序的弹性扩展和负载均衡。
  • 环境隔离: 每个容器都具有独立的运行环境,容器之间相互隔离,不会相互干扰,提供了更好的安全性和稳定性。

1.2 Docker 服务架构

一个 Docker Registry可包含多个 Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个 Docker镜像。这跟 Maven的仓库有点类似,如果把 Docker Registry比作 Maven仓库的话,那么 Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。

2.1 k8s 介绍

Kubernetes 是用于自动部署、扩缩和管理容器化应用程序的开源系统。

2.2 k8s 核心特性

  • 服务发现与负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。
  • 存储编排:自动挂载所选存储系统,包括本地存储。
  • Secret和配置管理:部署更新Secrets和应用程序的配置时不必重新构建容器镜像,且不必将软件堆栈配置中的秘密信息暴露出来。
  • 批量执行:除了服务之外,Kubernetes还可以管理你的批处理和CI工作负载,在期望时替换掉失效的容器。
  • 水平扩缩:使用一个简单的命令、一个UI或基于CPU使用情况自动对应用程序进行扩缩。
  • 自动化上线和回滚:Kubernetes会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。
  • 自动装箱:根据资源需求和其他约束自动放置容器,同时避免影响可用性。
  • 自我修复:重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器。

2.3 k8s 架构

K8S 是属于Master-Worker架构,即有 Master 节点负责核心的调度、管理和运维,Worker 节点则执行用户的程序。但是在 K8S 中,主节点一般被称为Master Node ,而从节点则被称为Worker Node 或者 Node。

首先来看Master Node都有哪些组件:

  • kube-apiserver。K8S 的请求入口服务。API Server 负责接收 K8S 所有请求(来自 UI 界面或者 CLI 命令行工具),然后,API Server 根据用户的具体请求,去通知其他组件干活。
  • Scheduler。K8S 所有 Worker Node 的调度器。当用户要部署服务时,Scheduler 会选择最合适的 Worker Node(服务器)来部署。
  • Controller Manager。K8S 所有 Worker Node 的监控器。Controller Manager 有很多具体的 Controller, Node Controller、Service Controller、Volume Controller 等。Controller 负责监控和调整在 Worker Node 上部署的服务的状态,比如用户要求 A 服务部署 2 个副本,那么当其中一个服务挂了的时候,Controller 会马上调整,让 Scheduler 再选择一个 Worker Node 重新部署服务。
  • etcd。K8S 的存储服务。etcd 存储了 K8S 的关键配置和用户配置,K8S 中仅 API Server 才具备读写权限,其他组件必须通过 API Server 的接口才能读写数据。

接着来看Worker Node的组件:

  • Kubelet。Worker Node 的监视器,以及与 Master Node 的通讯器。Kubelet 是 Master Node 安插在 Worker Node 上的“眼线”,它会定期向 Master Node 汇报自己 Node 上运行的服务的状态,并接受来自 Master Node 的指示采取调整措施。负责控制所有容器的启动停止,保证节点工作正常。
  • Kube-Proxy。K8S 的网络代理。Kube-Proxy 负责 Node 在 K8S 的网络通讯、以及对外部网络流量的负载均衡。
  • Container Runtime。Worker Node 的运行环境。即安装了容器化所需的软件环境确保容器化程序能够跑起来,比如 Docker Engine运行环境。

标签:Node,容器,K8S,Worker,应用程序,学习,Docker,k8s
From: https://www.cnblogs.com/xzmxddx/p/18327239

相关文章

  • 【STC 相关】【转载】51单片机学习教程(简单入门)
    转载自:知乎https://zhuanlan.zhihu.com/p/628407258作者:rakey(作者主页https://www.zhihu.com/people/rakey-49) 学习51单片机之前你一定要具备的基础知识。1、C语言基础。2、数字电路基础。3、模拟电路基础。如果你已经具备这些知识那么我们就可以来学习单片机。学习......
  • 运行 Github Action 测试 Docker 镜像时退出代码 137
    我正在学习Testdriven.io:使用FastAPI和Docker进行测试驱动开发课程,目前正在学习持续集成部分。在本节中,您将使用github操作来构建docker映像并运行测试和linting等。在流程的测试Docker映像步骤中,当尝试进行pytest时,我收到以下错误:错误:进程已完成并退出代码......
  • 带你学习通过GitHub Actions如何快速构建和部署你自己的项目,打造一条属于自己的流水线
    本文主要讲解通过github的actions来对我们项目进行ci/cd一、actions简介GitHubActions是一种持续集成和持续交付(CI/CD)平台,可用于自动执行生成、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。GitHubActions......
  • 【学习笔记】Matlab和python双语言的学习(TOPSIS法)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、TOPSIS法1.模型原理2.基本步骤(1)原始矩阵正向化(2)正向矩阵标准化(3)计算得分并归一化二、代码实现----Matlab1.主程序2.正向化处理函数3.极小型正向化函数4.中间型正向化函数5.区间型正向化......
  • 学生Java学习历程-4
    ok,到了一周一次的总结时刻,我大致会有下面几个方面的论述:1.这周学习了Java的那些东西2.这周遇到了什么苦难3.未来是否需要改进方法等几个方面阐述我的学习路程。这周最先开始学的仍旧是一些字词的使用instanceof,左边对象,右边为类,若对象是此类或其子类的对象,则输出true,否则输出fla......
  • 从k8s容器丢包事件中掌握内核参数优化技巧
    引言  在k8s的使用场景中,容器不是仅仅能运行就算ok,往往还需要进行容器的内核参数优化和应用程序参数的调优,如在高并发的业务场景下,运行一个java程序,我们不仅需要对其JVM参数进行调优,而且需要对其所在的容器进行内核参数优化,这篇文章主要通过一次容器丢包事件介绍容器中内......
  • docker 中的 Pytest 运行 venv 文件的测试
    我正在关注https://testdriven.io/courses/tdd-fastapi/pytest-setup/,但是当第一次运行docker-composeexecwebpython-mpytest时,我得到collected212items/24errors而不是预期的0个项目.简短的测试摘要信息显示在其他中ERRORenv/Lib/site-pa......
  • k8s cronjob执行时间
    问题现象一般cronjob执行时间会比预期晚8小时。问题分析cronjob执行时区以kube-controller-manager为准,而kube-controller-manager默认是0时区。解决问题解决方式1kube-controller-manager容器挂载宿主机timezone,更改为东8区。解决方式2cronjob执行时间比预期减8小时。解决方......
  • Java 学习路线
    文章目录一、JavaSE1.1基础语法1.2面向对象编程1.3函数式编程1.4字符串1.5常用API1.6集合框架1.7异常1.8文件1.9IO流1.10多线程1.11网络编程1.12反射1.13动态代理二、MySQL(待办)本篇文章,将会介绍Java的学习路线,在学习的过程中,要注重理论与实践相结合,多......
  • Dockers 部署Nodejs环境的ts 项目遇到的问题
    Dockers部署Nodejs环境的ts项目遇到的问题由于不熟悉TS和nodejs所以过程比较曲折。webpack.config\tsconfig.json\package.json\是几个比较关键的文件。细节可以去看详细文档,这里不展开讲;主要是缺失了start.sh文件和执行npmrunbuild的时候报错问题;遇到报错时,请用最新的AI,......