云原生学习笔记-第23天可以涵盖多个方面的内容,但由于具体的学习内容和进度因人而异,以下是一个基于云原生技术常见知识点和实践的概括性笔记,旨在提供一个全面的学习框架和参考。

一、云原生概念与优势

云原生定义
云原生是一种利用云计算和现代技术构建可靠、可扩展应用的方法。它涉及微服务架构、容器化(如Docker)、编排(如Kubernetes)、自动化流程、可观察性和DevOps文化等多个方面。

云原生的优势

  • 灵活性:容器化的云原生应用程序可以在不同的环境中部署和迁移。
  • 可扩展性:云原生应用程序可以根据负载需求进行水平扩展,提供高性能和可伸缩性。
  • 可靠性:通过容器编排工具和自动化机制,云原生应用具备高可用性和故障恢复能力。
  • 效率:自动化流程和工具可以提高开发、测试和部署的效率,加快交付速度。

二、容器技术(Docker)

Docker基础知识

  • Docker是一种主流的容器运行时技术,提供了容器的运行时能力。
  • Docker镜像提供了一种全新的软件格式,使得软件的分发变得容易,且支持“Build Once, Run Anywhere”的理念。

Docker关键技术

  • Namespace:实现容器运行环境的隔离,容器应用进程之间不可见。
  • Cgroup:实现容器运行的资源隔离,避免容器间资源抢占和冲突。
  • Union Filesystem:一种分层、轻量级且高性能的文件系统,支持对文件系统的修改作为一次提交来叠加,是容器镜像的基础。

三、容器编排技术(Kubernetes)

Kubernetes简介

  • Kubernetes(简称K8s)是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务。
  • 它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能。

Kubernetes关键概念

  • Pod:Kubernetes中的最小部署单元,是一组容器实例的集合。
  • Deployment:在K8S中部署的无状态的应用,如Nginx、Tomcat等。
  • Statefulset:在K8S中部署的有状态的应用,如MySQL、Redis等。
  • Service:定义了Pods的逻辑集合和访问这个集合的策略。

Kubernetes技术优势

  • 声明式语法直接定义应用的最终状态。
  • 提供开放的插件机制,兼容各类基础设施(公有云、私有云)。
  • 灵活的隔离机制能够快速为不同团队构建运行环境。

四、实践案例

案例一:使用Jenkins通知目标服务器拉取镜像并运行脚本

  1. 登录Jenkins,编写并执行脚本。
  2. 将脚本添加到环境变量或指定目录下,以便在任何地方执行。
  3. 在Jenkins中添加参数化构建,设置容器启动时占用的端口号。
  4. 配置构建后操作,使用Send build artifacts over SSH插件,通知目标服务器拉取镜像并执行脚本。

案例二:Kubernetes自定义资源(CRD)

  • 了解CRD在Kubernetes中的引入版本(如1.7)及其使用场景。
  • 掌握自定义资源的定义方法,包括使用specstatus等字段。
  • 理解CRD与Controller的关系,以及Controller如何通过队列或工作线程处理多个对象的请求。

五、总结与展望

云原生技术作为当前云计算领域的热点之一,正在深刻改变着软件开发和部署的方式。通过学习和实践云原生技术,我们可以更好地构建可靠、可扩展、高效的应用程序,并不断提升企业的业务竞争力和创新能力。未来,随着技术的不断发展和完善,云原生技术将在更多领域得到广泛应用和推广。