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

未完待续

相关推荐
阿里云云原生9 小时前
研发视角的新突破:当 AI Coding 工具集成全域运维诊断,排查线上故障只需 3 分钟
云原生
小猿姐1 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
阿里云云原生1 天前
AgentTeams 和 Claude Tag 都进入群聊模式,是新范式还是新叙事?
云原生·agent
阿里云云原生2 天前
Higress v2.2.3 发布:正式入驻 CNCF Sandbox,AI Gateway 与 Ingress 迁移能力双向加固
云原生
lichenyang4533 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4533 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4533 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
阿里云云原生3 天前
香港站【企业 AI Agent 工程化实战专场】来啦,邀您7月9日见!
云原生·agent
阿里云云原生4 天前
研发域与运维域的“数字握手”:通过 Agentic Skills 实现 DevOps 全链路自动化
云原生
运维开发故事6 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes