「KUBERNETES」- 集群创建与管理 | 集群部署

该笔记将记录:多个 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 自身、本地测试、持续集成;

官网:https://kind.sigs.k8s.io/

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

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 测试、体验环境;