k8s docker 面试基础

2、k8s 创建一个pod的详细流程,涉及的组件怎么通信的?

k8s 创建一个 Pod 的详细流程如下: 

(1) 客户端提交创建请求,可以通过 api-server 提供的 restful 接口,或者是通过 kubectl 命令行工具,支持的数据类型包括 JSON 和 YAML。 client ---create pod---> apiserver
(2) api-server 处理用户请求,将 pod 信息存储至 etcd 中。 apiserver ------> etcd
(3) kube-scheduler 通过 api-server 提供的接口监控到未绑定的 pod,尝试为pod分配node节点,主要分为两个阶段,预选阶段和优选阶段,其中预选阶段是遍历所有的node节点,根据策略筛选出候选节点,而优选阶段是在第一步的基础上,为每一个候选节点进行打分,分数最高者胜出。
apiserver-----监听到未绑定的pod,然后交给scheduler分配node-----> scheduler
apiserver<----scheduler分配好node,然后通知apiserver------ scheduler
(4) 选择分数最高的节点,进行 pod binding 操作,并将结果存储至 etcd 中。
apiserver ----------> etcd

(5) 随后目标节点的 kubelet 进程通过 api-server 提供的接口监测到 kube-scheduler 产生的 pod 绑定事件,根据绑定下载镜像并启动容器。

整个事件流可以参考下图:

3.kubelet 监控 Node 节点资源使用是通过什么组件来实现的?

这道题主要考察 cAdvisor 组件
开源软件 cAdvisor 是用于监控容器运行状态的利器之一,在 Kubernetes 系统中,cAdvisor 已被默认集成到 kubelet 组件内,当 kubelet 服务启动时,它会自动启动 cAdvisor 服务,然后 cAdvisor 会实时采集所在节点的性能指标及在节点上运行的容器的性能指标。kubelet 的启动参数 --cadvisor-port 可自定义 cAdvisor 对外提供服务的端口号,默认是 4194。

猜你喜欢

转载自www.cnblogs.com/linux985/p/12372234.html