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。

集群日志记录

集群级日志记录机制负责将容器日志保存到具有搜索/浏览界面的中央日志存储。

k8s
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!