K8s面试题——基础篇2

本文围绕 Kubernetes 展开,介绍了其保证集群安全的机制,如准入机制、RBAC 等;阐述了网络模型、CNI 模型、网络策略等网络相关内容;说明了共享存储、数据持久化方式;还提及节点加入、资源控制、日志管理等,以及 Helm、Headless Service 等相关概念。

文章目录

一、简述 Kubernetes 如何保证集群的安全性

  • Kubernetes 通过一系列机制来实现集群的安全控制,主要有如下不同的维度:
  1. 基础设施方面:保证容器与其所在宿主机的隔离;
  2. 权限方面:
    • 最小权限原则:合理限制所有组件的权限,确保组件只执行它被授权的行为,通过限制单个组件的能力来限制它的权限范围。
    • 用户权限:划分普通用户和管理员的角色。
  3. 集群方面:
    • API Server 的认证授权:Kubernetes 集群中所有资源的访问和变更都是通过 Kubernetes API Server 来实现的,因此需要建议采用更安全的 HTTPS或 Token 来识别和认证客户端身份(Authentication),以及随后访问权限的授权(Authorization)环节。
    • API Server 的授权管理:通过授权策略来决定一个 API 调用是否合法。对合法用户进行授权并且随后在用户访问时进行鉴权,建议采用更安全的 RBAC 方式来提升集群安全授权。
    • 敏感数据引入 Secret 机制:对于集群敏感数据建议使用 Secret 方式进行保护。
    • AdmissionControl(准入机制):对 kubernetes api 的请求过程中,顺序为:先经过认证 & 授权,然后执行准入操作,最后对目标对象进行操作。

二、简述 Kubernetes 准入机制

  1. 在对集群进行请求时,每个准入控制代码都按照一定顺序执行。如果有一个准入控制拒绝了此次请求,那么整个请求的结果将会立即返回,并提示用户相应的 error 信息。
  2. 准入控制(AdmissionControl)准入控制本质上为一段准入代码,在对 kubernetes api 的请求过程中,顺序为:先经过认证 & 授权,然后执行准入操作,最后对目标对象进行操作。常用组件(控制代码)如下:
    • AlwaysAdmit:允许所有请求
    • AlwaysDeny:禁止所有请求,多用于测试环境。
    • ServiceAccount:它将 serviceAccounts 实现了自动化,它会辅助 serviceAccount做一些事情,比如如果 pod 没有 serviceAccount 属性,它会自动添加一个 default,并确保 pod 的 serviceAccount 始终存在。
    • LimitRanger:观察所有的请求,确保没有违反已经定义好的约束条件,这些条件定义在 namespace 中 LimitRange 对象中。
    • NamespaceExists:观察所有的请求,如果请求尝试创建一个不存在的 namespace,则这个请求被拒绝。

三、简述 Kubernetes RBAC 及其特点(优势)

  1. RBAC 是基于角色的访问控制,是一种基于个人用户的角色来管理对计算机或网络资源的访问的方法。
  2. 相对于其他授权模式,RBAC 具有如下优势:
    • 对集群中的资源和非资源权限均有完整的覆盖。
    • 整个 RBAC 完全由几个 API 对象完成, 同其他 API 对象一样, 可以用 kubectl或 API 进行操作。
    • 可以在运行时进行调整,无须重新启动 API Server。

四、简述 Kubernetes Secret 作用

  • Secret 对象,主要作用是保管私密数据,比如密码、OAuth Tokens、SSH Keys 等信息。
  • 将这些私密信息放在 Secret 对象中比直接放在 Pod 或 Docker Image 中更安全,也更便于使用和分发。

五、简述 Kubernetes Secret 有哪些使用方式

创建完 secret 之后,可通过如下三种方式使用:

  1. 在创建 Pod 时,通过为 Pod 指定 Service Account 来自动使用该 Secret。
  2. 通过挂载该 Secret 到 Pod 来使用它。
  3. 在 Docker 镜像下载时使用,通过指定 Pod 的 spc.ImagePullSecrets 来引用它。

六、简述 Kubernetes PodSecurityPolicy 机制

  • Kubernetes PodSecurityPolicy 是为了更精细地控制 Pod 对资源的使用方式以及提升安全策略。
  • 在开启 PodSecurityPolicy 准入控制器后,Kubernetes 默认不允许创建任何 Pod,需要创建 PodSecurityPolicy 策略和相应的 RBAC 授权策略(Authorizing Policies),Pod才能创建成功。

七、简述 Kubernetes PodSecurityPolicy 机制能实现哪些安全策略

在 PodSecurityPolicy 对象中可以设置不同字段来控制 Pod 运行时的各种安全策略,常见的有:

  1. 特权模式:privileged 是否允许 Pod 以特权模式运行。
  2. 宿主机资源:控制 Pod 对宿主机资源的控制,如 hostPID:是否允许 Pod 共享宿主机的进程空间。
  3. 用户和组:设置运行容器的用户 ID(范围)或组(范围)。
  4. 提升权限:AllowPrivilegeEscalation:设置容器内的子进程是否可以提升权限,通常在设置非 root 用户(MustRunAsNonRoot)时进行设置。
  5. SELinux:进行 SELinux 的相关配置。

八、简述 Kubernetes 网络模型

  • Kubernetes 网络模型中每个 Pod 都拥有一个独立的 IP 地址,并假定所有 Pod 都在一个可以直接连通的、扁平的网络空间中。所以不管它们是否运行在同一个 Node(宿主机)中,都要求它们可以直接通过对方的 IP 进行访问。设计这个原则的原因是,用户不需要额外考虑如何建立 Pod 之间的连接,也不需要考虑如何将容器端口映射到主机端口等问题。
  • 同时为每个 Pod 都设置一个 IP 地址的模型使得同一个 Pod 内的不同容器会共享同一个网络命名空间,也就是同一个 Linux 网络协议栈。这就意味着同一个 Pod 内的容器可以通过 localhost 来连接对方的端口。
  • 在 Kubernetes 的集群里,IP 是以 Pod 为单位进
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马瑞晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值