什么是 kubeadm
、kubelet
和 kubectl
?
想象一下你有一群玩具机器人(容器),你想让它们自动完成一些任务,比如打扫房间或送信给朋友。为了让这些机器人协作工作,你需要三个关键角色:
- 超级管理员 (
kubeadm
):负责创建和设置一个团队,确保每个机器人都知道自己的任务。 - 机器人助手 (
kubelet
):每个机器人有一个助手,它告诉机器人应该做什么,并向超级管理员汇报进展。 - 遥控器 (
kubectl
):让你可以远程控制和监控这些机器人,发送指令或者查看状态。
现在,让我们具体看看这三个工具是如何工作的。
kubeadm
是干什么的?
kubeadm
就像是超级管理员,它的主要职责是初始化 Kubernetes 集群并管理集群中的节点加入。它会设置好所有必要的配置,使你的机器人团队能够开始工作。
使用场景
- 创建新集群:当你第一次搭建 Kubernetes 集群时,
kubeadm
用来初始化主节点和工作节点。 - 扩展集群:添加新的工作节点到现有集群中。
- 升级集群:更新集群版本到最新稳定版。
kubelet
是干什么的?
kubelet
就像是每个机器人身边的助手,它在每个节点上运行,负责与主控制器通信,并确保该节点上的容器按照预期的方式运行。它还报告容器的状态给主控制器。
使用场景
- 容器管理:启动、停止和重启容器,确保它们按计划运行。
- 健康检查:定期检查容器的健康状况,并将结果报告给主控制器。
- 日志收集:收集容器的日志信息,便于调试和监控。
kubectl
是干什么的?
kubectl
就像是遥控器,它是命令行工具,用于与 Kubernetes API 交互,执行各种操作,如部署应用、查看资源状态等。
使用场景
- 部署应用:定义和部署应用程序到集群中。
- 管理资源:创建、更新或删除 Pod、Service、Deployment 等资源。
- 查看状态:获取集群中所有资源的状态信息。
- 故障排查:诊断问题,例如查看日志或描述特定资源。
底层原理
-
kubeadm
:- 它负责设置集群的核心组件,包括 etcd(分布式键值存储)、API Server、Controller Manager 和 Scheduler。
- 当你使用
kubeadm init
初始化主节点时,它会生成证书、配置文件和其他必要的设置。 - 对于工作节点,
kubeadm join
命令允许它们安全地加入到已有的集群中。
-
kubelet
:- 每个节点上的
kubelet
服务监听来自主控制器的指令。 - 它根据这些指令启动或停止容器,并将容器的状态反馈给主控制器。
kubelet
还执行健康检查,确保容器正常运行,并且可以执行生命周期钩子来响应容器事件。
- 每个节点上的
-
kubectl
:- 它通过 HTTPS 与 Kubernetes