k8s 经典面试题 二

16. Kubernetes 中的 ConfigMap 和 Secret 如何使用?

答案

  • ConfigMap:可以通过环境变量或卷挂载的方式注入到 Pod 中。

    • 环境变量:在 Pod 的定义中引用 ConfigMap 中的键值对作为环境变量。

    • 卷挂载:将 ConfigMap 中的数据挂载为 Pod 中的文件。

  • Secret:与 ConfigMap 类似,可以通过环境变量或卷挂载的方式注入到 Pod 中。

    • 环境变量:在 Pod 的定义中引用 Secret 中的键值对作为环境变量。

    • 卷挂载:将 Secret 中的数据挂载为 Pod 中的文件。

17. Kubernetes 中的滚动更新(Rolling Update)是如何实现的?

答案

  • 滚动更新 是 Kubernetes 中用于更新 Deployment 的一种策略。

  • 滚动更新的过程如下:

    1. 创建新版本的 Pod:逐步创建新版本的 Pod,直到新版本的 Pod 数量达到期望值。

    2. 删除旧版本的 Pod:逐步删除旧版本的 Pod,直到旧版本的 Pod 数量为零。

    3. 完成更新:所有 Pod 都更新为新版本。

  • 滚动更新可以通过 maxSurge 和 maxUnavailable 参数控制更新的速度和可用性。

18. Kubernetes 中的污点和容忍(Taints and Tolerations)是什么?

答案

  • 污点(Taints):用于标记节点,阻止 Pod 调度到该节点上,除非 Pod 具有相应的容忍(Toleration)。

  • 容忍(Tolerations):用于标记 Pod,允许 Pod 调度到具有相应污点的节点上。

19. Kubernetes 中的资源配额(Resource Quotas)是什么?

答案

  • 资源配额(Resource Quotas):用于限制 Namespace 中可以使用的资源总量,如 CPU、内存、Pod 数量等。

  • 资源配额可以帮助管理员控制资源使用,防止某个 Namespace 占用过多资源。

20. Kubernetes 中的网络模型是什么?

答案

  • Kubernetes 网络模型:每个 Pod 都有自己的 IP 地址,Pod 之间可以直接通过 IP 地址通信。

  • Kubernetes 网络模型要求所有节点上的 Pod 可以相互通信,而不需要 NAT(网络地址转换)。

21. Kubernetes 中的 CNI(Container Network Interface)是什么?

答案

  • CNI(Container Network Interface):是一个规范,定义了容器运行时和网络插件之间的接口。

  • Kubernetes 使用 CNI 插件来实现 Pod 之间的网络通信,常见的 CNI 插件包括 Flannel、Calico、Weave 等。

22. Kubernetes 中的 RBAC(Role-Based Access Control)是什么?

答案

  • RBAC(Role-Based Access Control):是 Kubernetes 中用于权限管理的机制。

  • RBAC 通过角色(Role)和角色绑定(RoleBinding)来定义用户或服务账户的权限。

  • 角色(Role)定义了一组权限规则,角色绑定(RoleBinding)将角色绑定到用户或服务账户。

23. Kubernetes 中的 Helm 是什么?

答案

  • Helm:是 Kubernetes 的包管理工具,用于简化应用程序的部署和管理。

  • Helm 使用 Chart 来定义应用程序的部署模板,Chart 包含了一系列 Kubernetes 资源定义。

  • Helm 提供了版本管理、依赖管理、回滚等功能,简化了应用程序的部署和升级。

24. Kubernetes 中的 Operator 是什么?

答案

  • Operator:是一种用于管理有状态应用程序的扩展机制。

  • Operator 通过自定义控制器(Controller)来管理应用程序的生命周期,如部署、扩展、备份、恢复等。

  • Operator 通常基于 Kubernetes 的控制循环机制,自动将应用程序的实际状态调整为期望状态。

25. Kubernetes 中的 CRD(Custom Resource Definition)是什么?

答案

  • CRD(Custom Resource Definition):是 Kubernetes 中用于定义自定义资源(Custom Resource)的机制。

  • CRD 允许用户在 Kubernetes 中定义新的资源类型,扩展 Kubernetes 的功能。

  • 自定义资源(Custom Resource)可以像内置资源一样被 Kubernetes API 管理。

26. Kubernetes 中的 StatefulSet 和 Deployment 有什么区别?

答案

  • Deployment:用于管理无状态的应用程序,如 Web 服务器。Deployment 允许你定义应用程序的期望状态,并自动管理 Pod 的创建、更新和删除。

  • StatefulSet:用于管理有状态的应用程序,如数据库。StatefulSet 为每个 Pod 提供稳定的网络标识和持久化存储。

27. Kubernetes 中的 DaemonSet 和 Deployment 有什么区别?

答案

  • Deployment:用于管理无状态的应用程序,如 Web 服务器。Deployment 允许你定义应用程序的期望状态,并自动管理 Pod 的创建、更新和删除。

  • DaemonSet:确保每个节点上运行一个 Pod 的副本,通常用于运行系统级服务,如日志收集器、监控代理等。

28. Kubernetes 中的 Job 和 CronJob 是什么?

答案

  • Job:用于运行一次性任务,如批处理作业。Job 确保任务成功完成,并在任务完成后终止 Pod。

  • CronJob:用于运行定时任务,类似于 Unix/Linux 中的 cron 作业。CronJob 根据定义的时间表定期运行任务。

29. Kubernetes 中的 Pod 生命周期是什么?

答案

  • Pod 生命周期 包括以下阶段:

    1. Pending:Pod 已被 Kubernetes 接受,但尚未调度到节点上。

    2. Running:Pod 已被调度到节点上,并且所有容器都已启动。

    3. Succeeded:Pod 中的所有容器都已成功终止。

    4. Failed:Pod 中的至少一个容器已失败终止。

    5. Unknown:由于某种原因,无法获取 Pod 的状态。

30. Kubernetes 中的 Init Container 是什么?

答案

  • Init Container:是 Pod 中的一种特殊容器,用于在主容器启动之前执行初始化任务。

  • Init Container 必须成功完成,主容器才会启动。Init Container 可以用于执行数据库迁移、配置文件生成等任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值