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解决容器的混乱(下)