K8S(一)—— 云原生与Kubernetes(K8S)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、云原生基础概述
    • [1.1 云原生的发展历程×](#1.1 云原生的发展历程×)
    • [1.2 云原生的定义与部署模式](#1.2 云原生的定义与部署模式)
    • [1.3 云原生的技术栈](#1.3 云原生的技术栈)
    • [1.4 云原生的特征](#1.4 云原生的特征)
  • 二、Kubernetes(K8S)核心认知
    • [三、为什么要用 K8S?](#三、为什么要用 K8S?)
    • 四、K8S集群架构与核心组件
    • [4.1 控制平面(Master / Control Plane)组件](#4.1 控制平面(Master / Control Plane)组件)
    • [4.2 工作节点(Node / Worker)组件](#4.2 工作节点(Node / Worker)组件)
  • [五. Kubernetes 核心概念与资源对象](#五. Kubernetes 核心概念与资源对象)
  • [六、 Kubernetes 核心能力与特性](#六、 Kubernetes 核心能力与特性)
  • 总结

前言


一、云原生基础概述

1.1 云原生的发展历程×

2004年:Google开始在内部大规模使用容器技术。

2008年:Google将Cgroups技术合并进Linux内核,为容器化技术奠定基础。

2013年:Docker项目正式发布,推动容器技术进入开源领域。

2014年:Kubernetes项目正式发布,成为容器编排的行业标准。

2015年:Google、Redhat、微软等共同发起成立CNCF(云原生计算基金会),推进云原生技术

的开源生态。

2017年:CNCF成员达到170个,基金项目数量为14个。

2018年:CNCF迎来三周年,成员数达195个,基金项目19个。

1.2 云原生的定义与部署模式

帮助企业在公有云、私有云、混合云等动态环境中,

1.2.1 公有云

云服务商(如 AWS、阿里云等)在互联网公开提供的云计算服务,核心特点是资源共享、按需付费。用户无需管理底层基础设施,按业务需求弹性申请资源并按使用量付费。适用场景:中小企业低成本启动、突发流量(如电商大促)、非敏感业务部署。

1.2.2 私有云

企业在自有数据中心搭建的专属云计算平台,完全自主拥有和控制。核心优势是高安全性、高定制性,可适配行业合规要求,避免敏感数据外泄。适用场景:企业核心业务(如交易系统)、敏感数据存储、高合规要求场景。

1.2.3 混合云

整合公有云、私有云与本地 IT 基础设施的集成环境,兼顾公有云的弹性低成本与私有云的安全可控性。企业可将敏感数据存于私有云,非敏感工作负载(如日志分析、测试环境)部署在公有云,实现资源最优配置。典型案例:电商平台将支付数据存私有云,商品展示等非敏感服务部署公有云,大促时通过公有云弹性扩容。

1.3.2 云原生技术栈公式

云原生并非单一技术,而是多技术的协同组合,可简化为以下公式:

1.3 云原生的技术栈

云原生技术栈包括以下关键技术:
容器化 :如Docker、containerd,提供应用的轻量级封装和环境一致性。
服务网格 :例如Istio,管理服务之间的通信、安全性和流量控制。
微服务架构 :将应用拆解为多个独立的服务,支持灵活扩展和独立部署。
不可变基础设施 :服务一旦部署,便不再修改,通常使用版本化的镜像来保持一致性。
声明式API:通过定义期望的状态,由系统自动管理资源。

云原生 = 容器化(Docker+K8S) + 微服务(Microservices) + 无服务(Serverless) + DevOps + 服务网格(Service Mesh) + 云(Cloud)

云元素的四要素

1.微服务 :几乎每个云原生的定义都包含微服务,跟微服务相对的是单体应用,微服务有理论基础,

那就是康威定律,指导服务怎么切分,很玄乎,凡是能称为理论定律的都简单明白不了,不然就忒

没b格,大概意思是组织架构决定产品形态,不知道跟马克思的生产关系影响生产力有无 系。

微服务架构的好处就是按function切了之后,服务解耦,内聚更强,变更更易;另一个划分服务的

技巧据说是依据DDD来搞。

2.容器化 :Docker是应用最为广泛的容器引擎,在思科谷歌等公司的基础设施中大量使用,是基于

LXC技术搞的,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容

器管理,容器间的负载均衡,谷歌搞的,Docker和K8S都采用Go编写,都是好东西。

3.DevOps :这是个组合词,Dev+Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实

际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云

原生提供持续交付能力。

4.持续交付 :持续交付是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发

版本和稳定版本并存,其实需要很多流程和工具支撑。

微服务:基于康威定律 / DDD 划分,按功能解耦、高内聚,替代单体应用,便于灵活变更;

容器化:以 Docker 为容器引擎(隔离应用)、K8S 为编排系统(管理容器 / 负载均衡),为微服务落地提供基础;

DevOps:融合开发、运维、测试,以敏捷思维、沟通文化为核心,支撑云原生的持续交付;

持续交付:反瀑布式开发,实现小步快跑、不停机更新,需流程与工具协同保障

1.4 云原生的特征

云原生系统具备以下特征,确保其适应现代云计算环境的需求:

  1. 符合12因素应用:应用遵循12因素开发原则,确保可扩展性、无状态性、易维护等。
  2. 面向微服务架构:应用拆解为独立的、松耦合的服务。
  3. 自服务敏捷架构:开发人员可以自主创建和管理云资源,减少对运维的依赖。
  4. 基于API的协作:通过API进行服务间的通信。
  5. 抗脆弱性:系统具有自愈能力,能够应对不稳定的环境因素。

12因素应用的具体原则:

  1. 基准代码:使用同一代码库进行版本控制,并支持多次部署。
  2. 依赖管理:显式声明和隔离各依赖项,确保环境一致性。
  3. 配置管理:配置项存储在环境中,避免硬编码。
  4. 后端服务:外部服务作为附加资源使用。
  5. 构建、发布、运行分离:清晰区分应用构建和运行阶段。
  6. 无状态进程:应用以无状态进程运行,便于水平扩展。
  7. 端口绑定:通过端口提供服务,确保应用独立性。
  8. 并发处理:通过进程模型进行扩展。
  9. 快速启动与优雅终止:应用启动迅速,并在终止时确保数据一致性。
  10. 开发环境与生产环境一致:确保开发、预发布和生产环境尽量一致。
  11. 日志管理:统一收集并展示日志信息,确保可追溯性。
  12. 管理进程:管理性任务(如数据备份)应使用与常驻进程相同的运行环境。
    通过遵循这些原则,云原生应用能够在云环境中灵活、安全且高效地运行

二、Kubernetes(K8S)核心认知

K8S 是什么?

K8S 是 Kubernetes 的简写(K + "ubernetes" 中的 8 个字母 + S)

Kubernetes 是一个开源平台,用于 自动部署、扩展和管理容器化(containerized)应用程序

它可以看作一个负责自动化运维、编排多个容器(如由 containerd 驱动的容器)的集群管理系统

源起:Kubernetes 受 Google 的 Borg 系统启发,后使用 Go 语言重写并捐赠给 CNCF

名称含义:源自希腊语,意为 "舵手 / 导航者"

三、为什么要用 K8S?

自动化运维 :无须人工干预,实现一条命令或声明式方式完成部署、更新、扩容、缩容、删除等
弹性伸缩 :依据指标(CPU、内存、自定义指标等)自动扩展或缩减 Pod 副本数
容灾 / 自愈 :当某个节点或容器失败时,K8S 会自动重建或迁移 Pod,保证副本数量和期望状态
服务发现与负载均衡 :通过 Service 为 Pod 提供稳定的访问入口,并自动分发请求
滚动升级与回滚 :支持渐进式升级,一旦出错可以回滚到之前版本
集中配置与密钥管理 :通过 ConfigMap 、 Secret 等资源集中管理配置与敏感数据
存储编排 :支持将外部存储(NFS、Ceph、云存储等)纳入集群资源管理
批处理 / 定时任务:支持 Job 、 CronJob 用于一次性或定时任务

四、K8S集群架构与核心组件

K8S采用控制平面(Master)+ 工作节点(Node)的主从架构,两者协同工作,共同管理容器集群。

3.1 架构概述

控制平面(Master/Control Plane):集群的"大脑",负责集群的调度、管理与决策------如接收用户请求(如"部署3个Nginx Pod")、选择合适的Node节点运行Pod、监控集群状态是否符合期望;

工作节点(Node/Worker):集群的"手脚",负责运行实际的容器化应用------接收控制平面下发的任务,启动/停止容器,汇报节点与Pod状态;

通信逻辑:所有资源操作请求(如创建Pod、删除Service)均通过控制平面的API Server接收,控制平面处理后将任务下发给Node节点,Node节点通过kubelet执行任务并反馈状态。

4.1 控制平面(Master / Control Plane)组件

4.2 工作节点(Node / Worker)组件

五. Kubernetes 核心概念与资源对象

以下是整理后的 Kubernetes 核心概念与资源表格:

概念 / 资源 含义与用途
Pod Kubernetes 中最小的可调度单位,包含一个或多个共享资源的容器。
控制器 确保 Pod 运行、修复、扩缩等,包括 Deployment、ReplicaSet、StatefulSet 等。
Service 为 Pod 提供稳定访问入口,支持负载均衡。
Ingress 管理外部 HTTP/HTTPS 流量路由到集群内 Service。
Label/Annotation/Selector Label 用于标识资源,Annotation 存储元数据,Selector 选择资源。
Namespace 逻辑隔离集群资源,实现权限管理。
资源定义结构 通过 YAML/JSON 定义,包含 apiVersionkindmetadata 等字段。

六、 Kubernetes 核心能力与特性

自动伸缩(Horizontal Pod Autoscaler, Vertical Pod Autoscaler 等)

服务发现 & 负载均衡

滚动更新 / 回滚

容错 / 自愈

集中配置 / 密钥管理(ConfigMap / Secret)

存储编排与持久化存储(PV / PVC / StorageClass)

批处理 / 定时任务

资源隔离 / 配额 / 限制(ResourceQuota, LimitRange 等)

安全管理机制:如 RBAC(基于角色的访问控制)、NetworkPolicy(网络策略)、Pod 安全策略 /

Pod 安全准入(安全设置)


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
飞翔沫沫情14 小时前
K8s私有云:Nginx真实客户端IP透传全攻略(HAProxy + Ingress 实战)
云原生·kubernetes
江湖有缘14 小时前
自托管在线演示文稿平台:PPTist + Docker 部署实战
docker·容器·eureka
进击的雷神14 小时前
现代软件架构全景解析:从B/S到云原生的演进之路
云原生·系统架构
2401_8401922714 小时前
ZooKeeper 集群部署指南(Kubernetes StatefulSet 方式)
分布式·zookeeper·kubernetes
春日见14 小时前
三分钟安装window Docker,并与Ubuntu(WSL)建立连接
linux·人工智能·windows·驱动开发·机器学习·docker·容器
白衣衬衫 两袖清风14 小时前
Docker日志清理,防止磁盘被json.log撑爆
docker·容器·json
观测云14 小时前
云原生 Profiling:零侵入、随用随取的动态采集实战
云原生·profiling
开发者联盟league14 小时前
k8s 创建 serviceAccount 并配置自定义ClusterRole 再授权用于 api-server 访问
云原生·容器·kubernetes
上海云盾-小余14 小时前
云原生内网横向渗透?微隔离+身份服务网格,东西向流量先过“零信任闸机”
云原生
牛奶咖啡1315 小时前
Prometheus+Grafana构建云原生分布式监控系统(九)_pushgateway的使用
云原生·grafana·prometheus·pushgateway·pushgateway使用场景·推数据到pushgateway·pushgateway的使用