k8s专题[3.k8s基础组件]

1.核心组件

1.1 etcd 保存了整个集群的状态,etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划

1.2 kube-apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制

1.3 kube-controller-manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等,kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行.这些控制器包括:

  • 节点(Node)控制器
  • 副本(Replication)控制器:负责维护系统中每个副本中的pod
  • 端点(Endpoints)控制器:填充Endpoints对象(即连接Services&Pods)
  • Service Account和Token控制器:为新的Namespace 创建默认帐户访问API Token

1.4 kube-scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上

1.5 kubelet 负责维持容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理

1.6 Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI),默认的容器运行时为 Docker.

1.7 kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡.

1.8 docker服务,用于运行容器.

Kubernetes 组件工作图示

2.常用插件

除了核心组件,还有一些推荐的 Add-ons:

  • coredns 负责为整个集群提供 DNS 服务
  • CNI网络插件,常用calico,Flannel
  • Ingress Controller 为服务提供外网入口
  • Heapster 提供资源监控
  • Dashboard 提供 GUI
  • Federation 提供跨可用区的集群
  • Fluentd-elasticsearch 提供集群日志采集、存储与查询

3.组件高可用性

3.1 k8s 高可用2个核心 apiserver master and etcd

3.2 apiserver master:(需高可用)集群核心,集群API接口、集群各个组件通信的中枢;集群安全控制;

3.3 etcd :(需高可用)集群的数据中心,用于存放集群的配置以及状态信息,非常重要,如果数据丢失那么集群将无法恢复;因此高可用集群部署首先就是etcd是高可用集群;

3.4 kube-scheduler:调度器 (内部自选举)集群Pod的调度中心;默认kubeadm安装情况下–leader-elect参数已经设置为true,保证master集群中只有一个kube-scheduler处于活跃状态;

3.5 kube-controller-manager: 控制器 (内部自选举)集群状态管理器,当集群状态与期望不同时,kcm会努力让集群恢复期望状态,比如:当一个pod死掉,kcm会努力新建一个pod来恢复对应replicas set期望的状态;默认kubeadm安装情况下–leader-elect参数已经设置为true,保证master集群中只有一个kube-controller-manager处于活跃状态;

3.6 kubelet: agent node注册apiserver

3.7 kube-proxy: 每个node上一个,负责service vip到endpoint pod的流量转发,老版本主要通过设置iptables规则实现,新版1.9基于kube-proxy-lvs 实现

4.参考文章

# 推荐文章
  1.深刻理解Docker镜像大小
  2.k8s专题[1.k8s基础概念]
  3.k8s专题[10.使用Spinnaker持续发布应用]
  4.k8s专题[2.k8s设计原则]
  5.k8s专题[3.k8s基础组件]

评论


:D 一言句子获取中...