12.什么是K8s的namespace?

K8s支持多个虚拟集群,它们底层依赖同一个物理集群,这些虚拟集群就是命名空间。

13.系统默认创建了哪几个namespace?

K8s启动时会创建四个初始命名空间:

default不指定的默认命名空间。

kube-node-lease包含用于与各个节点关联的Lease(租约)对象,允许kubelet发送心跳,由此控制面能检测到节点故障。

kube-public公共只读资源,所有的客户端都可以读取该命名空间。

kube-system存放K8s系统创建的对象,集群核心组件。

14.请解释Pod是什么?

Pod是K8s最小调度单元,封装一个或者多个容器,共享网络与存储,生命周期一致,是集群中运行应用的基本实体。

15.什么是Pod的根容器?

Pod的根容器是Pause容器,是每个Pod里最先启动、最后销毁的基础,负责统一占用网络命名空间、共享网络与存储,管控整个Pod生命周期,是同一Pod所有业务容器通信与资源共享的根基。

16.解释Pod的生命周期。

用户发起请求申请创建Pod,kubectl会将用户指定的YAML文件转换为JSON格式并发送给API Server,API Server根据JSON认证用户是否有权访问集群,检查用户是否可以在该命名空间创建Pod,申请的资源有无问题,检查通过后API Server把Pod的原始信息存入etcd,此时Pod的状态为pending,同时公示Pod的信息,让Scheduler、Kubelet等组件认领自己的任务并且处理,这是List-Watch机制。

Scheduler发现有新的Pod未分配Node,进行选址决策,过滤掉CPU不够、内存不足或五点不匹配的机器。在剩下的机器里按照权重打分,选出最合适的Node与Pod绑定,绑定信息更新到etcd,同时公示信息。

Kubelet也在观察API Server,API Sercer将Pod分配给Kubelet,Kubelet调用网络插件给Pod分配IP,挂载所需要的卷,Kubelet调用containerd或docker去拉取镜像并创建容器。容器启动后,Kubelet会持续观察容器健康状况,并将结果汇报给API Server,API Server将Pod状态更新为Running,把最终状态写入etcd库,此时Pod已经正常运行了。

17.Init类型容器有什么特点,主要用途?

Init类型容器是一种特殊容器,它在Pod内的应用容器启动之前运行,执行成功退出后才启动业务容器,多用于等待依赖、初始化配置、预处理环境。

18.Sidecar类型容器和Init容器的区别在哪?

并置容器是与主容器并行常驻运行的辅助容器,全程协同工作。Init容器是前置串行一次性初始化容器,执行完毕退出。

19.什么是静态Pod?

静态Pod由kubelet本地直接管理,不需要经过集群apiserver调度,通过固定目录.yaml文件自动创建,多用于部署集群核心组件,无法通过集群命令彻底删除。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐