用K8S解决容器的混乱(下)
Kubernetes编排
Kubernetes(K8S)是一个开源容器编排系统,它使用期望状态理念来运行所有的应用程序容器。Kubernetes是由Google创建的,旨在集合工程师们在过去10年中构建自己容器编排系统(Brog)所获得的经验。Kubernetes不是这个系统的端口或转换。相反,它本意是尝鲜,开始就想避免错误并分享经验。它从与RedHat、CoreOS、IBM、Mesosphere和Microsoft的合作中受益匪浅。
Kubernetes有很多组件,下面探讨一些最为重要的。
容器
容器是Kubernetes中的“亚原子”组件,这意味着你不会只运行一个容器,因为它们必须在一个称为pod的控制结构中运行。但是你可以用与在Docker中一样的方式,来基于Dockerfiles运行Docker映像。我经常用Makefiles在Docker中运行一个容器来进行开发,然后将它启动到Kubernetes中进行生产。
Pod
Pod是Kubernetes的“原子”单位。Kubernetes的其他组件启动一个或多个pod,或将一个或多个pod连接到网络。Pod由一个或多个容器组成。在同一个pod中运行的容器共享磁盘、本地主机、安全上下文和一些其他属性。
部署
部署是运行一个或多个pod的控制结构。Pod本身不具有期望状态的概念。部署通过创建副本来管理pod组的期望状态。例如,如果你需要三个这样的pod,总有三个pods运行。部署还管理pod的更新。
服务
服务将临时pod连接到需要长时间运行的内部或外部进程,例如API端点或MySQL主机。假设你有三个pod运行Web服务器容器,并且需要一种方法将请求从公共Internet路由到容器,你可以通过设置一个使用负载均衡器将请求从公共IP地址路由到其中一个容器的服务来实现。给pods一个“Web服务器”的标签,然后在服务定义中说:“服务使用任何标签为Web服务器的容器的端口80”。
Kubernetes将使用公共负载均衡器在所选容器之间划分流量。对于只想要暴露给Kubernetes应用程序其他部分(例如数据库服务器)的主机,也可以私下进行此操作。
总结
总而言之,要在Kubernetes上提供一个简单的Web前端,你将:
- 配置Docker映像
- 配置引用该映像的部署
- 运行部署以根据该映像启动一组pod副本集
- 配置引用pod的服务
- 使用公共负载均衡器运行服务
Kubernetes并非解决上述问题的唯一解决方案。 Docker Swarm、Amazon Container Service和Mesosphere也是可选的方案。但值得强调的是,Kubernetes有一个活跃的开源贡献者社区、强大的架构以及在许多商业云上运行的能力,此外,它运行在裸机上。
编译:Jonathan Zhang
作者:claire jin
来源:https://opensource.com/life/16/9/containing-container-chaos-kubernetes
K8S技术社区当前有两大技术推广平台,K8S技术社区官方网站(www.k8s.cn)和K8S技术社区微信公众平台(kubernetescn),我们欢迎广大K8S技术同好们关注支持,也希望集合K8S技术极客进群交流(筒子们后台留言微信号!),有任何建议或问题都可以随时与我们取得沟通(admin@k8s.cn),感谢支持!
本文转移K8S技术社区-用K8S解决容器的混乱(下)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
用Kubernetes解决容器的混乱(上)
存在的问题。你需要精心准备比Dockerfiles更多的东西来将其应用于生产——管理所有容器的容器编排系统。 问题 让我们来看一个相对简单的应用程序,一个使用PHP和MySQL的、数据库驱动的Web应用程序。你想到的第一个解决方案可能是分解所有HTTP职责,例如将API和前端用户界面(UI)投放到一个容器中,将所有后端存储投放到另一个容器中。 那么,你看下面两个图: 如果要扩展这个架构,很容易,你可以添加前端容器的更多副本。 接下来的两个图显示具有单个后端的单个前端,以及具有单个后端的多个前端: 这时有人过来告诉你这不是好的微服务架构。他是对的,因为你真的需要分担责任。从同一个容器提供PHP驱动的API和HTML / JS / CSS UI不是最佳做法。 最好将它们分成两个容器: PHP和NGINX提供API NGINX提供HTML / JS / CSS 还有人指出,在临时容器上运行MySQL持久性数据存储是次优的,因为当容器关闭时你就丢失了数据。 要解决这个问题,你可以向位于该容器外部的一个容器添加持久存储卷。 运行MySQL的容器可以关闭而不会带走你的数据。 现在,你可以扩展容器解...
- 下一篇
容器技术干货┃K8s存储篇之PV(PVC)
前言 Kubernetes集群中,如果没有存储,所有pod中应用产生的数据都是临时的,pod挂掉,被rc重新拉起之后,以前产生的数据就丢掉了,这对有些场景是不可接受的,此时,外部存储就显得尤为重要。 这里重点介绍两个API资源: PersistentVolume(PV):集群中的一块网络存储,是集群中的资源,可类比集群中的Node资源; PersistentVolumeClaim(PVC) : 用户对存储的需求,可类比pod,pod消费node资源,PVC就消费PV资源。 当然还有StorageClass等概念,这里不做详细说明(稳定后,后期文章专门介绍)。K8s存储管理主要分布在两个组件中(这里不包括api):kube-controller-manager和 kubelet。由于涉及的点比较多,我们分成几篇文章来介绍,本篇主要分析PersistentVolume。 代码基于社区,commit id: 65ddace3ed8e7c25546d12912c8dfdcd06ffe1e0 用例 Kubernetes支持的外部存储非常的多,如:AWSElasticBlockStore,Azur...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Hadoop3单机部署,实现最简伪集群
- Docker安装Oracle12C,快速搭建Oracle学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装