Kubectl:客户端命令行工具,作为整个系统的操作入口。 kube-apiserver:以REST API服务形式提供接口,作为整个系统的控制入口。 kube-controller-manager:控制器管理器,用来检测控制器健康状态,检查pod的健康状态,比如故障检测,自动扩展,滚动更新,包括节点状态状况、Pod个数、Pods和Service的关联等。 kube-scheduler:负责节点资源管理,接收来自kube-apiserver创建Pods任务,并分配到某个节点。 etcd:是一个key/value形式的键值存储,保存整个k8s集群状态,在k8s中使用etcd时,需要对etcd做备份,保证高可用,整个k8s系统中一共有两个服务需要 用到etcd用来协同和存储配置 分别是: 1.网络插件calico,对于其他网络插件也需要用到etcd存储网络的配置信息 2.k8s本身,包括各种对象的状态和元信息配置 注意:网络插件操作etcd使用的是v2的API,而k8s操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的etcd api,v3表示使用v3的版本etcd api kube-proxy:运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。 Kubelet:运行在每个计算节点上,作为agent,接收分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver。 Fluentd:主要负责日志收集、存储与查询。 Calico:是一个纯三层的网络插件,calico的bgp模式类似flannel的host-gw,calico在kubernetes中可提供网络功能和网络策略 三种网络模式: Flannel 常见采取 UDP Overlay 方案,VxLAN 性能比 TUN 强一点,一个是内核态一个是用户态 Calico 是一个纯三层的方案,不需要 Overlay,基于 Etcd 维护网络准确性,也基于 Iptables 增加了策略配置 Cilium 就厉害了,基于 eBPF 和 XDP 的方案,eBPF/XDP 处理数据包的速度可以和 DPDK 媲美,零拷贝直接内核态处理,缺点就是用户不太容易进行配置,而 cilium 解决了这个问题,毕竟 yaml 开发工程师都会写 yaml。。。可以支持 L3/L4/L7 的策略 Coredns:k8s1.11之前使用的是kube dns,1.11之后才有coredns是一个DNS服务器,能够为kubernetes services提供DNS记录
Kubernetes的一些组件概念
2021-02-19 14:20:24
浏览数 (1)