3-Overview-k8s 组件
k8s 组件概览
# kubectl get pods -A -owide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system canal-2w899 2/2 Running 0 46h 192.168.1.45 k8smaster <none> <none>
kube-system canal-wdnsw 2/2 Running 1 45h 192.168.1.47 k8s-s2 <none> <none>
kube-system canal-zv4qv 2/2 Running 1 45h 192.168.1.46 k8s-s1 <none> <none>
kube-system coredns-6967fb4995-2zsrw 1/1 Running 0 46h 10.244.0.2 k8smaster <none> <none>
kube-system coredns-6967fb4995-sfv7d 1/1 Running 0 46h 10.244.0.3 k8smaster <none> <none>
kube-system etcd-k8smaster 1/1 Running 0 46h 192.168.1.45 k8smaster <none> <none>
kube-system kube-apiserver-k8smaster 1/1 Running 0 46h 192.168.1.45 k8smaster <none> <none>
kube-system kube-controller-manager-k8smaster 1/1 Running 0 46h 192.168.1.45 k8smaster <none> <none>
kube-system kube-proxy-2hxwj 1/1 Running 0 46h 192.168.1.45 k8smaster <none> <none>
kube-system kube-proxy-jx8kp 1/1 Running 0 45h 192.168.1.47 k8s-s2 <none> <none>
kube-system kube-proxy-l9hc8 1/1 Running 0 45h 192.168.1.46 k8s-s1 <none> <none>
kube-system kube-scheduler-k8smaster 1/1 Running 0 46h 192.168.1.45 k8smaster <none> <none>
master 组件
master 组件主要是集群对控制(控制平面). master组件对全局做决策(比如调度), 检查监听集群事件(比如: 新添加的pod字段类型符不符合此资源类型允许所需,字段是否正确).
master组件可以在集群中的任何机器上运行.但是,为了简单起见,通常会在同一台计算机上启动所有master组件,而不会在此计算机上运行用户容器(不再调度别的容器到master节点运行), 高可用集群
kube-apiserver
kube-apiserver是控制集群入口点,暴露集群的API, 相当控制面板的前端.
kube-apiserver 设计为水平扩展, 可以通过多实例对其进行扩展 高可用集群
etcd
etcd键值对存储系统,它被用作于k8s数据落地(k8s集群后端存储系统), 为了安全起见要有规划的对etcd数据进行备份.
etcd官方文档.
kube-scheduler
master节点上的组件,用于监视未分配节点的新创建的pod,并选择要在其上运行的节点。
调度决策考虑的因素包括单个和集体资源需求、硬件/软件/策略约束、关联和反关联规范、数据位置、工作负载间干扰和截止日期。(节点资源状态,软/硬亲和,资源限制等等)
kube-controller-manager
master节点上组件.
从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译成一个二进制文件并在一个进程中运行。
其中包括:
Node Controller
:负责节点故障时的通知和响应。Replication Controller
:负责维护系统中每个replication controller对象的pod数量是否和设定的数量一致Endpoints Controller
: 负责service和pod相关联,对外暴露访问入口.Service Account & Token Controllers
:为新命名空间创建默认帐户和api访问令牌。
Node 组件
node组件运行于每个工作节点上,其作用是维护运行的pods以及为k8s提供运行环境
kubelet
kubelet运行于每个node节点上,时刻监控着容器的运行.
kubelet通过PodSpecs文件定义运行pods, 它监控着当前运行容器是否和PodSpecs设置的一致, 自定义容器(DockerFile)运行的容器不在kubelet管理范围内.
kube-proxy
kube-proxy运行所有节点上,其实现 Kubernetes Service 概念的一部分.
kube-proxy管理每个节点上的网络规则,这些网络规则允许通过集群内外的网络会话与pod进行网络通信(允许集群外网络访问到集群)
kube代理使用操作系统包过滤层 netfilter
(如果有且可用)。否则,kube代理转发流量本身。
Container Runtime
容器运行时是负责运行容器的软件(提供容器运行环境).
k8s支持多种容器运行环境: Docker, containerd, cri-o, rktlet 以及自己实现,只要符合CRI规范即可 Kubernetes CRI (Container Runtime Interface).
Addons 附加组件
Addons(插件)通过k8s资源(DaemonSet, Deployment等)来实现特定的功能集, 所以它命名空间属于kube-system下的资源
要实现某些功能,需要安装插件,可用的插件列表Addons.
DNS (必须)
虽然其他插件非硬性要求,但k8s集群依赖DNS解析,它会作为Cluster DNS
记录每个容器主机名和地址的解析
由k8s启动管理的容器都会自动将主机名ip信息加入到Cluster DNS
,已提供服务.
通常使用coredns作为k8s域名解析服务
Web UI (Dashboard) (非必须)
dashboard是kubernetes集群的一个通用的、基于web的ui。它允许用户管理和排除集群中运行的应用程序以及集群本身的故障。
Container Resource Monitoring
容器资源监视记录中心数据库中有关容器的通用时间序列度量,并提供用于浏览该数据的ui。
集群日志记录
集群级日志记录机制负责将容器日志保存到具有搜索/浏览界面的中央日志存储。
本作品采用《CC 协议》,转载必须注明作者和本文链接