这篇文章主要聊聊Kubernetes(大家常叫k8s)的一些事儿。我会说说k8s到底是干嘛的,它用啥语言写的,是谁搞出来的,还会提到学习k8s开发、Operator、API的教程和培训,介绍下它的管理界面(Dashboard),最后也谈谈网上关于“k8平台”是不是传销的疑问,以及用k8s到底有啥好处。
k8s干嘛的
简单说,k8s就是个管理大量容器应用的大管家。比如你有很多个用Docker打包的服务,手动管起来太麻烦,k8s能帮你自动部署、扩容和维护。它让应用跑得更稳当,不容易挂掉。
它主要管那些微服务架构的应用,把一个个服务实例放在容器里,然后k8s来调度它们在哪台机器上跑。这样运维就不用老盯着单个服务器了,省心不少,算是云原生里的一个核心工具。
不过刚开始学可能觉得概念太多,什么Pod、Deployment的,有点绕。需要花点时间熟悉,但用熟了之后,对于部署复杂应用确实方便。
k8s用什么语言开发的
k8s的核心部分,主要是用Go语言(也叫Golang)写的。Go是谷歌推出的一门编程语言,特点是编译快、执行效率也不错,挺适合写这种分布式系统。
选择Go语言,一方面是因为它天生对并发处理支持得好,k8s需要管理很多节点同时工作。另一方面,它的部署比较简单,生成一个二进制文件就能跑,依赖少。
当然,k8s生态里也有很多其他语言写的工具和插件,但最核心的组件,像API Server、Controller Manager这些,都是Go的天下。学k8s开发的话,懂点Go会很有帮助。
k8s谁开发的
k8s最初是谷歌公司内部搞的一个项目,灵感来自他们用了很久的Borg系统。大概在2014年左右,谷歌把它开源了,贡献给了云原生计算基金会(CNCF)。
所以不能说是某一个人开发的,是一个团队智慧的结晶。开源之后,很多其他公司像红帽、微软、IBM也都积极参与进来,共同维护和发展。
现在它已经成了一个社区驱动的热门项目,不再是谷歌一家说了算。版本更新很快,功能也越来越多,社区非常活跃。
k8s开发培训
现在市面上k8s开发培训挺多的,有在线的也有线下的。培训内容一般会从基础概念讲起,然后教你怎么写YAML文件,再到用客户端库去操作k8s。
好的培训会带着做点实战项目,比如自己写个简单的控制器或者Operator。价格从免费到几千上万的都有,得自己甄别一下,有些可能讲得比较浅。
建议先找些免费的入门教程看看,觉得真的需要系统学再报付费的。关键是自己多动手实践,光听课不练的话,很容易就忘了。
k8s开发课
“k8s开发课”和培训有点像,可能更偏重某一专项技能,比如专门讲Operator开发或者API编程的。有些是大学里的课程,有些是培训机构的系列课。
这些课程通常会深入一点,要求你已经有点k8s基础了。可能会讲怎么用Go语言调用k8s的客户端库,去监听事件、处理状态变化这些。
学习资源在B站、Coursera、Udemy这些平台上都能找到一些。最好看看课程大纲和评价,选个适合自己的。
k8s operator 开发指南
Operator是k8s里一种扩展方式,用来管理有状态应用或者复杂软件。开发指南会教你用Operator SDK这样的框架,来自动化应用的管理任务。
大致步骤是:先定义自定义资源(CRD),然后写Reconcile逻辑,告诉Operator怎么让实际状态达到你期望的状态。这需要你对Go和k8s控制器原理有一定了解。
网上有一些不错的开源Operator例子,比如etcd-operator,可以看看源码是怎么写的。自己动手写一个简单的Operator是学习的好方法。
k8s api开发教程
k8s的所有操作,本质上都是通过它的REST API来完成的。API开发教程就是教你怎么用编程语言(比如Go、Python)去调用这些API。
教程一般会先教你如何配置认证(kubeconfig),然后用官方客户端库去列出Pod、创建Deployment等等。也会讲怎么直接使用Raw HTTP请求,不过那样更麻烦。
理解了API,你就能自己写工具来管理k8s集群,或者集成到自己的运维系统里。这是做k8s二次开发的基础。
k8sdashboard界面介绍
Dashboard是k8s的一个官方Web管理界面,装上之后可以通过浏览器直观地看到集群里跑了啥。能查看节点、Pod、服务的状态,还能看日志和简单的监控图表。
对于不熟悉命令行的新手来说,Dashboard是个不错的起点,点点鼠标就能完成一些基本操作,比如部署个应用、伸缩一下副本数。
但它功能肯定没命令行强大,复杂操作还是得用kubectl。而且要注意安全,默认安装可能权限太大,生产环境要小心配置访问权限。
k8s好处
用k8s最大的好处是能轻松管理大规模容器应用,实现自动化运维。比如服务挂了能自动重启,流量大了能自动加实例,硬件资源也能更充分利用。
它让应用的部署和更新变得标准化和可重复,用声明式的YAML文件描述你想要的状态,k8s负责帮你达成。这有利于DevOps实践和持续交付。
当然,它也不是银弹,本身比较复杂,学习成本高,对小型简单应用可能有点杀鸡用牛刀。但对于需要弹性伸缩、高可用的现代应用架构,优势很明显。
k8平台是传销吗
首先得澄清,“k8s”和网上有时出现的“k8平台”可能不是一回事。Kubernetes(k8s)是一个正经的开源技术项目,绝对不是传销。
但有些不法分子可能会打着“K8”、“区块链”、“云计算投资”之类的旗号,搞一些高回报诱饵的资金盘,那种就需要高度警惕,很可能就是传销或诈骗。
所以,如果你听到的“k8平台”是让你投钱、拉人头、承诺高额静态收益,那基本可以断定有问题。而学习、使用开源的k8s技术是完全合法且有益的,别搞混了。