Kubernetes 是一个开源的工业级容器编排平台,其目标是让部署容器化的应用简单且高效。Kubernetes 提供了应用部署、规划、更新、维护的一种机制,核心特点是能够自主管理容器,以保证云平台中的容器是按照用户期望的状态在运行着。
2018 年 3 月 7 日,CNCF 宣布 Kubernetes 正式毕业,随后Kubernetes 获得了多个云端平台的青睐,多家云厂商推出了Kubernetes 托管服务。如今,Kubernetes 已经成为云原生领域的“当红炸子鸡”。本系列文章将从0到1讲解 Kubernetes 的核心原理和重要实践,帮助开发者顺利入门 Kubernetes。
容器是什么?镜像又是什么?容器的生命周期是怎么样的?与 VM 相比,容器的优劣势分别是什么?…本文将为大家一一解答这些问题。
Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“K8s”,它是通过将 8 个字母“ubernete ”替换为“8”而导致的一个缩写。
容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。
我们知道,Kubernetes 的资源对象组成:主要包括了 Spec、Status 两部分。其中 Spec 部分用来描述期望的状态,Status 部分用来描述观测到的状态。
Deployment 是 Kubernetes 中常见的一种 Workload,支持部署管理多版本的 Pod;Deployment 管理多版本的方式,是针对每个版本的 template 创建一个 ReplicaSet,由 ReplicaSet 维护一定数量的 Pod 副本,而 Deployment 只需要关心不同版本的 ReplicaSet 里要指定多少数量的 Pod;
本文详细介绍了 Job 和 CronJob 的概念,并通过两个实际的例子介绍了 Job 和 CronJob 的使用,对于 Job 和 CronJob 内的各种功能便签都进行了详细的演示。
本文主要介绍 ConfigMap 和 Secret 的创建方法和使用场景、Pod 身份认证、容器资源和安全、InitContainer。
本文主要介绍 K8s Volume 的使用场景以及本身局限性。
本文通过对比 PVC&PV 体系讲解了存储快照的相关 K8s 资源对象以及使用方法
监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。
当把应用迁移到 Kubernetes 之后,要如何去保障应用的健康与稳定呢?提高应用的可观测性就是一个很实用的方法。
本文主要介绍 Kubernetes 的网络模型。
与传统的应用在给定机器上部署不同, K8s 集群中的应用是通过 pod 部署的, 且 pod 生命周期是短暂的,因此会引发很多之前没有遇到过的问题。
Linux 容器是一种轻量级的虚拟化技术,在共享内核的基础上,基于 namespace 和 cgroup 技术做到进程的资源隔离和限制。本文将会以 docker 为例,介绍容器镜像和容器引擎的基本知识。
etcd 是用于共享配置和服务发现的分布式、一致性的 KV 存储系统。本文从 etcd 项目发展所经历的几个重要时刻开始,为大家介绍了 etcd 的总体架构及其设计中的基本原理。希望能够帮助大家更好的理解和使用 etcd。
本文从 etcd 性能背景出发,详细讲解了 etcd server 端性能优化及 etcd client 使用最佳实践。
Kubernetes 作为当下最流行的容器自动化运维平台,以声明式实现了灵活的容器编排,本文以 v1.16 版本为基础详细介绍了 K8s 的基本调度框架、流程,以及主要的过滤器、Score 算法实现等,并介绍了两种方式用于实现自定义调度能力。
2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕。该热潮的背后推手正是云计算的普及和算力的巨大提升。
容器存储是 Kubernetes 系统中提供数据持久化的基础组件,是实现有状态服务的重要保证。Kubernetes 默认提供了主流的存储卷接入方案(In-Tree),同时也提供了插件机制(Out-Of-Tree),允许其他类型的存储服务接入 Kubernetes 系统服务。本文将从 Kubernetes 存储架构、存储插件原理、实现等方面进行讲解,希望大家有所收获。
有状态应用的部署交付向来都是应用运维领域的难点之一,常见的有状态需求如在磁盘持久化状态、每个机器需要独立且稳定的网络标识、发布顺序确定性等。针对这类问题 Kubernetes 提供了 StatefulSet 控制器,作为帮助有状态应用部署和在 K8s 环境落地的 Workload。
本文将从实践出发,结合案例来说明,如何借助 Operator 开发框架来扩展 Kubernetes API。
在 Kubernetes 里面, API 编程范式也就是 Custom Resources Definition(CRD)。我们常讲的 CRD,其实指的就是用户自定义资源。为什么会存在用户自定义资源问题呢?本文将会从其需求来源出发,对此概念进行逐步深入的讲解。
本文将基于之前介绍的基本网络模型,进行更深入的一些了解。首先简单回顾一下容器网络的历史沿革,剖析一下 Kubernetes 网络模型的由来;其次会剖析一个实际的实现(Flannel Hostgw),展现了数据包从容器到宿主机的变换过程;最后对于和网络息息相关的 Servcie 做了比较深入的机制和使用介绍,通过一个简单的例子说明了 Service 的工作原理。