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服务,用于运行容器.
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.参考文章
- 本文标题:k8s专题[3.k8s基础组件]
- 本文作者:青叶
- 本文链接:http://qingye.info/2020/03/24/k8s/K8S-3-Basic-components/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!