利用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集群搞起来,再慢慢研究。

未完待续

相关推荐
孔令飞8 小时前
知己知彼,百战不殆:AI SKILL 实现原理剖析
云原生·go·ai编程
姜鱼问生10 小时前
网页一片白?Docker 跑 Nginx 读不到文件,403 Forbidden 排查实录
nginx·docker·容器
\光辉岁月/11 小时前
2.spring5-IOC
java·容器·ioc·注解
分布式存储与RustFS12 小时前
把 LSM 引擎直接架在对象存储上:slatedb 能不能跑在 RustFS 上?
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
java_logo12 小时前
Docker 部署 Excalidraw:轻松搭建手绘风格白板
运维·docker·容器·excalidraw·白板·轩辕镜像
时间售卖铺14 小时前
MySQL 日志管理
运维·数据库·mysql·云原生
老郭a15 小时前
流量一涨 Pod 扩不出来?K8s HPA 弹性伸缩配置避坑指南
云原生
程序员清风15 小时前
LibreChat 实战:用 Docker 搭建可扩展的多模型对话平台
运维·docker·容器
Web3&Basketball16 小时前
从0到1落地AI Agent沙箱隔离Docker实战:踩坑全记录
运维·docker·容器·agent·容器安全·沙箱隔离
xianyuCcCcCCCcc16 小时前
Kubernetes Service 与网络代理
网络·云原生·kubernetes