【职场技术栈学习实录】Kubernetes 详解 (一)—— 架构篇

系列文章介绍

本系列是我作为一名后端开发,在日常工作中积累的技术学习与实践笔记。在这里,我将分享工作中后端开发领域的技术栈、架构设计、代码实现以及问题解决的经验与心得。出于保护公司隐私的原因,实际业务场景无法详细展开,但我会通过抽象化的需求和通用的技术问题,来介绍与探讨如何在实际工作中应用这些技术。



前言

K8S中有非常多的概念和专业术语,如果理解了这些概念,上手K8S的具体操作是非常快的。因此,在这篇博客中,我会详细介绍K8S的前世今生和集群架构。

近些年我们正越来越多地听到一个概念——“云原生”,而Kubernetes(下文简称为K8S)作为云原生技术的核心组件之一,是现如今企业云原生系统的主流解决方案,也正在成为后端开发所必须要了解和使用的一项技术。现在实习公司的基础架构平台正是基于K8S所搭建的,为了更好上手公司业务,并拓展自己的技术深度与广度,特此开辟K8S专题技术博客,记录自己的所学、所想、所悟。


一、Kubernetes是什么?为什么要使用它?

个人对技术的学习理解中,在学习某一项技术前,我都会去了解一下这个技术的前世今生,我认为技术没有横空出世的,是为了解决某些之前的技术没有解决的问题,进而演化成一套解决方案,K8S也正是如此。

作为一名后端开发程序员,程序在开发、测试都没问题后,便是部署上线。20年前,是将程序直接部署在服务器或虚拟机上。10年前,出现了容器化的概念。现如今,我们有了K8S。那么为什么我们需要使用K8S呢?之前的方案有哪些问题呢?接下来我们以部署Java程序为例,详细阐述三者之间的优劣差异。

1. 传统部署与虚拟机部署

传统部署中,我们将程序打包,部署在一个Tomcat服务器中。如果程序只有一个是没问题的,可程序如果有多个,问题就产生了。由于他们会共享服务器的公共资源——CPU、操作系统、网络、缓存、硬盘等资源,可能导致冲突和安全风险。而且,更新与修补依赖于人工操作,容易引发配置漂移和环境不一致问题。
虚拟化部署,则是将服务器中开辟多个虚拟机,每个虚拟机中存放着一个程序,每个程序都有独立的内核和操作系统,互不干扰,解决了资源冲突的问题。但所有程序都对应着一个独立的操作系统,系统的开销非常大。同时,当程序越来越多时,会创造非常多的虚拟机,资源调度和管理难度会越来越高。
在这里插入图片描述

2. 容器化部署

不同于前两者,容器化部署将应用及其依赖打包到轻量级的容器中,共享宿主机操作系统内核,但在进程及资源上实现隔离。代表性技术就是我们所熟知的Docker。它的优势是很明显的。

  1. 资源利用率高:无需加载完整操作系统,启动快,占用资源少。
  2. 部署灵活:镜像一致性保证了开发、测试和生产环境一致,便于部署和迁移。
  3. 高效开发流程:支持快速构建、分发和更新应用。

在Docker中,我们会将打包好的应用程序制作成一个镜像,也就是docker image。我们将这个image上传到仓库中,需要时只需将其从仓库中拉取下来,也就是docker pull。而部署也非常简单,直接docker run,指定镜像,暴露其外部端口便可以从外部去访问这个容器中的实例。将复杂的流程转变为简单、直接、高效的几个指令,大大简化了部署的难度。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值