Kubernetes入门实战
Kubernetes,作为事实上的云原生操作系统,不管你从事哪个开发岗位,在现在这个云原生时代,它都是一个绕不过去的产品,是我们工作中迟早要面对的“坎儿”。
毕竟现代应用是围绕着容器来开发、部署和运行的,使用容器就必然要用到容器编排技术,现在,只有唯一的选项——Kubernetes。
但是,Kubernetes 因为其技术栈的特点,学习门槛相当高,初学者可能花费了大量时间却收效甚微:
- 涉及的应用领域太广,找不到合适的学习路径;
- 每个具体方向的技术背景太深,很多概念太抽象;
- 用到的技术新,版本变动快,实现比较杂乱,搞不明白;
- 不知道怎么搭建出 Kubernetes 环境,空有理论,动手还是不会。
为此,我们邀请罗剑锋老师开设了这门 Kubernetes 入门实战课,他以自己的学习经历为基础,融合踩坑经验和心得技巧,整理出了一个初学者非常友好的由浅入深、由易到难的 Kubernetes 知识体系,让你顺利高效地迈入 Kubernetes 的宏伟殿堂。

迎难而上,做云原生时代的弄潮儿
你好,我是罗剑锋,不过更愿意你称呼我“Chrono”。
先来简单介绍一下我自己吧。作为一个有着近二十年工作经验的“技术老兵”,我一直奋斗在开发第一线,从Windows到Linux、从硬件到软件,从单机到集群、云,开发了各种形式的应用,也经历了许多大小不一的公司,现在是在API管理和微服务平台公司Kong,基于Nginx/OpenResty研发Kong Gateway、Kong ingress Controller等产品。
其实我应该算是极客时间的老朋友了,在2019年开了《透视HTTP协议》的课程,在2020年开了《C++实战笔记》的课程,然后因为工作上的事情比较多,“消失”了近两年的时间。
不过这段日子里我倒没有“两耳不闻窗外事”,而是一直在关注业界的新技术新动向,所以今天,我再次回到了极客时间的这个大讲堂,想和你聊聊如今风头正劲的Kubernetes。
现在的Kubernetes
你一定听说过Kubernetes吧,也许更熟悉一点的,是许多人总挂在嘴边的缩写——“K8s”。
自从2013年Docker诞生以来,容器一跃成为了IT界最热门的话题。而Kubernetes则趁着容器的“东风”,借助Google和CNCF的强力“背书”,击败了Docker Swarm和Apache Mesos,成为了“容器编排”领域的王者至尊。
换一个更通俗易懂的说法,那就是:现在Kubernetes已经没有了实际意义上的竞争对手,它的地位就如同Linux一样,成为了事实上的云原生操作系统,是构建现代应用的基石。
毕竟,现代应用是什么?是微服务,是服务网格,这些统统要围绕着容器来开发、部署和运行,而使用容器就必然要用到容器编排技术,在现在只有唯一的选项,那就是Kubernetes。
不管你是研发、测试、还是运维,不管你是前台、后台、还是中台,不管你用的是C++、Java还是Python,不管你是搞数据库、区块链、还是人工智能,不管你是从事网站、电商、还是音视频,在这个“云原生”时代,Kubernetes都是一个绕不过去的产品,是我们工作中迟早要面对的“坎儿”。
你也许会有疑惑:我现在的工作和“云”毫不沾边,而且Kubernetes都“火”了这么久,现在才开始学,会不会有点晚了?值不值呢?
这里我就要引用一句老话了:“艺多不压身”,还有另一句:“机遇总是偏爱有准备的人”。
“云原生”已经是现在IT界的普遍共识,是未来的大势所趋。也许这个“浪潮”暂时还没有打到你这里来,但一旦它真正来临,只有你提前做好了知识储备,才能够迎难而进,站上浪头成为“弄潮儿”,否则就可能会被“拍在沙滩上”。
我和你说一下我自己的亲身经历吧。
早在Docker和Kubernetes发布之初,我就对它们有过关注。不过因为我的主要工作语言是C/C++,而Docker和Kubernetes用的都是Go,当时Go的性能还比较差(比如垃圾回收机制导致的著名Stop the World),所以我只是简单了解了,没有去特别研究。
过了几年,一个偶然的机会,我们要在客户的环境里部署自研应用,但依赖库差异太大,很难搞定。这个时候我又想起了Docker,经过一个多星期的折腾,艰难地啃下了一大堆资料之后,总算是把系统正常上线了。
虽然任务完成了,但也让我意识到自己从前对Docker的轻视是非常错误的,于是就痛下决心,开始从头、系统地学习整理容器知识,之后也就很自然地搭上了Kubernetes这条“大船”。
再后来,我想换新工作,面试的时候Boss出了道“偏门”题,讲Kubernetes的容器和环境安全。虽然我不熟悉这个方向,但凭借着之前的积累,只用了一个晚上就赶出了20多页的PPT,第二天面对几位评委侃侃而谈,最终顺利拿下了Offer。
你看,如果我当时一味固执己见,只呆在自己的“舒适区”里,不主动去学习容器技术和Kubernetes,当机遇不期而至的时候,很可能就会因为手足无措而错失了升职加薪的良机。
所以也希望你不要犯我当初的错误,我们应当看清楚时代的走向,尽可能超前于时代,越早掌握Kubernetes,将来自己成功的几率就越大。
学习Kubernetes有哪些难点
那么,我们应该怎么来学习Kubernetes呢?
其实今天学习Kubernetes的难度,比起前几年来说,已经是极大地下降了,网上资料非常多,有博客、专题、视频等各种形式,而且Kubernetes为了推广自身,在官网上还放出了非常详细的教程和参考手册,只要你肯花时间,完全可以“自学成才”。
不过,“理想很丰满,现实很骨感”。理论上讲,学习Kubernetes只要看资料就足够了,但实际情况却是学习起来仍然困难重重,我们会遇到很多意想不到的问题。
这是因为Kubernetes是一个分布式、集群化、云时代的系统,有许多新概念和新思维方式,和我们以往经验、认知的差异很大。
我觉得,Kubernetes技术栈的特点可以用四个字来概括,那就是“新、广、杂、深”。
- “新”是指Kubernetes用到的基本上都是比较前沿、陌生的技术,而且版本升级很快,经常变来变去。
- “广”是指Kubernetes涉及的应用领域很多、覆盖面非常广,不太好找到合适的切入点或者突破口。
- “杂”是指Kubernetes的各种实现比较杂乱,谁都可以上来“掺和”一下,让人看的眼晕。
- “深”是指Kubernetes面对的每个具体问题和方向,都需要有很深的技术背景和底蕴,想要吃透很不容易。
这四个特点就导致Kubernetes的“门槛”相当高,学习曲线非常陡峭,学习成本非常昂贵,有可能花费了大量的时间和精力却南辕北辙、收效甚微,这点我确实是深有体会。
比如在初学的过程中我就遇到过这些疑问,不知道你有没有同感:
- Docker、Containerd、K8s、K3s、MicroK8s、Minikube……这么多项目,该如何选择?
- 容器的概念太抽象了,怎么才能够快速准确地理解?
- 镜像的命名稀奇古怪,里面的“bionic”“buster”等都是什么意思?
- 不知道怎么搭建出Kubernetes环境,空有理论知识,无法联系实际。
- YAML文件又长又乱,到哪里能找到说明,能否遵循什么简单规律写出来?
- Pod、Deployment、StatefulSet……这么多的对象,有没有什么内在的脉络和联系?
遗憾的是,这些问题很难在现有的Kubernetes资料里找到答案。
我个人感觉,它们往往“站得太高”,没有为“零基础”的初学者考虑,总会预设一些前提,比如熟悉Linux系统、知道编程语言、了解网络技术等等,有时候还会因为版本过时而失效,或者是忽略一些关键的细节。
这就让我们初学者经常“卡”在一些看似无关紧要却又非常现实的难点上,这样的点越积越多,最后就让人逐渐丧失了学习Kubernetes的信心和勇气。
所以,我就想以自己的学习经历为基础,融合个人感悟、经验教训和心得技巧,整理出一个初学者面对Kubernetes这门新技术的入门路线和系统思路,让你在学习时有捷径可走,不再有迷茫和困惑,能快速高效地迈入Kubernetes的宏伟殿堂。
在这个专栏里你会怎么学习Kubernetes
讲到这里,你一定很想知道,这个专栏有什么特点,和别的课程有哪些不一样,结合刚才讲的Kubernetes技术栈四个特点“技术新、领域广、实现杂、方向深”,我来仔细说一说我的想法和考量。
- 第一,没有太多前提,不会Go你也可以学。
在这门课里,我不会要求你学习Go语言,也不会去讲Kubernetes的源码。
虽然是研发出身,但我并没有特别深入地了解Go语言,但是,我认为这反而是一个优势。因为面对Kubernetes的时候我和你是“平等”的,不会“下意识”地去从源码层次来讲解它的运行原理,更能够设身处地为你着想。
讲源码虽然会很透彻,但它的前置条件实在是太高了,不是所有的人都具备这个基础的。为了学习Kubernetes要先了解Go语言,有点“本末倒置”,如同钱钟书老先生所说:“如果你吃了个鸡蛋,觉得味道不错,何必去认识那个下蛋的母鸡呢?”(我觉得这方面也可以对比一下Linux操作系统,它是用C语言写的,但几乎没有人要求我们在学习Linux之前需要事先掌握C语言。)
不过如果你真想做Kubernetes开发,等学会了Kubernetes的基本概念和用法,再回头去学Go语言也完全来得及。
- 第二,这个专栏我会定位在“入门”,也就是说,不会去讲那些高深的大道理和复杂的工作流程,语言也尽量朴素平实,少用专业术语和缩略词。
毕竟Kubernetes系统涉及的领域太过庞大,对于初次接触的人来说直接“抠”内部细节不太合适,那样很容易会“跑偏”“钻牛角尖”。
我觉得学习Kubernetes最好的方式是尽快建立一个全局观和大局观,等到你对这个陌生领域的全貌有了粗略但完整的认识之后,再挑选一个自己感兴趣的方向去研究,才是性价比最高的做法。
而且前面也说过,Kubernetes版本更新很快,有的功能点或许一段时间之后就成了废弃的特性(比如ComponentStatus在1.19被废弃、PodSecurityPolicy在1.21被废弃),如果讲得太细,万一今后它过时无用,就实在是太尴尬了。
- 第三,课程会以实战为导向,强调眼手脑结合,鼓励你多动手、多实际操作,我认为这是这个课程最大的特点。
Kubernetes一般每年都会发布一个大版本,大版本又会有很多的小版本,每个版本都会持续改进功能特性,但一味求新,不符合当前的实际情况,毕竟生产环境里稳定是最重要的。
所以,我就选择了今年(2022年)初发布的Kubernetes 1.23.3,它是最后一个支持Docker的大版本,承上启下,具有很多的新特性,同时也保留了足够的历史兼容性,非常适合用来学习Kubernetes。
在课程里,我会先从Docker开始,陆续用minikube、kubeadm搭建单机和多机的Kubernetes集群环境,在讲解概念的同时,还会给出大量的docker、kubectl操作命令,让你能够看完课程后立即上手演练,用实际操作来强化学习效果。
- 第四,具体到每一节课上,我不会“贪大求全”,而是会“短小精悍”,做减法而不是加法,力争每节课只聚焦在一个知识点。
这是因为Kubernetes涉及的领域太广了,它的知识结构是网状的,之间的联系很密切,在学习时稍不注意就会跳跃到其他的地方,很容易“发散”“跑题”,导致思维不集中。
所以我在讲解的时候会尽量克制,把每节课收束在一个相对独立的范围之内,不会有太多的外延话题,也不会机械地罗列API、命令参数、属性字段(这些你都可以查阅Kubernetes文档),在讲解复杂的知识点时还会配上图片,让你能够精准地理解吸收知识。
比如Pod等众多API对象之间的关系一直是学习Kubernetes的难点,单用文字很难解释清楚,所以我画了很多图,帮助你形象地理解它们的联系。就像这张:

因为每一讲都聚焦在一个知识点上,专栏的整个结构,我也梳理出了一条独特路线:把Kubernetes的知识点由网状结构简化成了线性结构,你可以在这条路线上循序渐进,由浅入深、由易到难地学习完整的Kubernetes知识体系。
专栏的线性结构是什么样的
从这些设想出发,我把专栏主要划分成了五个模块。
- 课前准备
在正式学习前首先有一节课前准备,这也是我写专栏的惯例了,会跟你说一下我们学习的实验环境,用虚拟机软件搭建出一个Linux系统,为零基础的同学扫除一些非常简单但是其他地方可能没有讲到的后顾之忧。
- 入门篇
我会用最流行的Docker来讲解Kubernetes的基础技术:容器,让你了解它的基本原理,熟悉常用的Docker命令,能够轻松地拉取、构建镜像,运行容器,能够使用容器在本机搭建开发测试环境。
- 初级篇
在具备了容器的知识之后,我们就可以来学习Kubernetes了,用的是单机环境minikube。你会了解为什么容器会发展到容器编排,Kubernetes解决了什么问题,它的基本架构是什么样子的,再学习YAML语言、核心对象Pod,还有离线业务对象Job/CronJob、配置信息对象ConfigMap/Secret。
- 中级篇
我们会在“初级篇”的基础上更进一步,使用kubeadm搭建出一个多节点的集群,模拟真实的生产环境,并介绍Kubernetes里的4个重要概念:Deployment、DaemonSet、Service、Ingress。学习了这些对象,你就能够明白Kubernetes的优点、特点是什么,知道为什么它能够一统天下,成为云原生时代的操作系统。
- 高级篇
经过前面几个模块的学习,你就已经对Kubernetes有了比较全面的认识了,所以我会再讲解一些深层次知识点和高级应用技巧,包括持久化存储、有状态的对象、应用的滚动更新和自动伸缩、容器和节点的管理等等。
当然,这种纯线性学习也难免会有缺点,我也会用其他的形式来补充完善,让你的学习过程更丰富多样,比如每一讲后面的知识小贴士、互动答疑。
在专栏的中后期,我还会为你准备一些“加餐”,讲讲Kubernetes相关的一些“花边逸闻”,比如docker-compose、CNCF、API Gateway等等,扩展一些虽然是外围但也很有实际意义的知识。
前面说过要多动手实践,为了强化实战效果,每个模块的知识点学完后,我都会安排一节实战演练课和一节视频课:
- 实战课,我们会应用模块中学习的知识,来实战搭建WordPress网站,你可以跟着课程一路走下来,看着它如何从单机应用演变到集群里的高可用系统的。
- 视频课,我会把这个模块里大部分重要的知识点都实机操作演示给你看,相信通过“文字+图片+音频+视频”的多种形式,你的学习一定会非常充实而满足。
你的Kubernetes之旅马上就要开始了,我再送你一张课程的知识地图,希望你能够在今后的三个月里以它为伴,用努力与坚持去浇灌学习之花,收获丰硕的知识和喜悦之果!
课前准备 动手实践才是最好的学习方式
你好,我是Chrono,今天我们的任务是搭建实验环境。
如果你看过我的另外两个极客时间专栏(《透视HTTP协议》和《C++实战笔记》)就会知道,我一直都很强调实验环境的重要程度,毕竟计算机这门学科的实践性要大于理论性,而且有一个能够上手操作的实际环境,对学习理论也非常有帮助。
落到我们的这个Kubernetes学习课上,实验环境更是必不可少的,因为和网络协议、编程语言不同,Kubernetes是一个更贴近于生产环境的庞大系统,如果“光说不练”,即使你掌握了再多的知识,但不能和实际相结合,也只能是“纸上谈兵”。
俗话说:“工欲善其事,必先利其器”,所以在正式学习之前,我们必须要有一个基本的实验环境,要能够在环境中熟悉Kubernetes的操作命令、验证测试Kubernetes的各种特性,有这样的“帮手”作为辅助,我们的学习才能够事半功倍。
选择什么样的实验环境
但想要得到一个完整的Kubernetes环境不那么容易,因为它太复杂了,对软硬件的要求都比较高,安装部署过程中还有许多的小细节,这些都会成为学习过程中的“拦路虎”。
那么,应该怎么搭建出符合我们要求的实验环境呢?
你也许会说:现在的云厂商到处都是,去网上申请一个就好了。
这也许是一个比较便捷的获取途径,不过我有一些不同的意见。
首先,这些网上的“云主机”很少是免费的,都需要花钱,而且想要好配置还要花更多的钱,对于我们的学习来说性价比不高。其次,“云主机”都是在“云”上,免不了会受网络和厂商的限制,存在不稳定因素。再次,这些“云主机”都是厂商已经为我们配好了的,很多软硬件都是固定的,不能随意定制,特别是很难真正“从零搭建”。
考虑上面的这三点,我建议还是在本地搭建实验环境最好,不会受制于人,完全自主可控。
不过,Kubernetes通常都运行在集群环境下,由多台服务器组成,难道我们还要自己置办几台电脑来组网吗?
这倒大可不必。因为现在的虚拟机软件已经非常成熟可靠了,能够在一台电脑里虚拟出多台主机,这些虚拟主机用起来和真实的物理主机几乎没有什么差异,只要你的电脑配置不是太差,组成一个三四台虚拟服务器的小集群是毫无问题的,而且虚拟机的创建删除都非常简单,成本极低。
使用虚拟机软件还有一点额外的好处,由于很多云服务商内部也在大量使用虚拟服务器,Kubernetes里的容器技术也与虚拟机有很多相似之处,通过使用虚拟机,我们还能顺便对比这些技术的异同点,加深对Kubernetes的理解。
所以综合来看,我建议你挑选一台配置不算太差的笔记本或者台式机,在里面使用虚拟机来搭建我们这门课程的实验环境。
作为宿主机电脑的CPU和硬盘的要求不高,4核、300G就可以了,关键是内存要足够大,因为虚拟机和Kubernetes都很能“吃”内存,最少要有8G,这样起码能够支持开两个虚拟机组成最小的集群。
选择什么样的虚拟机软件
确定了我们的实验环境大方向——虚拟机之后,我们就要选择虚拟机软件了。
目前市面上的主流虚拟机软件屈指可数,所以选择起来并不算困难,我个人推荐的有两个:VirtualBox和VMWare Fusion。
我们先讲适用面广的VirtualBox。
VirtualBox是Oracle推出的一款虚拟机软件,历史很悠久,一直坚持免费政策,使用条款上也没有什么限制,是一个难得的精品软件。
VirtualBox支持Windows和macOS,但有一个小缺点,它只能运行在Intel(x86_64)芯片上,不支持Apple新出的M1(arm64/aarch64)芯片,这导致它无法在新款Mac上使用,不得不说是一大遗憾。
所以,如果你手里是Apple M1 Mac,就只能选择其他的虚拟机软件了。在macOS上,虚拟机最出名的应该是Parallel Desktop和VMWare Fusion这两个了,都需要付费。这里我比较推荐VMWare Fusion。
不过对于VMWare Fusion来说,它对M1的支持进展比较迟缓,所以在正式的付费版出来之前,公布了一个“技术预览版”,是完全免费的,而且功能、性能也比较好,虽然有使用时间的限制(大约300天),但对于我们的学习来说是足够了。
这里我给出VirtualBox(Downloads – Oracle VirtualBox)和VMWare Fusion(https://communities.vmware.com/t5/Fusion-for-Apple-Silicon-Tech/ct-p/3022)的网址,你可以课后去看一下,尽快下载。
选择哪种Linux发行版
有了虚拟机软件之后,我们就要在上面安装操作系统,在这方面毫无疑问只能是Linux,因为Kubernetes只能运行在Linux之上。
不过麻烦的是,Linux世界又分裂成很多不同的发行版,流行的有CentOS/Fedora、 Ubuntu/Debian、SUSE等等,没有一个占据绝对统治地位的系统。

那选哪个比较好呢?
我们的主要目的是学习,所以易用性应该是首要关注点,另外系统还应该能够同时支持x86_64和arm64。筛选下来我建议选择Ubuntu 22.04 Jammy Jellyfish 桌面版(Download Ubuntu Desktop | Ubuntu),它有足够新的特性,非常适合运行Kubernetes,而内置的浏览器、终端等工具也很方便我们的调试和测试。
但对Apple M1用户来说,有一个不太好的消息,Ubuntu 22.04在内核由5.13升级到5.15的时候引入了一个小Bug,导致VMWare Fusion无法正常安装启动,这个问题直到4月份的正式版发布还没有解决。
好在我当初为了测试,下载了一个较早的“daily build”版本,它可以在VMWare Fusion里正常安装,我把它上传到了云盘(阿里云盘分享),你可以下载后使用。
需要注意一点,由于网站的限制,文件的后缀名被改成了 .mov ,你必须去掉这个后缀,还原成原始的 .iso 才能使用。
如何配置虚拟机
准备好虚拟机软件和Ubuntu光盘镜像之后,我们就可以来安装虚拟机了。不过在安装之前,我们必须要把虚拟机适当地配置一下。
因为Kubernetes不是一般的应用软件,而是一个复杂的系统软件,对硬件资源的要求有一点高,好在并不太高,2核CPU、2G内存是最低要求,如果条件允许,我建议把内存增大到4G,硬盘40G以上,这样运行起来会更流畅一些。另外,一些对于服务器来说不必要的设备也可以禁用或者删除,比如声卡、摄像头、软驱等等,可以节约一点系统资源。

由于Linux服务器大多数要以终端登录的方式使用,多台服务器还要联网,所以在网络方面我们还需要特别设置。
前面说虚拟机软件首选VirtualBox,Apple M1 Mac备选VMWare Fusion技术预览版,这里我也分别说下两个软件的不同设置。
对于VirtualBox,首先,你需要在“工具 - 网络”里创建一个“Host-only”的网络,IP地址段随意,比如这里就使用了它自动分配的“192.168.56.1/24”:

然后,在虚拟机的配置里,你需要启用两个网卡。“网卡1”就设置成刚才创建的“Host-only”网络,它是我们在本地终端登录和联网时用的;而“网卡2”是“网络地址转换(NAT)”,用来上外网:

对于VMWare Fusion,你需要在“偏好设置-网络”里,添加一个自定义的网络,比如这里的“vmnet3”,网段是“192.168.10.0”,允许使用NAT连接外网,然后在虚拟机的网络设置里选用这个网络:


如何安装虚拟机
把CPU、内存、硬盘、网络都配置好之后,再加载上Ubuntu 22.04的光盘镜像,我们就可以开始安装Linux了。
在安装的过程中,为了节约时间,建议选择“最小安装”,同时物理断网,避免下载升级包。注意,断网对于Apple M1来说特别重要,否则Ubuntu会自动更新到5.15内核,导致安装后无法正常启动。
安装完Linux系统之后,我们还要再做一些环境的初始化操作。
首先我们需要用 Ctrl + Alt + T 打开命令行窗口,然后用 apt 从Ubuntu的官方软件仓库安装git、vim、curl等常用工具:
sudo apt update sudo apt install -y git vim curl jq
Ubuntu 桌面版默认是不支持远程登录的,所以为了让后续的实验更加便利,我们还需要安装“openssh-server”,再使用命令 ip addr ,查看虚拟机的IP地址,然后就可以在宿主机上使用 ssh 命令登录虚拟机:
sudo apt install -y openssh-server ip addr

从这个截图里可以看到,这台VirtualBox虚拟机有3个网卡,其中名字是“enp0s3”的网卡就是我们之前配置的“192.168.56.1/24”网段,IP地址是自动分配的“192.168.56.11”。
如果你对自动分配的IP地址不是很满意,也可以在Ubuntu右上角的系统设置里修改网卡,把它从动态地址(DHCP)改成静态地址(Manual),具体的参数可以参考下面的截图,重启后新的IP地址就生效了。


这些工作完成之后,我建议你再给虚拟机拍个快照,做好备份工作,这样万一后面有什么意外发生环境被弄乱了,也可以轻松回滚到拍快照时的正确状态。

现在,让我们启动一个命令行终端(我用的是Mac里的“iTerm2”),使用 ssh ,输入用户名、密码和IP地址,就能够登录创建好的虚拟机了:

有哪些常用的Linux操作
到这里,我们的实验环境就算是搭建完毕了,虽然目前只有最基本的Linux系统,但在后面的“入门篇”“初级篇”“中级篇”里,我们会以它为基础逐步完善,实现完整的Kubernetes环境。
特别提醒一下,因为Kubernetes基于Linux,虽然也有图形化的Dashboard,但更多的时候都是在命令行里工作,所以你需要对基本的Linux操作有所了解。
学习Linux操作系统是另外一个很大的话题了,虽然它很重要,但并不是我们这门课的目标,我这里简单列一些比较常用的知识,你可以检测一下自己的掌握程度,如果有不了解的,希望你课后再查找相关资料补上这些点:
- 命令行界面称为“Shell”,支持交互操作,也支持脚本操作,也就是“Shell编程”。
- root用户有最高权限,但有安全隐患,所以通常我们都只使用普通用户身份,必要的时候使用
sudo来临时使用root权限。 - 查看系统当前进程列表的命令是
ps,它是Linux里最常用的命令之一。 - 查看文件可以使用
cat,如果内容太多,可以用管道符|,后面跟more、less。 - vim是Linux里最流行的编辑器,但它的使用方式与一般的编辑器不同,学习成本略高。
- curl能够以命令行的方式发送HTTP请求,多用来测试HTTP服务器(例如Nginx)。
小结
好了,我们的课前准备就要结束了,我再简单小结一下今天的要点内容:
- 一个完善的实验环境能够很好地辅助我们的学习,建议在本地使用虚拟机从零开始搭建Kubernetes环境。
- 虚拟机软件可以选择VirtualBox(intel芯片)和VMWare Fusion(Apple M1芯片),因为Kubernetes只能运行在Linux上,建议选择最新的Ubuntu 22.04。
- 虚拟机要事先配置好内存、网络等参数,安装系统时选最小安装,然后再安装一些常用的工具。
- 虚拟机都支持快照,环境设置好后要及时备份,出现问题可以随时回滚恢复,避免重复安装系统浪费时间。

在今天的整个搭建过程中,虚拟机设置很关键,这里我也特地录制了一段视频供你更直观地对照参考:
另外,我写专栏的惯例是在GitHub上开一个配套的学习项目,这门课程的仓库就叫“k8s_study”(GitHub - chronolaw/k8s_study: Follow me to study Docker/Kubernetes · GitHub),里面有文档链接、安装脚本、测试命令、YAML描述文件等等,你可以克隆下来在后续的课程中参照着学习。
课下作业
最后是课下作业时间,请实际动手操作,在你自己的电脑上用虚拟机搭建出Linux实验环境,为下一节课正式学习Docker做好准备。
欢迎在下方留言区和其他同学一起积极参与讨论,如果在搭建过程中有疑问也欢迎留言,我会第一时间给你回复。

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)