DevOps那些事#关于kubernetes(k8s),这可能是讲的最通俗易懂的一次了

2020-05-20

Ann Ann

疫情快半年了,不少公司的招聘也已经Freeze了,但是不管招聘如何,技术的发展和对技术的升级渴望是一直存在。今天就讲讲DevOps里比较热门的k8s话题。坊间传说,搞懂k8s,可以赢取“白富美”。

 

想要了解k8S,我们先搞清楚Docker

 

回到2010年,几个搞IT的年轻人,在硅谷成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。

具体来说,是和LXC有关的容器技术。后来,dotCloud公司把自己的容器技术并命名为——Docker。

 

 

 

Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。

 

也许出于市场考虑,2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。Docker在行业变得非常火爆,也有更多的大厂给予强力支持。Docker火了后,把公司改成了Docker,也就是这个小海豚。

 

 

 

为啥Docker这么火爆,就是因为它很“轻”,提高了硬件效率。记得我之前做Network Engineer的时候,还当时需要了解Virtual Machine也就是虚拟机,玩游戏的小朋友可能有所听过 VMWare

 

虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。

 

 

大家需要注意,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。

 

想要搞懂Docker,其实看它的两句口号就行。

 

第一句,是“Build, Ship and Run”。

第二句口号就是:“Build once,Run anywhere(搭建一次,到处能用)”

Docker把容器变得标准化了。要理解Docker,你需要明白三个最主要的概念:容器、镜像、仓库。

- 容器是运行在虚拟机上的进程。

- 镜像是一种存储形式,可以理解为数据或应用的副本。

- 仓库是用来存储镜像的。

Docker能够普遍使用起来,很大程度上个得益于Docker的仓库里汇集了很多已经标准化的镜像,大大提升了部署效率。

Docker大规模使用后,就发现了一些现实存在的问题:编排、管理和调度各方面,发现都不是很容易,于是迫于管理需求,需要更高级更灵活的管理,

就在这个时候,K8S出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes

Kubernetes (简称k8s)近两年大火,如果你是一名云计算从业者,或者运维人员,还不了解kubernetes 的话那你已经OUT了。

Kubernetes是用于自动部署、扩展和容器化应用程序的开源系统。

当我们使用的容器服务多了,面临的访问量增大以后,我们就需要一种工具把这些容器统一的管理起来,需要实现对这些容器的自动部署、扩展和管理。也就是俗称的容器编排。

 

 

上图是Kubernetes的架构图。

从大的模块看,图中包含Master组件(APIs, scheduler, etc),Node节点和cloud端。

Master中,包含负责提供API服务的组件kube-apiserver;作为后台数据库的etcd,监听组件kube-scheduler;运行控制器的组件kube-controller-manager。

Node节点中包括运行在各个节点的客户端的kubelet,运行在各个节点的网络代理组件kube-proxy,支持运行容器底层环境的软件Container Runtime。

Cloud端作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展k8s集群云上动态扩展的特性。

 

 

如何上手使用 kubernetes

Kubernetes的安装

Kubernetes有很多种安装方法,这里就不一一介绍了。推荐三种主要的安装方法,感兴趣的朋友可以通过关键词搜索相关教程,按步骤尝试安装。如果遇到问题,可以在匠人的社群提问。

常见的三种安装方法:

- Kuberspray

- Kubeadm

- 手动安装

Kubernetes有哪些优势

为什么我们要用Kubernetes?因为它更省钱,更快,更省力。

Kubernetes和Docker都是开源的,这意味着你不需要支付高昂的授权费用;容器服务从启动到关停,比传统的服务器、虚拟机都要快捷很多;管理方面,Kubernetes提供一整套架构,管理方便,节省了运维的人力。

容器技术是未来发展的必然趋势。如果你从事开发、运维、云计算相关工作,一定要多多关注容器技术的发展。

K8S的架构,略微有一点复杂,我们简单来看一下。

一个K8S系统,通常称为一个K8S集群(Cluster)。

这个集群主要包括两个部分:

  • 一个Master节点(主节点)

  • 一群Node节点(计算节点)

 

一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod. 

Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

Kube-proxy,主要负责为Pod对象提供代理。

Fluentd,主要负责日志收集、存储与查询。

 

Pod 是一组紧密关联的容器集合,它们共享 PID、IPC、Network 和 UTS namespace,是 Kubernetes 调度的基本单位。Pod 内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

几个与Kubernetes相关的产品/概念

在Kubernetes的生产实践中,有这几个产品/概念建议你去了解:

Openshift:OpenShift是由Red Hat开发的容器化软件解决方案。他们的主要产品是OpenShift容器平台,这是由Kubernetes管理的平台即服务(PaaS)。

Amazon EKS:Amazon Elastic Kubernetes Service (Amazon EKS) ,这是一项完全托管的 Kubernetes 服务。EKS拥有原生的kubernetes体验,并与AWS其他的云服务无缝的结合,为用户提供极佳的云端容器体验。下期直播我们会着重介绍这个产品。

微服务:由于容器技术的发展,微服务的理念也越来越被人们接受。按照微服务的理念,如果使用容器作为基础设施,能够实现快速部署,快速迭代。很多时候大家会将微服务和容器技术一起谈论,甚至有些公司直接将自己的新建的微服务应用部署在容器平台上。

而采用容器之后,很可能只需要一台服务器,创建十几个容器,用不同的容器,来分别运行不同网元的服务程序。

这些容器,随时可以创建,也可以随时销毁。还能够在不停机的情况下,随意变大,随意变小,随意变强,随意变弱,在性能和功耗之间动态平衡。

 

简直完美!

 

5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。

文 A家小哥

资料来源

1. 光环云

2. 小枣君

 

有想了解DevOps到底干嘛的,可以观看我们的Youtube和B站

 

有想了解谷歌云GCP的,可以观看我们的Youtube和B站

 

有想了解澳洲IT职场薪水的,可以观看我们的Youtube和B站

 

想加入社群讨论,可以扫描二维码加入社群

近期开课hot

Python零基础入门

start2025/02/12 03:14 (Sydney)

Web全栈班24期 NodeJS方向

start2024/12/08 11:30 (Sydney)

logo

Follow Us

linkedinfacebooktwitterinstagramweiboyoutubebilibilitiktokxigua

We Accept

/image/layout/pay-paypal.png/image/layout/pay-visa.png/image/layout/pay-master-card.png/image/layout/pay-stripe.png/image/layout/pay-alipay.png

地址

Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)
Level 2, 171 La Trobe St, Melbourne VIC 3000
四川省成都市武侯区桂溪街道天府大道中段500号D5东方希望天祥广场B座45A13号
Business Hub, 155 Waymouth St, Adelaide SA 5000

Disclaimer

footer-disclaimerfooter-disclaimer

JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.

匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议

© 2017-2024 JR Academy Pty Ltd. All rights reserved.

ABN 26621887572