蚊章汇 - Redhat.com
type: channel
link: https://linuxcn.bwsl.wang/author/703/
description: Redhat.com
items: Kubernetes 是什么？

Kubernetes 是什么？
type: item
date: 2017-09-11T17:33:00+08:00
description: Kubernetes，简称 k8s（k，8 个字符，s——明白了？）或者 “kube”，是一个开源的 Linux 容器自动化运维平台，它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说，你可以将多台主机组合成集群来运行 Linux 容器，而 Kubernetes 可以帮助你简单高效地管理那些集群。构成这些集群的主机还可以跨越公有云、私有云以及混合云。Kubernetes 最开始是由 Google 的工程师设计开发的。Google 作为 Linux 容器技术的早期贡献者之一，曾公开演讲介绍 Google 如何将一切都运行于容器之中（这是 Google 的云服务背后的技术）。Google 一周内的容器部署超过 20 亿次，全部的工作都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身，几年来开发 Borg 的经验教训也成了影响 Kubernetes 中许多技术的主要因素。趣闻: Kubernetes logo 中的七个辐条来源于项目原先的名称, “Seven of Nine 项目”（LCTT 译注：Borg 是「星际迷航」中的一个宇宙种族，Seven of Nine 是该种族的一名女性角色）。红帽作为最早与 Google 合作开发 Kubernetes 的公司之一（甚至早于 Kubernetes 的发行），已经是 Kubernetes 上游项目的第二大贡献者。Google 在 2015 年把 Kubernetes 项目捐献给了新成立的 云计算基金会 Cloud Native Computing Foundation （CNCF）。为什么你需要 Kubernetes ？真实的生产环境应用会包含多个容器，而这些容器还很可能会跨越多个服务器主机部署。Kubernetes 提供了为那些工作负载大规模部署容器的编排与管理能力。Kubernetes 编排让你能够构建多容器的应用服务，在集群上调度或伸缩这些容器，以及管理它们随时间变化的健康状态。Kubernetes 也需要与网络、存储、安全、监控等其它服务集成才能提供综合性的容器基础设施。当然，这取决于你如何在你的环境中使用容器。一个初步的 Linux 容器应用程序把容器视作高效、快速的虚拟机。一旦把它部署到生产环境或者扩展为多个应用，很显然你需要许多组托管在相同位置的容器合作提供某个单一的服务。随着这些容器的累积，你的运行环境中容器的数量会急剧增加，复杂度也随之增长。Kubernetes 通过将容器分类组成 “pod” 来解决了容器增殖带来的许多常见问题。pod 为容器分组提供了一层抽象，以此协助你调度工作负载以及为这些容器提供类似网络与存储这类必要的服务。Kubernetes 的其它组件帮助你对 pod 进行负载均衡，以保证有合适数量的容器支撑你的工作负载。正确实施的 Kubernetes，结合类似 Atomic Registry、Open vSwitch、heapster、OAuth 和 SELinux 的开源项目，让你可以管理你自己的整个容器基础设施。Kubernetes 能做些什么？在生产环境中使用 Kubernetes 的主要优势在于它提供了在物理机或虚拟机集群上调度和运行容器的平台。更宽泛地说，它能帮你在生产环境中实现可以依赖的基于容器的基础设施。而且，由于 Kubernetes 本质上就是运维任务的自动化平台，你可以执行一些其它应用程序平台或管理系统支持的操作，只不过操作对象变成了容器。有了 Kubernetes，你可以：跨主机编排容器。更充分地利用硬件资源来最大化地满足企业应用的需求。控制与自动化应用的部署与升级。为有状态的应用程序挂载和添加存储器。线上扩展或裁剪容器化应用程序与它们的资源。声明式的容器管理，保证所部署的应用按照我们部署的方式运作。通过自动布局、自动重启、自动复制、自动伸缩实现应用的状态检查与自我修复。然而 Kubernetes 依赖其它项目来提供完整的编排服务。结合其它开源项目作为其组件，你才能充分感受到 Kubernetes 的能力。这些必要组件包括：仓库：Atomic Registry、Docker Registry 等。网络：OpenvSwitch 和智能边缘路由等。监控：heapster、kibana、hawkular 和 elastic。安全：LDAP、SELinux、 RBAC 与 支持多租户的 OAUTH。自动化：通过 Ansible 的 playbook 进行集群的安装和生命周期管理。服务：大量事先创建好的常用应用模板。红帽 OpenShift 为容器部署预先集成了上面这些组件。Kubernetes 入门和其它技术一样，大量的专有名词有可能成为入门的障碍。下面解释一些通用的术语，希望帮助你理解 Kubern…