网站建设飠金手指科杰十五,免费推广平台有哪些?,网站分享的功能怎么做,北京网站怎么做背景
在最近学习k8s的过程中#xff0c;发现kubectlkubeletrancherhelmkubeadm这几个命令怎么在交错使用#xff0c;他们究竟是什么关系#xff1f;他们分别应该在什么情况下使用呢#xff1f;这里我进行了简单的总结#xff0c;做个区分。
各工具说…背景
在最近学习k8s的过程中发现kubectlkubeletrancherhelmkubeadm这几个命令怎么在交错使用他们究竟是什么关系他们分别应该在什么情况下使用呢这里我进行了简单的总结做个区分。
各工具说明
Kubectl是一款用于管理和操作 Kubernetes 集群的命令行工具是Kubernetes 的一个标准 CLI具备可扩展性可以通过插件增加新功能和命令。它通过与 Kubernetes 控制平面通常称为 apiserver交互来实现对集群内资源的增删改查。
Rancher是一套容器管理平台提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。所以Rancher不仅可以管理k8s还可以管理Docker集群。
Kubelet 是 kubernetes 工作节点上的一个代理组件运行在每个节点上。定期从kube-apiserver组件接收新的或修改的Pod规范并确保Pod及其容器在期望规范下运行。同时该组件作为工作节点的监控组件向kube-apiserver汇报主机的运行状况。
Kubeadm 是一个用于在 Kubernetes 中快速部署集群的命令行工具它主要负责引导和初始化 Kubernetes 主控节点Master Node以及创建必需的证书、配置文件和其他资源。
Helm 是 Kubernetes 的包管理器类似于python的pipUbuntu中的apt、CentOS中的yum等它用于自动创建、打包、配置和部署应用程序和服务到Kubernetes 集群。
关系示意图 图1.1 常用工具关系示意图
关系说明
首先得说明一个内容那就是Kube-apiserver对于集群的所有操作都需要通过该API服务由该服务进行解析识别才能转换成真正的操作也就是说Kube-apiserver是kubernetes集群的对外标准API要操作集群就需要先对接该Kube-apiserver。
kubectl的执行链路
kubectl是Kubernetes 的一个标准 CLI用于Kubernetes 集群管理工作也就是说当通过命令行的方式发出命令例如执行 kubectl get pods 该命令首先被kube-apiserver服务解析到然后转换成kubernetes集群可以理解的内容进行执行所有我们日常在命令框窗口中执行最多的也就是kubectl命令。
kubelet的执行链路
接着上面的内容当kubectl发出命令之后kube-apiserver进行了解析然后将命令拆解到了集群的各个节点上然后由Kubelet在特定节点上真正执行相关任务例如返回该节点上pods的信息删除或者创建pod等。
严格来说kubelet不应该被开放给用户他是在每个节点上用来保障当前节点的操作满足集群整体要求的组件。
所以一般也不直接使用kubelet最常用的一个命令也就是 kubelet --version kubeadm的执行链路
kubeadm是一个用于在 Kubernetes 中快速部署集群的命令行工具。在初始化过程中会通过调用 kubelet来创建容器运行时并设置各种配置项。在创建集群期间它会生成相关的证书和配置文件这些文件将由 kube-apiserver 使用。kubeadm 还会调用 kube-apiserver 提供的集群 API 接口来创建证书、认证配置和集群对象但它不会直接调用 kube-apiserver 来搭建整个集群。
简单来说就是通过kubeadm创建了kubernetes集群然后才有后续的kube-apiserver服务等一系列内容。
helm的执行链路
Helm是一个用于Kubernetes应用程序部署和管理的包管理器他会生成Kubernetes的配置文件YAML文件然后使用kube-apiserver来完成配置文件的部署和管理。可以说Helm是通过调用kube-apiserver来实现Kubernetes资源的部署和管理但不是直接实现包管理。
Rancher的执行链路
Rancher的命令行工具完全可以和Rancher界面化操作等同理解。
Rancher通过使用自己构建的Rancher Server组件与kube-apiserver进行通信并以此来管理集群。Rancher Server会提供一个UI界面和API来管理集群的各个方面它通过与kube-apiserver进行交互来创建、修改和删除Kubernetes集群中的资源例如节点的添加和删除、应用的部署和监控等。
其中界面就是我们见到的这个页面。 而命令行就是前文介绍的这个工具