k8s面试题

2023-05-19 20:16:18 浏览数 (1)

什么是Kubernetes(k8s)?它的主要功能是什么?

代码语言:javascript复制
Kubernetes(简称 k8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它的主要功能包括:

应用程序部署和版本控制
自动伸缩
容器负载均衡
自我修复
存储编排

什么是Pod?Pod之间的通信是如何实现的?

代码语言:javascript复制
Pod 是 Kubernetes 的基本部署单位,包含一个或多个容器。
Pod 内的容器共享相同的网络命名空间,可以通过 localhost 相互通信。
Pod 之间可以通过 Service 或直接使用 Pod IP 进行通信

什么是Service?Service有哪些类型?它们的区别是什么?

代码语言:javascript复制
Service 是 Kubernetes 提供的一种抽象,用于将一组具有相同功能的 Pod 暴露给其他 Pod 或外部客户端。Service 有以下类型:

ClusterIP:提供一个集群内部的虚拟 IP 地址,供其他 Pod 访问
NodePort:在每个节点上暴露一个端口,供外部访问
LoadBalancer:为 Service 提供一个外部负载均衡器,供外部访问
ExternalName:将 Service 映射到一个外部的名称,如 DNS 名称

Kubernetes中的控制器有哪些?它们各自的作用是什么?

代码语言:javascript复制
Deployment:用于管理无状态应用程序的 Pod
StatefulSet:用于管理有状态应用程序的 Pod
DaemonSet:在每个节点上运行一个 Pod 实例
ReplicaSet:确保指定数量的 Pod 副本始终运行
Job:执行一次性任务
CronJob:执行定时任务

Kubernetes中的存储卷(Volume)有哪些类型?它们的区别是什么?

代码语言:javascript复制
emptyDir:临时存储,与 Pod 生命周期相同
hostPath:挂载节点上的文件或目录到 Pod
nfs:将 NFS 共享挂载到 Pod
persistentVolumeClaim:使用 PVC 管理持久化存储
其他存储插件(如 EBS、GCE PD 等)

网络插件(CNI)是什么?它的作用是什么?

代码语言:javascript复制
容器网络接口(CNI)是一种插件化的网络解决方案,负责配置 Pod 之间的网络通信

Kubernetes中的调度器是什么?它的作用是什么?

代码语言:javascript复制
Kubernetes 调度器负责根据 Pod 的资源需求、优先级等因素将 Pod 分配到合适的节点上运行。

Kubernetes中的监控和日志收集是如何实现的?

代码语言:javascript复制
Kubernetes 中的监控和日志收集通常通过第三方工具实现,如 Prometheus、Grafana(监控)和 Fluentd、Elasticsearch(日志收集)

Kubernetes中的安全机制有哪些?如何保障Pod的安全性?

代码语言:javascript复制
身份认证和授权(RBAC)
网络策略
节点安全
容器安全(如安全上下文、限制容器权限等)

Kubernetes中的自动伸缩是如何实现的?有哪些策略可以使用?

代码语言:javascript复制
水平 Pod 自动伸缩(HPA):根据 CPU 利用率或自定义指标自动调整 Pod 副本数量。
- 垂直 Pod 自动伸缩(VPA):根据应用程序的资源需求自动调整 Pod 的 CPU 和内存资源限制。
- 集群自动伸缩(CA):根据集群中的资源需求自动调整节点数量。

0 人点赞