Kubernetes 简介

Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一个强大的容器编排和管理系统,可以简化应用程序的部署、扩展和管理过程。

1. k8s 构架详解

1.1. Master 节点

Kubernetes 集群中的 Master 节点是整个集群的控制中心,负责管理和控制集群中的所有操作。

Master 节点包含以下组件:

  • kube-apiserver:作为 Kubernetes API 的前端,处理来自用户和其他组件的 API 请求,并将其转发到适当的组件进行处理。
  • kube-controller-manager:负责运行和管理各种控制器,监控集群状态并根据需要进行调整。
  • kube-scheduler:负责将新创建的 Pod 调度到集群中的节点上,根据节点资源和其他策略进行决策。
  • etcd:一个分布式键值存储系统,用于存储集群的配置数据和状态信息。

1.2. Node 节点

Kubernetes 集群中的 Node 节点是运行容器的工作节点。

Node 节点都有以下组件:

  • kubelet:负责管理节点上的容器,与 Master 节点通信,并执行 Master 节点下发的指令。
  • kube-proxy:负责为 Pod 提供网络代理和负载均衡功能,以便它们可以与集群内和集群外的其他服务进行通信。
  • 容器引擎:负责在节点上运行和管理容器。

1.3. 其他组件

  • Flannel:一个网络插件,它的作用是为 Kubernetes 集群提供网络通信功能。
  • kube-dns:它的作用是提供 DNS(Domain Name System)解析服务,为集群中的应用程序提供服务发现和名称解析功能。
  • Ingress Controller:它的作用是管理和处理集群中的 Ingress 资源,为应用程序提供外部访问和路由的功能。
  • Heapster:一个监控组件,用于收集和聚合集群中的资源使用情况和性能指标数据。它可以提供对集群中的节点、Pod、容器等资源的监控和度量。
  • Dashboard:一个基于 Web 的用户界面,用于可视化和管理 Kubernetes 集群。它提供了一个直观的界面,使用户可以轻松地查看和操作集群中的资源。
  • Federation:是一种用于管理多个 Kubernetes 集群的解决方案。它允许将多个独立的 Kubernetes 集群组织成一个逻辑上的整体,以便更方便地管理和操作这些集群。
  • Fluentd-elasticsearch:Fluentd 是一个开源的日志收集和传输工具,而 Elasticsearch 是一个开源的分布式搜索和分析引擎。Fluentd-Elasticsearch 是将 Fluentd 与 Elasticsearch 结合使用的解决方案,用于实现日志的收集、传输和存储。
  • Rancher:k8s 管理工具。

2. k8s 集群指令运行流程

  1. kubectl 发送了一个部署 nginx 的任务
  2. 进入 Master 节点,进行安全认证
  3. 认证通过后,APIserver 接受指令
  4. 将部署的命令数据记录到 etcd 中
  5. APIserver 再读取 etcd 中的命令数据
  6. APIserver 找到 scheduler(调度器),说要部署 nginx
  7. scheduler(调度器)找 APIserver 调取工作节点数据。
  8. APIserver 调取 etcd 中存储的数据,并将数据发给 scheduler。
  9. scheduler 通过计算,比较找到适合部署 nginx 的最佳节点是 node1,发送给 APIserver。
  10. APIserver 将要部署在 node1 的计划存储到 etcd 中。
  11. APIserver 读取 etcd 中的部署计划,通知 node1 节点的 kubelet 部署容器
  12. kubelet 根据指令部署 nginx 容器,kube-proxy 为 nginx 容器创建网桥
  13. 容器网桥部署完成后,kubelet 通知 APIserver 部署工作完成。
  14. APIserver 将部署状态存储到 etcd 当中,同时通知 controller manager (控制器)有新活了
  15. controller manager 向 APIserver 要需要监控容器的数据
  16. APIserver 找 etcd 读取相应数据,同时通知 kubelet 要源源不断发送监控的数据
  17. APIserver 将 kubelet 发送来的数据存储到 etcd 当中
  18. APIserver 将 etcd 的数据返回给 controller manager
  19. controller manager 根据数据计算判断容器是否存在或健康
上一篇
下一篇