降本提效,是创新开发的永恒话题。过去10年中,开发者纷纷拥抱容器技术以提高部署效率,降低运维负担。随着像 Docker 这类容器引擎使用量的不断增长,作为 Docker 管理系统的 Kubernetes(简称 K8s)顺势而出,帮助开发者构建并简化复杂的容器编排工作。
一、Kubernetes 基本概念
Kubernetes 是一个于2014年开源的容器编排系统,用于在云中扩展容器化应用程序。它可以管理容器的生命周期,根据应用程序需求创建和销毁容器,并提供了许多其他功能。Kubernetes 的兴起标志着应用程序开发和部署方式的转变。
二、为什么选择 Kubernetes
究竟是什么让 Kubernetes快速成为运行云原生应用程序的新兴行业标准工具呢?从开发者视角来看,本地上云过程中,不可避免需要跨越不同机型、网络和环境来协调资源,这就更需要确保容器化应用程序的高可用性和可扩展性。
作为可移植、可扩展的开源平台,Kubernetes 帮助容器化应用程序的开发人员开发更可靠的基础架构,来快速响应高峰流量或重启失败等关键事件,并通过创建可扩展的容器组或 Pod 来优化云基础设施的容器编排部署和管理,为基础设施提供自动化修复能力。
三、管理器、节点和控制平面
为保障集群稳态运行,Kubernetes设置了用以运行和维护集群的基本组件——管理器、节点和控制平面。
- 管理器:Kubernetes 管理器通常是一个单独的服务器,它通过指示节点运行应用程序实例的数量和位置来对集群进行运维。
- 节点:Kubernetes 节点是运行应用程序的工作服务器,用户可以创建并确定节点的数量;每个节点还会运行 kubelet 和 kube-proxy 2个节点组件。
- 控制平面:控制平面负责对集群做出全局决策的驱动功能,由 kube-apiserver、kube-controller-manager、kube-scheduler 和 etcd 组件共同构成。
Kubernetes 控制平面组件
四、理解 Kubernetes 对象
在Kubernetes 中,对象代表Kubernetes 系统所需的持久化实体,借此可展示出整个集群的状态。Kubernetes API 可通过 Pod、Services、Volumes 和 Namespaces 这4个基本对象描述正在运行的容器化应用程序、运行节点、可用资源等。这些资源可通过对象清单的方式来定义。
Pod.yaml 文件示例
如上所示,对象清单由4个必要部分组成,分别是使用的 API 版本、想要定义的资源类型、关于资源的元数据、用户期望的对象状态。
五、理解 Kubernetes 控制器
Kubernetes 通过设置控制器来监控集群的公共状态,以实现由当前状态向期望状态调节的自动化过程。Kubernetes 常见控制器主要包括ReplicaSet、Deployments 和 Jobs。
- ReplicaSet:ReplicaSet 是负责保持给定数量副本 Pod 可用性的控制器。
- Deployments:Deployments 能为 Pod 提供声明式更新以及其他功能,正在取代 ReplicaSet。
- Jobs:Jobs 是支持批处理的控制器,它会创建单个或多个 Pod,并保持自动化执行。
六、理解 Kubernetes 网络系统
Kubernetes 集群网络系统能简化将现有应用程序从 VM 移植到容器和 Pod 的过程。Kubernetes 网络模型的基本要求如下:
当下,Kubernetes 已经成为云计算领域高频应用的抢手工具,选择经济易用、可持续性高的托管式 Kubernetes 服务尤为重要。Akamai Linode Kubernetes Engine (LKE) 正是专为开发者量身打造的云托管利器。
在 Akamai Linode平台上,您无需支付高昂费用即可访问我们卓越、高效、广泛分布的基础架构,轻击鼠标便能下载Kubernetes 中的 kubeconfig 文件,尽可能缩短部署时间。
开启部署、设置集群,仅是第一步。点击【链接】,查看更多Kubernetes干货以及 Akamai Linode Kubernetes Engine 应用指南。