共计 4322 个字符,预计需要花费 11 分钟才能阅读完成。
容器化 Docker、Kubernetes… 这些云原生的根底概念早已不再是停留在“有没有前途”、“该不该学”、“企业是否值得投入”等能够左右摇摆的争执上,而是已成云计算行业的事实标准。随着云原生逐步在国内企业的落地,学习云原生的需要也日趋突出。明天咱们就来盘点一下,2022 年应该如何学习云原生。
1、学前倡议
在网络上能够看到很多材料文章,不同的人对云原生有着不同的了解,甚至不同的企业还对云原生给出了本人不同的定义。在学习的初期,过于关注这些不同角度的解读反而会让本人困惑,能够先只粗略理解一下官网的定义:
云原生技术有利于各组织在私有云、公有云和混合云等 新型动静环境 中,构建和运行 可弹性扩大的利用 。云原生的代表技术包含 容器 、 服务网格 、 微服务 、 不可变基础设施 和申明式 API 。这些技术可能构建容错性好、易于治理和便于察看的 松耦合零碎 。联合牢靠的 自动化 伎俩,云原生技术使工程师可能轻松地对系统作出 频繁和可预测 的重大变更。
官网定义根本就囊括了云原生的所有关键技术和外围点,云原生不是指某一项技术或单个产品,而是系统化的方法论和技术的汇合。这些要害的技术和外围点也是零碎学习云原生最为重要的内容。
在学习云原生技术之前,首先须要理解以下几点:
- 初学者在学习时,看再多云原生的历史沿革、劣势益处以及波及到哪些技术方向,听再多大佬的“沉默寡言”,都不如本人入手实际,从部署上线几个利用开始;
- 云原生是一个技术的“时代”,不是某一个的职业或技术产品,而不同的职业方向与目标,学习的内容也会有很大差别;而其中 Docker 和 Kubernetes 是云原生的两个外围根底产品,值得所有方向的技术人员、工程师及早开始学习;
- 网络上很多云原生课程尽管都是大厂贵重的教训,然而大多数内容都是写给运维工程师和架构师看的,不太适宜老手学习,需先把握根底后再来进阶;
2、如何入手实际
入手实战时,倡议在本地装置部署好 Docker 环境、Kubernetes 集群以及应用云服务商提供的线上托管 Kubernetes(如腾讯云容器服务 TKE、弹性容器服务 EKS)搭配来学习,这才贴近企业理论生产时的实在环境。
只管也有一些不错的线上实验室,如 Katacoda、play-with-k8s,这些更加倡议大家把这些网站波及的案例给“移植”到本人的学习环境中。
能够先从 Docker 开始学起,Docker 是一个非常容易出现成果和后果的工具,在粗略理解了容器、镜像和镜像仓库的状况下,只须要几行命令就能启动一些“看得见”的应用程序。Docker 的核心思想就是如何将利用整合到容器中,并且能在容器中理论运行。这个整合并运行的过程就是“容器化”。容器化次要分为以下几个步骤:
- 编写利用的代码,利用要能在本地环境失常运行;
- 创立一个 Dockerfile,Dockerfile 要蕴含以后利用的形容、依赖以及该如何运行这个利用;比方根底的 base 环境,零碎组件的装置(如 apk add, apt install 等)、利用代码的拷贝、业务零碎依赖的装置(php composer, npm install 等)、分层、stage 构建等;
- 对 Dockerfile 执行
docker build
命令将我的项目源代码打包成镜像; - 将镜像散发到容器镜像服务,如 hub.docker.com 或应用腾讯云镜像服务等;
云原生中最为重要的产品就是 Kubernetes,简称 K8s,因而咱们学习的外围也是 K8s。如果说传统云计算期间的操作系统是 Linux,那云原生时代的操作系统就是 K8s。
Kubernetes 入门入手实际根本遵循以下流程,Kubernetes 官网技术文档的【教程】(https://kubernetes.io/zh/docs…)局部就有这些根底步骤的解说:
- 创立本地集群和托管集群
- 应用 kubectl 来创立 Depoyment 部署利用
- 学会查看 pod 和工作节点
- 应用 Service 公开地裸露你的利用
- 应用 Kubectl 实现利用的扩缩容
- 应用 kubectl 执行滚动更新
- 应用 ConfigMaps、Secrets 实现内部化利用配置
- 理解有状态应用程序和无状态应用程序
- 理解如何限度容器对资源的拜访和零碎的调用
只管 Docker 和 Kubernetes 官网技术文档是一个不错的入门教程,然而依然存在很多老手 不可避免 的一些“坑”,让本来简略且有意思的入手变得艰巨,有的人甚至连装置配置环境就阻力重重。
为此腾讯云【燎原社】推出了一套学习门槛更低、步骤性更强、内容更为具体且更加适宜国内用户学习的云原生技术工坊,旨在帮忙更多对云原生技术感兴趣的开发者疾速且零碎的把握 Docker 与 Kubernetes。
作为一款入门课程,对初学者十分敌对,不仅收费,还配有专门的学习交换群,群内学员打卡分享,气氛超棒!
详情可戳链接: 腾讯云燎原社技术工坊
3、详读 K8s 官网技术文档
无疑,官网技术文档是最为重要的学习参考资料,其中比拟重要的是比拟侧重于原理形容的【概念 (concepts)】局部和比拟侧重于案例实战部署的【 工作 tasks】局部。
值得一提的是,技术文档不像教程,它没有依照重要水平和难易水平排序,同时有些内容可能在你工作中并不会用到,所以要有侧重点地去学习。学习时能够先从【工作 tasks】局部的实战案例动手,比方【运行利用】、【配置 Pods 和容器】、【治理 Kubernetes 对象】、【给利用注入数据】、【拜访集群中的利用】、【治理 Secrets】等章节的案例都值得入手实战一下。
在实战的过程中,再去了解【概念 (concepts)】局部对于架构、概念等的形容,就不会显得那么艰涩了。尤其是【 概念(concepts)】对于 Kubernetes 架构,容器,工作负载,服务、负载平衡和联网,存储,配置,平安,策略,调度、抢占和驱赶等相干的内容。
在这个阶段的学习中,要相熟把握应用配置文件对各种 Kubernetes 资源对象进行申明式治理,并能部署并运行多种类型的应用程序(工作负载)。
4、最佳实际与云原生核心技术
云原生最终还是要利用到企业的生产实践当中,为企业的降本增效助力,这里有一份云原生在企业落地的门路图,具体列出了每个阶段的外围要点以及波及到的一些云原生技术产品,因而对云原生的零碎学习, 也不能只停留在 Docker 和 Kubernetes 上:
- 1、容器化;
- 2、CI/CD;
- 3、容器编排与利用部署;
- 4、可观测与剖析
- 5、代理,服务发现与服务网格
- 6、网络、网络策略与平安
- 7、分布式数据库与存储
- 8、流式数据与音讯
- 9、容器仓库与运行时
- 10、利用散发
这份云原生企业落地门路图,根本囊括了以“云原生利用为核心”的云原生比拟要害的技术畛域,而这些都在 CNCF 对云原生利用的定义里有所概括:
- 云原生利用的 DevOps,包含镜像打包、配置、CI/CD、流式数据与音讯、存储以及数据库等;
- 云原生利用的编排与治理,包含了利用编排与调度、服务发现治理、近程调用、API 网关以及服务网格;
- 云原生利用的监控与可观测性,比方云原生利用的状态监控、日志收集、链路追踪以及混沌工程;
- 云原生的底层技术,比方容器运行时、云原生存储技术、云原生网络技术、云原生平安等。
- 云原生组件,云原生有着十分丰盛的技术产品生态,比方 Helm、etcd、Cilium、Prometheus 等。
这些环节环环相扣,而且每一个环节都波及到大量企业最佳实际方面的常识,而这些重要的常识相对来说就零散很多,比方各大云服务商提供的官网技术文档、大厂高级工程师撰写的技术文章里(比方能够关注“腾讯云原生”公众号),或者一些云原生大会上。
腾讯云【燎原社】还推出了为期 3 天的线下【云原生技术实战营】,腾讯云技术专家团队会面对面倾囊相授一线云原生实战经验,手把手教你业务容器化革新的“最佳实际”,参与者不仅能够和社区各畛域程序员一起提高,还能与腾讯资深架构师、产品继续交换。
详情可戳链接:腾讯云燎原社云原生技术实战营
5、CNCF
要零碎理解云原生的一些开源产品,就不得不提到云原生基金会 CNCF。CNCF 列出了一份云原生相干畛域的全景图,具体列出了利用部署与镜像打包、容器的调度与编排、RPC、服务治理、存储与数据库等等相干畛域的开源技术产品,能够给咱们进一步学习指明方向。
6、云原生的不同方向与参考书籍
后面曾经说过,不同职业方向须要把握的内容存在比拟大的差别,云原生根本能够分为云原生运维与平安(运维工程师)、云原生开发工程师(Golang)、云原生架构师、云原生利用开发(宽广程序员)等方向。
在把握了大抵把握和理解了对于 Docker 和 Kubernetes 相干内容的状况下,不同的职业方向还能够浏览一下以下书籍作为参考。举荐的书大多都是计算机行业比拟推崇的 O ’reilly 和 Manning 出品的。
1、云原生运维与架构
云原生运维与架构次要聚焦于云原生零碎的设计与交付,通过监控统计、自动化等形式保护零碎的高并发、高可用、可伸缩性、安全性等。云原生运维有着一些全新的工具和方法论,比拟显著地进步了传统运维的技术门槛,也对传统架构提出了新的挑战。
除了须要关注 Prometheus、etcd、istio、Terraform 等产品的技术文档以及实际外,比拟举荐的书籍如下:
- 《基于 Kubernetes 的云原生 DevOps》
- 《Kubernetes in Action》
- 《云原生模式》
- 《Kubernetes 设计模式》(Kubernetes Patterns)
- 《Terraform:多云、混合云环境下实现基础设施即代码(第 2 版)》
SRE 还能够浏览一下运维之道、运维解密、工作手册、生存指南,这几本书根本都与 Google SRE 相干。
2、云原生开发工程师(Golang)
云原生开发工程师除了比拟外围的操作系统、网络相干的常识外,还须要把握云原生时代的“C 语言”Golang,同时须要理解 Kubernetes 编程和源码相干的常识。
- 《Kubernetes 编程》(Programming Kubernetes)
- 《Kubernetes 源码分析》
- 《Kubernetes 操作器》(Kubernetes Operators)
3、云原生利用开发
云原生利用开发一般来说次要是宽广程序员的事件,云原生利用并不限于某一门编程语言,无论是 Java、Python、Golang、PHP、前端开发等,须要把握的是 Docker 与容器化(重点)、Kubernetes 根底操作(根本入门就行)、微服务、GitOps 等相干的内容,所学内容其实并不多,大部分都是交给工具和平台来搞定。
- 《Docker 实战(第 2 版)》(Docker in Action),清华大学出版社
- 《深刻分析 Kubernetes》(其实这是一本入门的书籍)
- 《云原生 Java》