前言
Kubernetes 已经成为主流的实现分布式系统、微服务系统、网格服务系统的基础平台,在社区中关于如何搭建 Kubernetes 集群的文章已经非常多了,本系列文章主要介绍的是一种混合式的 Kubernetes 集群系统。
熟悉 Kubernetes 的读者应该知道在 Kubernetes 中主要是通过 Dokcer 技术支撑整个系统的运作,而 Docker 是基于 Linux 内核中的 LXC 来实现容器的沙盒化。所以早期的 Kubernetes集群环境 以及 Docker容器环境 一定都是基于 Linux 系统搭建的。即便是在 Windows 中做相关的 Docker 开发工作,其 Docker 引擎本质上还是通过 Hyper-V 虚拟化技术虚拟了一个 Linux 系统运行 Docker 引擎。
但随着近年来微软在容器技术的持续发力,最新的 Windows Server 操作系统已经实现了真正意义的 Windows 容器。既然 Windows 内核已经实现了类似 Linux 内核中 LXC 的特性,让 Windows 能够采用 Docker 标准运行 Windows 容器,那么将部分 Windows 容器主机作为 Kubernetes Node 加入到 Kubernetes 集群中就成为了可能。
笔者也是因为公司的需要才对这种混合式的 Kubernetes 进行了相关的研究,主要是因为公司有大量现有系统是基于并依赖微软的 .Net Framework 而公司是有计划采用 Kubernetes 构建标准、可控的基础设施平台,原本是想将这些 .Net 项目通过 Linux 下的 Mono 进行运行时托管,但鉴于原有项目的程序集依赖混乱及第三方技术引入的边界无法界定,考虑到系统的稳定性,以及能预见到采用 Mono 必然会遇到许多许多坑要填,加上又接触到 Windows 容器,于是就尝试了这种混合式的容器化集群系统。
因为即将与读者们探讨的话题过于分散,涉及到多种技术、工具、方法的使用,所以本文会采取系列性的方式向大家呈现。