50. 解释ResourceQuota的作用。
答:资源配额**(ResourceQuota)**Kubernetes中的一种资源平衡机制,他作用在命名空间上,可以用来限制命名空间的资源使用量,如CPU、内存、持久卷等。ResourceQuote同时也可以用来限制命名空间中的对象数量(如Pod,Service等)防止因对象过多导致集群的性能下降。通过这种命名空间级别的限制,可以确保单个命名空间不会消耗过量的集群资源,造成资源分配不均等问题,可以有效地进行成本控制。
51. 解释Service Account的用途。
答:Service Account是kuberneters中用来建立Pod和APIserver之间通信的组件,它作用于命名空间,当命名空间中的Pod被创建时就会被赋予Serviceaccount(自定义或默认),运行中的容器会使用Service Account的token和证书来实现对APIserver及其他外部服务的通信,进一步调用他们来实现各种功能。
52. 详细解释Role和ClusterRole。
答:Role和ClusterRole都是基于角色的访问控制中定义的控制对象,他们都是用来进行访问控制和权限划分的,用来限制不同用户对资源的访问来平衡资源分配以提高集群整体的工作效率,他们对的权限的分配都是累加到一起的,不会产生冲突和拒绝。两者唯一不同的是他们的作用域,Role作用于命名空间中,使用RoleBinding绑定角色限制其使用命名空间内资源;ClusterRole作用域集群,使用clusterrolebinding绑定到角色限制其对集群资源的使用。
53. 什么是K8s的NetworkPolicy?
答:NetworkPolicy是Kubernetes中用来进行Pod间通信访问控制的模块,它通过选择器实现Pod的进出口访问控制,通过相加的网络策略的来控制Pod流量的特定方向输出和输入,是生产环境安全加固的必备工具,能够在容器层面实现微服务的网络隔离,在出现工具时有效防止攻击蔓延。
54. 详细描述在K8s中如何控制跨Namespace的Pod访问?
答:控制跨 Namespace 访问的核心思路是:用 namespaceSelector 和 podSelector 在 NetworkPolicy 的规则中明确指定允许通信的源和目标所在的命名空间和 Pod。本质上是通过网络策略(NetworkPolicy)来实现的, 调用CNI 网络插件(如 Calico、Cilium、Weave Net 等)来实际执行规则,通过标签(Label)选择器来定义 Pod,并规定Pod 被允许与谁通信(入站/Ingress 和出站/Egress)
55. 举例说明K8s中都有哪些常规的维护管理操作。
答:工作负载检查:部署和更新应用;应用回滚,故障排除等。
配置存储管理:管理配置信息;管理持久化存储。
集群节点监控与维护:节点维护;查看资源使用情况,调节负载不均衡。
网络服务检查:管理网络访问服务;配置路由规则等。
安全管理和权限控制:为角色绑定ServiceAccount,为应用设置SELinux标签。
56. 如何升级K8s到新的版本?在升级过程中应该注意哪些事项?
答:unlock解锁版本,遵循先控制平面再工作节点的原则,对各个节点逐次升级,升级前详细地查看官方的版本声明,重点关注新旧版本间的弃用部分和变更部分。接着备份ETCD确保所有关键组持久化数据及一些配置文件都得到备份,检查集群健康状态。先Masters后Workers,节点内升级前必须先驱逐Pod,先kubeadm,再升级kubelet和kubectl,升级后恢复节点的调度能力,接着再升级工作节点。所有节点升级完成后检测版本,确认无误后再锁定Kubernetes版本。
57. 解释ETCD及其备份和恢复的过程。
答:ETCD的本质是一个分布式的强一致性键值对数据库,它会把集群中所有的元数据存储起来,备份的过程就是对存储的元数据进行快照备份的过程,备份时会使用ETCD的密钥,CA证书进行安全验证。恢复过程会将集群中所有节点基于备份快照重建,将系统回滚到备份时的版本,会失去备份后的所有变更。恢复时会停止并删除所有ETCD节点上的ETCD元数据并将快照内容写入其中,待所有节点恢复完成再启动服务。
58. Kustomization在Kubernetes中的作用。
答:Kustomization是一个Kubernetes系统配置管理工具,它可以通过一个基础的kustonization.yaml文件,通过打补丁的方式针对不同环境的细微差距来生成针对性的配置文件部署清单,加强了配置文件的复用性,可以简化集群部署时大量节点中繁琐的配置工作,大大提高生产效率。
59. 什么是CRD,它对K8s有什么重要意义?
答:CRD(Custom Resource Definition)是Kubernetes中用于扩展的API机制,允许用户根据需求创建自己的资源类型CR;CRD提高了Kubernetes的扩展性和灵活性,把扩展能力交给用户,加强了Kubernetes的可用性。通过声明式的API简化了操作的复杂性,用户只需要告诉系统期望状态,控制器会自动完成复杂的步骤达到用户期望状态;得益于CRD的高扩展性,Kubernetes从一个简单的容器编排工具跃升为云原生平台的操作系统。
60. CRD 的典型应用场景有哪些,举例说明。
答:在operator模式下进行复杂的有状态应用管理,如数据库,消息队列等;定义和运行CI/CD流水线,使用CRD将生产环境的部署和持续管理集成到一起;将大量的网络设备全部虚拟化,将复杂的网络流量规则抽象为Kubernetes资源,实现服务网格控制;使用声明式资源告诉系统代码部署与仓库之间的关系,实现任务的持续交付;统一管理集群内外资源,将控制平面的能力扩展到集群外,使生产中的大量任务都能够被声明式定义并执行。
61. 结合教材,解释CRD的完整创建和使用过程。
答:首先以yaml文件的格式声明CRD类型的资源,定义资源的版本、作用域,名称等等;使用定义的yaml文件创建CDR实例;实例化CRD中定义的资源,创建对应的资源CR;接着针对资源开发控制器,编写监听器及业务逻辑的实现代码,将其编译为Docker镜像。最后将控制器部署到集群中开始工作。
62. Gateway API有哪几个核心组件,分别有哪些作用?
答:GatewayClass:用于定义一组相同配置网关的抽象类;
Gateway:在特定集群中实例化网关,用于定义确定的网络服务需求;
HTTPRoute:复制定义如何将进入网关的HTTP请求映射到集群内部的后端服务,使用路由规则告诉Gateway如何分发处理网络流量。
63. 说明PriorityClass是在解决K8s资源争用时的调度决策原理。
答:当集群资源不足时,通过为 Pod 设置明确的优先级,调度器会优先处理高优先级 Pod 的调度请求。如果无法直接调度,调度器会主动驱逐一个或多个低优先级的 Pod 以释放资源,从而确保更重要的业务(高优先级 Pod)能够优先获得资源并运行。简单来说它是一种牺牲低重要性任务的服务质量(可能被中断),来保障高重要性服务可用性的主动调度策略
64. HPA是如何在K8s集群中实现自动扩缩容机制的?
答:HPA通过Metrics Server等组件收集Pod的CPU、内存等指标,并根据当前指标值和目标值计算所需Pod数量,之后通过Deployment或ReplicaSet调整Pod副本数量,并在达到目标后持续监控指标,确保Pod数量始终满足需求。
65. 请谈谈Argo CD的核心架构组件有哪些,分别做简要说明。
答:Argo CD API Server:提供交互界面,处理用户请求,通过与KubernetesAPI交互来管理集群资源。
Repository Server:与Git仓库交互,拉取配置并渲染为集群资源。
Application Controller:持续监控Git仓库和集群状态并通过同步修复操作保证集群状态和Git的期望持续一致。
Redis:高性能数据库,缓存数据,提高效率。
User Interface (UI):提供可视化界面,方便用户查看应用的执行状态、健康状态和同步状态并提供同步和修复操作。
66. 你是如何理解CI/CD流水线技术的,它和提升企业竞争力有什么关系?
答:我对CI/CD的理解:它是一种颠覆了传统软件开发及维护流程的革命性工具,它有效地降低了软件发布的风险,取代了传统的因为传输成本和时间导致的频率限制,将自动化流水线的工程思维统筹到软件发布的流程中,使得应用软件能够高效地、高频地进行版本更新和迭代。
对企业而言,高度自动化的CI/CD流水线节省了大量的人力成本和时间成本,使企业能够以更快的速度和更高的质量完成软件的交付任务,在快速的版本优化迭代下,新功能的上线,用户的反馈,市场的响应都能加快软件朝着更贴近市场需求的方向靠拢,对企业快速抢占市场和建立用户生态而言,CI/CD都是绝佳的竞争工具。