一、 云原生是什么?
云原生 = 为云环境设计的、现代化的应用开发 + 部署方式
核心特点:
容器化
微服务
自动化部署、弹性扩缩容
高可用、易迁移、不挑云平台
你可以理解成:以前是 “把程序搬到服务器”,现在是 “让程序自己在云上跑、自己自愈、自己扩容”。
二、Docker 是什么?
Docker = 容器引擎,用来打包你的应用。
通俗比喻
以前:你写的代码在你电脑能跑,到服务器就崩(环境不一样)。
现在:用 Docker 把代码 + 依赖 + 配置 + 环境打包成一个镜像(Image)。
特点:
一次打包,到处运行
轻量,比虚拟机快很多
隔离性好,互不干扰
核心概念:
镜像(Image):应用的 “安装包”
容器(Container):运行起来的实例
Dockerfile:打包脚本
三、Kubernetes(K8s)是什么?
K8s = 容器的集群管理平台。
Docker 是 “造集装箱”,K8s 就是管理成千上万个集装箱的超级调度中心。
K8s 帮你干这些事:
自动部署
自动重启崩溃的容器
自动扩缩容(流量大了加容器,流量小了减)
负载均衡
滚动更新、回滚
自愈、高可用
核心组件(简单记)
Pod:K8s 里最小运行单位(一般装 1 个容器)
Node:工作节点(服务器)
Service:统一入口,让外部能访问
Deployment:管理 Pod 的部署、扩缩容、更新
Ingress:对外域名访问
四、Docker + K8s 组合起来能干啥?
一套环境,阿里云 / 腾讯云 / 华为云 / 本地机房随便迁
服务不中断,自动修复
秒级扩容,应对大流量
开发、测试、生产环境完全一致
微服务架构必备底座
现在大厂、云计算、大数据、中间件、AI 服务几乎全都跑在 K8s 上。
五、云原生(Docker + K8s)的优点
1.环境统一,再也不会 “我这能跑,线上崩”
一次打包,到处运行,开发、测试、生产完全一致。
2.极轻量、省资源
比虚拟机省内存 50%+,同样机器能跑更多服务。
3.启动快,秒级扩缩容
服务几秒启动,流量突增能自动加实例,流量低自动缩。
4.自愈能力强
挂了自动重启、漂移到其他节点,不用人半夜抢修。
5.发布更安全
支持灰度、蓝绿、一键回滚,降低上线事故。
6.标准化、自动化程度高
配置、部署、监控全部代码化,适合大规模集群。
7.适配云,不绑定厂商
阿里云、腾讯云、私有云随便迁,架构不用改
六、云原生的缺点(非常现实)
1.学习成本极高
Docker、网络、存储、K8s、权限、排错…… 门槛很高。
2.架构变复杂
问题排查难度变大:容器网络、跨节点通信、日志分散。
3.有状态服务不友好
数据库、HDFS、Kafka、ZooKeeper 上 K8s 复杂且风险高。→ 这也是大数据底层很少全上云原生的原因。
4.网络 & 存储复杂
容器网络漂移、IP 不固定、挂载盘坑多。
5.运维要求高
小公司没专业运维,用云原生反而更容易出问题。
6.过度设计
简单项目没必要上,纯属增加复杂度。
七、总结
1.计算类(Flink/Spark):非常适合云原生
2.存储类(HDFS/HBase/Kafka):不适合、企业很少上 K8s
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/onthe_wing/article/details/158503901



