该笔记将记录:多个 Kubernetes 集群的创建及管理方案,以及相关问题的解决办法;
版本选择
https://kubernetes.io/releases/
- 版本选择,取决于业务需求。如果无特殊要求,则我们将部署最新版本。
- 如果生产环境使用云服务,则我们部署云服务能够支持的集群版本。
- 如果业务生产环境仅支持特定版本的 Kubernetes 集群,则我们部署对于版本(或,最接近生产环境的版本)。
场景 | 边缘计算 | 开发学习
在实际的实践中,我们需要部署和管理多个 Kubernetes 集群,以满足多种业务需求;
Cluster API
A Kubernetes sub-project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters.
官网:https://cluster-api.sigs.k8s.io/
文档:https://cluster-api.sigs.k8s.io/
仓库:https://github.com/kubernetes-sigs/cluster-api
minikube
minikube:快速创建本地集群,聚焦于应用开发及新用户;
用于快速创建学习和测试使用的本地 Kubernetes 集群;
kind
多用于 Local Development 与 CI 流程;使用 Docker Container 作为节点,来运行 Kubernetes 集群;用于测试 Kubernetes 自身、本地测试、持续集成;
Microk8s
Zero-ops, pure-upstream Kubernetes, from developer workstations to production. 根据官方描述,其能够用于生产环境;
KubeOne
https://docs.kubermatic.com/kubeone/v1.8/
K3s
轻量级 Kubernetes 集群;
官网:https://k3s.io/
文档:https://docs.k3s.io/
仓库:https://github.com/k3s-io/k3s/
k3d (k3s in Docker)
特点:轻量级 k3s 集群(Rancher 开发),适合资源有限的环境。
场景:边缘计算、本地开发。
Turnkey (On-Premises Solutions)
允许你使用少量命令,在内部安全的云网络上创建 Kubernetes 集群。在内部搭建一个成型的环境;
比如「Agile Stacks Kubernetes Stack」提供自动化功能,可以在公共云或裸机上将 Kubernetes 部署到 VPC 中,并实现定期补丁和更新;
场景 | 定制解决方案 | Custom Solutions
定制解决方案为您提供最大的集群自由,但需要最多的专业知识。这些解决方案包括不同操作系统上的裸机到云提供商。
Kubernetes The Hard Way
Bootstrap Kubernetes the hard way. No scripts.
https://github.com/kelseyhightower/kubernetes-the-hard-way
场景 | 生产环境 | 高可用部署
kubeadm
kubeadm:创建 Single Master 的集群,用于学习目的;
https://kubernetes.io/docs/reference/setup-tools/kubeadm/
Turnkey | Cloud Solutions | Hosted Solutions
托管解决方案。使用第三方服务,由第三方管理集群;
公有云解决方案。在公有云上创建 Kubernetes 集群。云厂商提供了脚本,只需执行几个命令,这些解决方案会有社区的积极支持;
on Google Kubernetes Engine (GKE)
在 GKE 上创建集群:Google Kubernetes Engine
GKE Quick Start: 「Quickstart | Kubernetes Engine Documentation | Google Cloud」
Google Cloud Shell: 「Quickstart | Cloud Shell | Google Cloud」
on Azure Container Service (ACS)
在 ACS 上创建集群。「Azure Container Serivice」
阿里云:ACK
华为云:CCE
kOps | Kubernetes Operations
多用于云环境的 Kubernetes 集群创建。但是,该工具进程在云环境中使用。AWS (Amazon Web Services) and GCE (Google Cloud Platform) are currently officially supported, with DigitalOcean, Hetzner and OpenStack in beta support, and Azure in alpha. #11/24/2024 #v1.30.1
官网:https://kops.sigs.k8s.io/
文档:https://kops.sigs.k8s.io/
仓库:https://github.com/kubernetes/kops
所以,如果是在虚拟机中自建集群,除非 OpenStack 环境,否则暂时无法使用该工具。
kubespray
A composition of Ansible playbooks, inventory, provisioning tools, and domain knowledge for generic OS/Kubernetes clusters configuration management tasks. You can reach out to the community on Slack channel #kubespray.
官网:https://kubespray.io/#/
文档:https://kubespray.io/#/
仓库:https://github.com/kubernetes-sigs/kubespray
部分组件为包含在 kubespray 支持列表中,需要我们单独管理。并且,我们期望工具能够直接接管集群的升级。所以,最后我们决定根据自己的需求来编写工具。
RKE(Rancher Kubernetes Engine)
RKE(Rancher Kubernetes Engine)是 Rancher 官方开源的轻量级 Kubernetes 发行版工具,专为生产环境设计,支持快速部署和管理高可用的 Kubernetes 集群。它通过 声明式 YAML 文件(cluster.yml)定义集群配置,并基于容器运行 Kubernetes 组件,无需依赖系统级包管理器(如 kubeadm 等等)。
场景 | 离线部署
我们需要适用于离线环境的 Kubernetes Cluster 部署工具,所以需要调研相关的部署工具;
场景 | Local-machine Solutions
在初期学习时,需要部署 Kubernetes 测试集群,用于测试演示与体验,及部分单主集群的升级测试;
“低配集群”,一个 Master 节点,一个 Node 节点,只能用于基础测试与简单演示,无法用于生产环境;
该部分笔记将整理:与 Kubernetes Testing Cluster 搭建有关的杂记,以及常见问题解决方案;
Self-hosted Kubernetes Cluster | SHK | 本地测试。简单的 K8s 测试、体验环境;