Write by lyc at 2021-3-2
kubernets 官网
kubernets 官方文档

K8S集群架构组件

Master node(主控节点)和 Wrok node(工作节点)

架构图1

架构图2:单Master集群

架构图3:多Master集群

Master node 组件

  1. apiserver 集群统一入口,各组件协调者,以 restful API 提供的接口服务,所有对象资源的增删改查和监听操作都交给 apiserver 处理后再提交给 etcd 存储。
  2. controller-manager 处理集群中常规后台任务,一个资源对应一个控制器,controller-manager 就是负责管理这些控制器的。
  3. scheduler 根据调度算法为新创建的 Pod 选择一个 node节点,可以任意部署,节点调度。

etcd 分布式键值存储系统,用于保存集群状态数据。比如 Pod, Service等对象信息。

etcd 严格来说不是 Master组件。它的功能是保存集群中配置数据。只有 apiserver 会对其进行持久化写入配置。只要确保其能被 apiserver 访问到即可。

Work node 组件

  1. kubelet 是Master在node节点上的 agent,管理本机运行容器的生命周期,比如创建容器、Pod 挂载数据卷、下载 secret、获取容器和节点状态等工作。kubernetes 将每个 Pod 转换成一组容器。(接收 apiserver 创建 Pod 的请求,会在本地调用 docker的 API 去创建对应的容器。)
  2. kube-proxy 提供网络代理,四层负载均衡等操作

docker 容器引擎,运行容器。

K8S三个核心概念

  • Pod k8s最小部署单元,是一组容器的集合,同一个 Pod 中的容器是共享网络的,生命周期是短暂的
  • Controller 确保预期的(创建) Pod 副本数量,无状态|有状态应用部署,确保所有的 node 运行同一个 Pod,一次性任务和定时任务
  • Service 定义一组 Pod 的访问规则

搭建K8S集群部署方式

kubeadm 官方文档
kubernetes 二进制包下载

  1. kubeadm:基于客户端工具 kubeadm,是一个K8S部署工具,提供 kubeadm initkubeadm join 用于快速部署 K8S 集群
  2. 二进制:从 github 下载发行版的二进制包,手动部署每个组件,组成 K8S 集群。

kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署 Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。