利用Kubespray安装生产环境的k8s集群-准备篇

背景介绍

什么类型的公司需要On-premises的k8s集群?

这里的On-premises不单指运行在本地机房裸金属服务器上的k8s集群,也包括部署在GCP/Azure/AWS等公有云的虚拟机上(非托管的EKS AKS等产品)的k8s集群。

什么类型的公司会选择自行部署k8s,而不采用成熟的公有云托管的Kubernetes ?大概很多金融 电信 政府机构 或者大企业但价格敏感客户或不想被厂商锁定的企业。

不可否认,运行大型的高可用的生产环境Kubernets集群是一个很艰巨的任务,和采用成熟的云上托管的Kubernets比,需要运维人员对Kubernets和额外的网络(BGP/路由/防火墙/策略/代理/网关)存储(物理存储服务器/文件系统/对象存储)安全(RBAC/LDAP/Auth2/容器扫描)和其他(如镜像的Registry/CICD)等都有较深入的理解和实践。

运维人员的成本可能比直接采用托管产品都要贵得多了,但是处于以上原因以及更可能的数据安全和合规考虑,还是有很多企业有自己的On-premises的Kubernets cluster。

部署高可用的On-premises的Kubernets集群的方案

Openshift

研究了下,对于高大上不差钱的企业,首选本地部署Kubernets(已经企业级的镜像Registery,安全增强,CICD等)的方案是RedHat的Openshift。

Openshift Container Platform(OCP,以OCP做关键词在加拿大的招聘网站可看到有加国全国性银行招聘专职OCP工程师)还有一个开源实现之前叫Openshift Origin,现在叫OKD(Original Kubernets Disribution)。 OKD和OCP的关系类似之前Centos和RHEL(就是OKD总是比OCP慢,OCP是OKD的上游)。

等我有机会,部署个10来台虚拟机,找个OKD来玩玩,然后再共享一篇攻略。

Kubespray

那对于小而美又需要On-premises的Kubernets企业,一款实质上是Ansible playbook的名叫Kubespray 的工具可以用来部署生产环境的高可用的Kubernets。

今天我们就拿Kuberspray来玩一玩。

这个是项目的Github地址 和其官网

如何安装生产环境下的高可用k8s集群

安装前的知识储备

Ansible

Ansible是个不需要在被管理机上安装Agent的(Agentless),轻量的,通过SSH方案进行的配置管理 软件。

Ansible Playbooks 是Ansible用来程式化的管理一系列配置的脚本。

为什么需要最好有Ansible的概念和使用经验,因为这款Kubespray说到底就是个Ansible Playbook。

Ansible Inventory是Ansible用来管理和配置被管理器服务器的文件。在本示例中,需要通过调整Inventory来告诉Ansible需要在哪些服务器上部署Kubernets,哪些是Master哪些是worker等等。

Kuberspray

如果有可能,你最好粗略的看一遍整个Kubespray的目录结构,里面主要的Concepts如果你不熟悉的话,最好去研究以下,知道个大概。比如什么是 Cert-Manager和ACME,以及Let's Encrypt ?(Kubernets的证书管理相关的Plugin,通过配置文件参数调整来决定要不要和Kubernets集群一起安装)

本文主要介绍如何安装,如果你实在觉得弄懂Kuberspray的大概结构麻烦,可暂时忽略。

Kubernets Basic Concepts

这个也是,因为安装生产环境需要的Kubernets Cluster,有很多CNI/CRI/CSI以及各类Ingress,Load Balancer(metal-lb)等等需要你在安装时决定是不是要和主系统一起安装。

举个例子,你如何规划在你要安装的k8s集群里部署etcd? 是单点还是3个nodes的高可用? 是host下以systemd管理方式部署二进制包还是通过docker/container来部署? 这些需要你其实对Kubernets整个的结构,基本的各个资源的情况有个较清晰的认知的。

我也是一个从比较讨厌k8s,觉得它很重很无聊,到看到5折的CKA考试券就买了然后发现再有一个月就满一年要过期的人,然后花了个把月时间研究k8s到现在的。

当然,你也可以按我的文档先把一个较复杂的k8s集群搞起来,再慢慢研究。

未完待续

相关推荐
张忠琳5 小时前
【containerd 2.1.8】(Part 1)containerd 2.1.8 超深度源码分析 — 总体架构与模块全景
云原生·kubernetes·containerd
真实的菜7 小时前
微服务注册配置中心终极选型:2026指南
微服务·云原生·架构
正经教主8 小时前
【docker基础】第五课:Docker网络详解
运维·docker·容器
Waay10 小时前
K8s ETCD 详解|备份恢复+静态Pod原理+kubectl查询底层流程(面试必考)
面试·kubernetes·etcd
松岩10 小时前
dcgm-exporter部分指标
kubernetes
我是谁??13 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
Patrick_Wilson13 小时前
K8s 探针避坑:Next.js 不同部署模式下的健康检查实践
kubernetes·node.js·next.js
运维瓦工13 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
Plastic garden13 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
Plastic garden13 小时前
k8s(11) Pod 控制器,服务发现与存储管理
kubernetes