我目前正在为我的公司做一些有关 Kubernetes 的研究。我们想评估从我们私人计算中心内的裸机服务器托管我们自己的 Kubernetes 集群。我只使用过托管的 Kubernetes(如 Google Cloud 等),当然还有 minikube 进行本地测试。
是否有人曾经使用过自托管和自安装的 Kubernetes 集群,并对配置和管理此类集群所需的知识和时间给我一些评估?
答案1
是否有人曾经使用过自托管和自安装的 Kubernetes 集群,并对配置和管理此类集群所需的知识和时间给我一些评估?
在 GKE 和 EKS 出现之前,我已经运行了相当多的集群,不过我很庆幸我是在 IaaS 设置中运行的,这样我就不必将东西架起来,如果出了问题,我只需让云提供商将其关闭即可。你的问题有两个独立的部分,它们的工作量也不同:配置和管理
在机器准备好并启动并读取用户数据后,只需 30 分钟即可配置集群(我认为即使是裸机也有相应的云初始化方案,即使不太强调“云”部分),得益于完全的魔法kubeadm和它的朋友etcdadm
然而,在 Kubernetes 启动并运行之后,真正的工作才刚刚开始 —— 通常被称为“第二天”的操作,里面列满了需要监控的事情和可以进行的操作。
为了绝对清楚起见,我无意劝阻你:当集群处于良好状态时,它就像魔术一样,令人吃惊很多事情都能奏效™。但是,就像许多神奇的事情一样,当他们生气时,如果你还不熟悉警告信号或不认识他们的枪声,这可能会让令人沮丧的情况变得更加令人沮丧。
我想知道管理这样的系统(因为我是唯一的管理员)是否太费力。尤其是考虑到我对 Kubernetes 内部工作原理的了解并不多
我认为,最后一部分才是最难克服的障碍,因为——就像许多软件一样——一旦你理解了解它们是如何粘合在一起的,对它们进行故障排除通常是一个繁琐但容易处理的问题。然而,管理 Kubernetes本身只是维护 Kubernetes 所需工具集的一部分簇活:
- systemd(是的,除非你使用一个非常非常深奥的机器镜像,直接启动到
kubelet
和,否则它仍然是必需的containerd
)- systemd 的 cgroups 管理与 docker 或 containerd 的 cgroups 管理如何对抗
- docker (或
containerd
)- 包括其身份验证系统,如果你有需要凭证才能拉取的图像
- 中央网络接口
- 以及你决定使用的 CNI 提供商的每一个细微差别,因为他们不可避免地会吐出问题,而扑灭这场大火是……很有趣的
- 等(!!!!!!!!!!!!!!!!!!)
- 会员管理
- 备份——只有经过测试,它们才是“备份”,因此一些灾难恢复演习对于减少凌晨 3 点的寻呼机呼叫次数大有帮助
- 虽然如果你的集群足够小,它可能不会对你造成影响,但分类 etcd 性能停滞也是一场噩梦
- 控制平面各部分所扮演的角色,以便根据观察到的行为知道要查看谁的日志:
- API 服务器
- 控制器管理器
- 调度程序
- kube-proxy
- 库贝莱特
- 对所有主要运动部件都有深入的了解,我的意思是全部,原版资源类型:
Node
,Pod
,Deployment
,Service
,(包括 的 4 个主要子类型);ConfigMap
是可选的,但有助于理解它们存在的原因Secret
Secret
StatefulSet
- RBAC 子系统:
Role
,,,,,以及auth如何将其从 HTTPS 请求传递到 apiserver 的处理程序,然后转换为可以根据这些策略进行评估的,就像所有与“安全”相关的好东西一样RoleBindings
,它本身就是无底洞,里面有需要了解的标准和需要排除故障的工具ClusterRole
ClusterRoleBindings
Subject
虽然这可能不会影响你的裸机设置,通常kubernetes 通过 MetalLB 和 CNI IPAM 解决方案等与外界交互,排除故障需要了解 kubernetes期望让他们去做,然后让他们明白自己在做什么实际上正在做
我个人还没有采取肌酸激酶A但你至少应该通读一下课程,了解一下 CNCF 认为哪些主题是基本知识。如果你不害怕,那么,嘿,也许你也可以通过这个练习获得 CKA :-)
祝狩猎愉快!