云原生已经是云计算行业的事实标准,改变了软件开发、部署和运维的工作、思维方式,也让运维人员的职业方向发生了极大的转变,这也要求云原生运维工程师相比传统运维需要掌握不同的技术与方法论。
1、云原生运维的前景
一个职业方向是否有前途,岗位需求量是否大,又需要掌握哪些核心技能,最靠谱的做法当然是去招聘网站上搜索相关岗位,比如关于云原生运维,可以搜索“云原生运维”、“ DevOps 工程师”、“SRE工程师”、“云原生架构师”、“ Kubernetes 运维”等关键词,就可以了解到当前云原生运维的岗位需求量比较大,待遇前景也远非传统运维可比。
而同时随着云计算行业的不断演变,云原生运维的工作内容和职责相比传统运维有了很大的不同,尤其是从传统 Linux 操作系统的运维转向了云原生时代的操作系统Kubernetes的运维上:
- 熟悉 DevOps、CI/CD,负责应用产品的持续交付和持续运维的工具体系的建设,支撑业务的快速迭代与稳定性工具建设;
- 完善 Kubernetes 集群的监控体系、日志分析和全方位数据运营(包括可用性指标、历史事故、资源利用率等),提高监控有效性及时发现故障,保障业务可用;
- 优化 Kubernetes 集群运维体系,对底层基础组件的部署持续调优,提升各线的运维能力和问题处理效率
- 负责 Kubernetes 集群运维平台的建设,打造自动化运维和管控体系;负责Kubernetes集群管理、部署发布、可观测体系等系统的设计和实现;
反观传统的 Linux 运维,由于云服务商提供的 IaaS、PaaS的普及,以及运维自动化程度越来越高,传统运维诸多工作内容也渐被取代。计算机基础设施(容器化、公有云、混合云等),应用架构(微服务、分布式、十二要素应用程序)以及DevOps、FinOps、DevSecOps等开发流程和方法论对运维人员所需要掌握的技术技能提出了新的要求。
2、云原生运维需要掌握哪些技术
1、掌握一门编程语言
通常,运维工程师对编程语言的要求远没有程序员那么高,传统运维工程师需要熟练掌握一些比较流行的脚本语言 Shell 、Python 。不少公司底层使用的是 Java ,如果你能了解Java,尤其是能够独立部署上线 Java 项目(倒不需要会开发)就更好了。
而绝大多数流行的云原生项目都是 Golang 开发的,作为云原生运维工程师更推荐去学习Golang 并把 Golang 作为自己的主力编程语言。
学习 Golang ,比较推荐 Golang 官方在“go.dev/learn”(可在浏览器里输入这个链接)里提供的学习资料,比如技术文档、《Tour of Go》、Go的Web Dev、CLIs、《Go by example》等等。
如果网站访问慢或不习惯通过英文来学习,推荐被誉为“ Go 语言圣经”的《Go程序设计语言》(The Go Programming Language)这本书,Manning 的《Go语言实战》(Go in Action)、O'reilly的《Head First Go语言程序设计》(这本书非常适合入门)。
2、操作系统基础与命令行
Linux操作系统及其命令行可以说是每个程序员都应该掌握的基础知识,更是运维工程师的“传统艺能”,云原生运维工程师也不例外。
这部分的知识实践性是非常强的,建议在电脑本地或通过虚拟机安装一个 Ubuntu ,或在腾讯云上购买一个云服务器CVM,不能只看书或视频。
比较推荐的是《 Linux 命令行大全》、《鸟哥的 Linux 私房菜》、《Linux/UNIX 系统编程手册》
3、计算机网络
DevOps 是开发 Development 和运维 Operations 的合称,因此云原生运维也需要掌握开发人员必学的计算机科学的核心知识,除了操作系统外,计算机网络也是需要重点掌握的内容。
除了需要了解 OSI 七层网络模型、进程通信方式、TCP/IP协议、HTTP/HTTPS、抓包、iptables 等一些本地或自建服务器运维所需要掌握的网络与安全知识;
还建议通过云服务商提供的产品服务来实践学习,比如腾讯云的云服务器 CVM、对象存储 COS、云数据库 MySQL、负载均衡、NAT 网关、私有网络、CDN、消息队列等产品的使用来深入了解一些云计算相关的服务以及背后所涉及的计算机网络相关的知识。
4、开发环境编译与部署
可以从基础的 LAMP、LNMP、Wordpress 以及一些比较流行的开源项目的部署上线到云服务入手,掌握 Nginx、Tomcat、Apache等网页服务器、负载均衡,MySQL、Redis数据库和缓存。
以上这些知识基本都是传统运维工程师需要掌握的内容,当然也是云原生运维的基础,云原生运维( DevOps 工程师、SRE 工程师等)则主要需要掌握云原生产品生态以及文化:
5、云原生基础
Docker 容器化和 Kubernetes 集群可以说是云原生最为重要的基础,学习时也推荐先从动手实践来入手。动手实战时,建议在本地安装部署好 Docker 环境、Kubernetes 集群以及使用云服务商提供的线上托管 Kubernetes(如腾讯云容器产品TKE、EKS)搭配来学习,这才贴近企业实际生产时的真实环境。
尽管 Docker 和 Kubernetes 官方技术文档是一个不错的入门教程,但是仍然存在很多新手不可避免的一些“坑”。
为此腾讯云【燎原社】推出了一套学习门槛更低、步骤性更强、内容更为详细且更加适合国内用户学习的云原生技术工坊,旨在帮助更多对云原生技术感兴趣的开发者快速且系统的掌握Docker与Kubernetes。
作为一款入门课程,对初学者非常友好,不仅免费,还配有专门的学习交流群,群内学员打卡分享,氛围超棒!
详情可戳链接: 腾讯云燎原社技术工坊
6、微服务、DevOps与云原生监控
微服务、DevOps 以及云原生监控方面,除了掌握基础的技术产品外,比如 Jenkins、Prometheus 等之外,还涉及到一些企业上云以及云原生落地的流程与方法论,推荐阅读一下《基于Kubernetes的云原生DevOps》、《Kubernetes in Action》、《云原生模式》、《Kubernetes设计模式》(Kubernetes Patterns)等相关的书籍。
腾讯云【燎原社】还推出了为期3天的线下【云原生技术实战营】,腾讯云技术专家团队会面对面倾囊相授一线云原生实战经验,手把手教你业务容器化改造的“最佳实践”,参与者不仅可以和社区各领域程序员一起进步,还能与腾讯资深架构师、产品持续交流。
详情可戳链接:腾讯云燎原社云原生技术实战营
7、云原生不同方向的学习
以上内容都是云原生运维需要掌握的基础内容了,在不同的企业,云原生运维可能会分一些方向,比如DevOps工程师、SRE工程师、平台架构工程师等等,不同的方向需要进阶学习的点都会有所不同,但是Docker、Kubernetes以及云原生在企业的落地是这些方向的基石。
不同方向的深入学习,需要结合企业自身业务以及去参考一下CNCF的一些开源项目了。
3、关于考证与进阶
对于初、中级的云原生运维工程师来说,无论是想给自己设立一个目标,或者考察知识掌握水平,抑或是求职来说,不妨去考一下云原生相关的证书。云原生计算基金会CNCF,通常来说比很多云厂商提供的认证证书含金量更高,不少企业在招聘时也明确提出CKA和CKAD是加分项。这些考试大多数都是实操题,Kubernetes官方技术文档是考试时唯一可能参考的资料
- Kubernetes应用程序开发者认证 Certified Kubernetes Application Developer (CKAD):CKAD考试证明用户可以为 Kubernetes 设计、构建、配置和发布云原生应用。通过 CKAD 认证的人员能够在 Kubernetes 中定义软件资源并且使用核心组件来搭建、监控、检查可伸缩应用;
- Kubernetes管理员认证 Certified Kubernetes Administrator (CKA):CKA认证确保CKA认证人员具有履行 Kubernetes 管理员职责的技能、知识和能力。通过认证的 Kubernetes 管理员展示了包括基础安装和配置、管理产品级别的 Kubernetes 集群方面的能力。
- Kubernetes 认证安全专家 (CKS):Kubernetes 认证安全专家项目确保证书持有人员容易胜任各种最佳实践。CKS 认证包括在构建、部署和运行时确保基于容器的应用程序和 Kubernetes 平台安全的技能。参加CKS的候选人必须持有现行的 CKA证书,以证明他们具有足够的 Kubernetes 专业知识。
当然也还有一些其他证书,这里就不多做介绍了,毕竟证书不是目的,更建议在掌握了Linux运维以及云原生基础的童鞋去参加腾讯云【燎原社】组织的线下技术实战营,更贴近企业的生产实践以及有大厂的架构师可以去深入交流。