文章目录
- 一、简述 Kubernetes 如何保证集群的安全性
- 二、简述 Kubernetes 准入机制
- 三、简述 Kubernetes RBAC 及其特点(优势)
- 四、简述 Kubernetes Secret 作用
- 五、简述 Kubernetes Secret 有哪些使用方式
- 六、简述 Kubernetes PodSecurityPolicy 机制
- 七、简述 Kubernetes PodSecurityPolicy 机制能实现哪些安全策略
- 八、简述 Kubernetes 网络模型
- 九、简述 Kubernetes CNI 模型
- 十、简述 Kubernetes 网络策略
- 十一、简述 Kubernetes 网络策略原理
- 十二、简述 Kubernetes 中 flannel 的作用
- 十三、简述 Kubernetes Calico 网络组件实现原理
- 十四、简述 Kubernetes 共享存储的作用
- 十五、简述 Kubernetes 数据持久化的方式有哪些
- 十六、简述 Kubernetes PV 和 PVC
- 十七、简述 Kubernetes PV 生命周期内的阶段
- 十八、简述 Kubernetes 所支持的存储供应模式
- 十九、简述 Kubernetes CSI 模型
- 二十、简述 Kubernetes Worker 节点加入集群的过程
- 二十一、简述 Kubernetes Pod 如何实现对节点的资源控制
- 二十二、简述 Kubernetes Requests 和 Limits 如何影响 Pod 的调度
- 二十三、简述 Kubernetes Metric Service
- 二十四、简述 Kubernetes 中,如何使用 EFK 实现日志的统一管理
- 二十五、简述 Kubernetes 如何进行优雅的节点关机维护
- 二十六、简述 Kubernetes 集群联邦
- 二十七、简述 Helm 及其优势
- 二十八、什么是 Headless Service
- 二十九、简述K8s 常用的 CNI 网络插件(calico && flannel)的工作原理和区别
- 三十、Worker 节点宕机,简述 Pods 驱逐流程
- 三十一、简述 kube-proxy 的三种工作模式和原理
- 三十二、Docker 的网络通信模式
一、简述 Kubernetes 如何保证集群的安全性
- Kubernetes 通过一系列机制来实现集群的安全控制,主要有如下不同的维度:
- 基础设施方面:保证容器与其所在宿主机的隔离;
- 权限方面:
- 最小权限原则:合理限制所有组件的权限,确保组件只执行它被授权的行为,通过限制单个组件的能力来限制它的权限范围。
- 用户权限:划分普通用户和管理员的角色。
- 集群方面:
- API Server 的认证授权:Kubernetes 集群中所有资源的访问和变更都是通过 Kubernetes API Server 来实现的,因此需要建议采用更安全的 HTTPS或 Token 来识别和认证客户端身份(Authentication),以及随后访问权限的授权(Authorization)环节。
- API Server 的授权管理:通过授权策略来决定一个 API 调用是否合法。对合法用户进行授权并且随后在用户访问时进行鉴权,建议采用更安全的 RBAC 方式来提升集群安全授权。
- 敏感数据引入 Secret 机制:对于集群敏感数据建议使用 Secret 方式进行保护。
- AdmissionControl(准入机制):对 kubernetes api 的请求过程中,顺序为:先经过认证 & 授权,然后执行准入操作,最后对目标对象进行操作。
二、简述 Kubernetes 准入机制
- 在对集群进行请求时,每个准入控制代码都按照一定顺序执行。如果有一个准入控制拒绝了此次请求,那么整个请求的结果将会立即返回,并提示用户相应的 error 信息。
- 准入控制(AdmissionControl)准入控制本质上为一段准入代码,在对 kubernetes api 的请求过程中,顺序为:先经过认证 & 授权,然后执行准入操作,最后对目标对象进行操作。常用组件(控制代码)如下:
- AlwaysAdmit:允许所有请求
- AlwaysDeny:禁止所有请求,多用于测试环境。
- ServiceAccount:它将 serviceAccounts 实现了自动化,它会辅助 serviceAccount做一些事情,比如如果 pod 没有 serviceAccount 属性,它会自动添加一个 default,并确保 pod 的 serviceAccount 始终存在。
- LimitRanger:观察所有的请求,确保没有违反已经定义好的约束条件,这些条件定义在 namespace 中 LimitRange 对象中。
- NamespaceExists:观察所有的请求,如果请求尝试创建一个不存在的 namespace,则这个请求被拒绝。
三、简述 Kubernetes RBAC 及其特点(优势)
- RBAC 是基于角色的访问控制,是一种基于个人用户的角色来管理对计算机或网络资源的访问的方法。
- 相对于其他授权模式,RBAC 具有如下优势:
- 对集群中的资源和非资源权限均有完整的覆盖。
- 整个 RBAC 完全由几个 API 对象完成, 同其他 API 对象一样, 可以用 kubectl或 API 进行操作。
- 可以在运行时进行调整,无须重新启动 API Server。
四、简述 Kubernetes Secret 作用
- Secret 对象,主要作用是保管私密数据,比如密码、OAuth Tokens、SSH Keys 等信息。
- 将这些私密信息放在 Secret 对象中比直接放在 Pod 或 Docker Image 中更安全,也更便于使用和分发。
五、简述 Kubernetes Secret 有哪些使用方式
创建完 secret 之后,可通过如下三种方式使用:
- 在创建 Pod 时,通过为 Pod 指定 Service Account 来自动使用该 Secret。
- 通过挂载该 Secret 到 Pod 来使用它。
- 在 Docker 镜像下载时使用,通过指定 Pod 的 spc.ImagePullSecrets 来引用它。
六、简述 Kubernetes PodSecurityPolicy 机制
- Kubernetes PodSecurityPolicy 是为了更精细地控制 Pod 对资源的使用方式以及提升安全策略。
- 在开启 PodSecurityPolicy 准入控制器后,Kubernetes 默认不允许创建任何 Pod,需要创建 PodSecurityPolicy 策略和相应的 RBAC 授权策略(Authorizing Policies),Pod才能创建成功。
七、简述 Kubernetes PodSecurityPolicy 机制能实现哪些安全策略
在 PodSecurityPolicy 对象中可以设置不同字段来控制 Pod 运行时的各种安全策略,常见的有:
- 特权模式:privileged 是否允许 Pod 以特权模式运行。
- 宿主机资源:控制 Pod 对宿主机资源的控制,如 hostPID:是否允许 Pod 共享宿主机的进程空间。
- 用户和组:设置运行容器的用户 ID(范围)或组(范围)。
- 提升权限:AllowPrivilegeEscalation:设置容器内的子进程是否可以提升权限,通常在设置非 root 用户(MustRunAsNonRoot)时进行设置。
- SELinux:进行 SELinux 的相关配置。
八、简述 Kubernetes 网络模型
- Kubernetes 网络模型中每个 Pod 都拥有一个独立的 IP 地址,并假定所有 Pod 都在一个可以直接连通的、扁平的网络空间中。所以不管它们是否运行在同一个 Node(宿主机)中,都要求它们可以直接通过对方的 IP 进行访问。设计这个原则的原因是,用户不需要额外考虑如何建立 Pod 之间的连接,也不需要考虑如何将容器端口映射到主机端口等问题。
- 同时为每个 Pod 都设置一个 IP 地址的模型使得同一个 Pod 内的不同容器会共享同一个网络命名空间,也就是同一个 Linux 网络协议栈。这就意味着同一个 Pod 内的容器可以通过 localhost 来连接对方的端口。
- 在 Kubernetes 的集群里,IP 是以 Pod 为单位进

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

被折叠的 条评论
为什么被折叠?



