当前位置: 首页 > article >正文

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

未完待续


http://www.kler.cn/a/514274.html

相关文章:

  • STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态
  • Flutter调用HarmonyOS NEXT原生相机拍摄相册选择照片视频
  • C++《AVL树》
  • 使用插件SlideVerify实现滑块验证
  • 计算机网络 (54)系统安全:防火墙与入侵检测
  • STM32单片机:GPIO模式
  • centos哪个版本建站好?centos最稳定好用的版本
  • 音频入门(二):音频数据增强
  • 【Elasticsearch】inference ingest pipeline
  • 缓存之美:万文详解 Caffeine 实现原理(上)
  • 多线程杂谈:惊群现象、CAS、安全的单例
  • 一文大白话讲清楚webpack基本使用——6——热更新及其原理
  • Bash语言的安全开发
  • 设计模式Python版 GOF设计模式
  • 【大厂面试题】软件测试面试题整理(附答案)
  • 消息队列篇--原理篇--RabbitMQ和Kafka对比分析
  • Git【将本地代码推送到远程仓库】--初学者必看
  • 2025美赛数学建模B题思路+模型+代码+论文
  • 电脑开机出现Bitlock怎么办
  • solidity基础 -- 内联汇编
  • PyTest自学 - pytest的各种执行方式
  • 是 mysql 分库分表,还是Hive 大数据处理?
  • Linux C/C++编程-文件类型
  • ui文件转py程序的工具
  • 现代AI训练标准配方:从合成数据到人类偏好
  • C# 中使用 gRPC 通讯