前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从入门到跑路之Kubernetes(一)

从入门到跑路之Kubernetes(一)

作者头像
周萝卜
发布2019-07-17 15:14:45
3350
发布2019-07-17 15:14:45
举报
文章被收录于专栏:萝卜大杂烩萝卜大杂烩

从今天开始,准备结合自己这段时间学习Kubernetes的进展,慢慢总结一些学习心得,就当是帮助自己成长吧

小鲸鱼有大能量

01.从PaaS到Docker

我们大家应该或多或少都知道PaaS,他是云计算的基础。但是,使用PaaS,用户就必须为每种语言,每种框架甚至每个版本的应用维护一个打好的包。这个打包过程,没有什么章法可循,而且还会经常出现莫名其妙的问题,你必须要摸清本地应用和远端PaaS匹配的“脾气”才能搞定。

相比于传统的PaaS系统,Docker的镜像功能从根本解决了应用打包的顽疾。所谓Docker镜像,其实就是一个压缩包。大多数Docker镜像是直接由一个完整的操作系统的所有文件和目录构成的,所以这个压缩包里的内容跟你本地开发和测试环境用的操作系统是完全一样的。这个压缩包赋予了你一种极其宝贵的能力:本地环境和云端环境的高度一致!这就是Docker镜像的精髓。

02.Docker依赖技术

容器其实是一种沙盒技术,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用于应用之间,就因为有了边界而不会相互干扰;而被装进集装箱的应用,也可以被整体移动。容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。Cgroups技术用来制造约束,Namespace技术用来修改进程试图。

1.Namespace,送你的障眼法

它其实只是Linux创建新进程的一个可选参数。在Linux系统中创建进程,就是调用clone(),int pid = clone(main_function, stack_size, SIGCHLD, null);

而在用clone()系统调用创建一个新进程时,可以在参数中指定CLONE_NEWPID参数,

int pid = clone(main_function, stack_size,CLONE_NEWPID | SIGCHLD, null);

这时新创建的这个进程将会“看到”一个全新的进程空间,在这个进程空间里,它的PID是1。当然,这个进程在宿主机真实的进程空间里,不会是1,还是他真正的PID。这样就达到了如下图效果,在Docker容器中只能看到在容器中运行的进程。就像下图一样:

除了上面说的PID Namespace之外,Linux系统还提供了Mount,UTS,IPC,Network和User这些Namespace。

总结:Docker其实就是在创建容器进程时,指定了这个进程所需要启用的一组Namespace参数。这样容器就只能看到当前Namespace所限定的资源、文件、设备、状态,或者配置。所以说,容器,其实只是一种特殊的进程。

2.Cgroups,不让容器过度膨胀

Cgroups的全称是Linux ControlGroup。最主要的作用,就是限制一个进程组能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等等。同时还可以对进程进行优先级设置、审计,还能将进程挂起和恢复等操作,Cgroups在Linux中提供的是文件操作接口。

运行Docker的时候,可以通过设置参数来限制容器能够使用的资源,例如:

docker run -d --name web42 --blkio-weight 100--memory 10M --cpu-quota 25000 --cpu-period 2000 --cpu-shares 30training/webapp python

03.Docker的弊端

首先,既然容器只是运行在宿主机上的一种特殊进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核。虽然我们可以在容器里通过Mount Namespace单独挂载其他不同版本的操作系统文件,比如CentOS或者Ubuntu,但这并不能改变共享宿主机内核的事实。所以,我们不能在Windows宿主机上运行Linux容器,或者是在低版本的Linux宿主机上运行高版本的Linux容器。

其次,在Linux内核中,有很多资源和对象是不能被Namespace化的,比如典型的:时间。比如在容器中修改了系统时间,宿主机的时间也会随之改变。

04. 下期预告

当然以上还只是Docker最核心最基础的技术,在下次的文章会继续介绍Docker镜像原理,Volume和Overlay等技术,都是个人的一些学习心得,希望能够和大家一起成长,毕竟在现在这个AI大潮中,我们也不能落下啊!!

如果喜欢我的文章,那就关注我吧!

万分感谢!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档