当前位置: 首页 > news >正文

K8S集群管理(4)

目录

1. 解释ResourceQuota的作用。

2. 解释Service Account的用途。

3. 详细解释Role和ClusterRole。

4. 什么是K8s的NetworkPolicy?

5. 详细描述在K8s中如何控制跨Namespace的Pod访问?

6. 举例说明K8s中都有哪些常规的维护管理操作。

7. 如何升级K8s到新的版本?在升级过程中应该注意哪些事项?

8. 解释ETCD及其备份和恢复的过程。

9. Kustomization在Kubernetes中的作用。

10. 什么是CRD,它对K8s有什么重要意义?

11. CRD 的典型应用场景有哪些,举例说明。

12. 结合教材,解释CRD的完整创建和使用过程。

13. Gateway API有哪几个核心组件,分别有哪些作用?

14.说明PriorityClass是在解决K8s资源争用时的调度决策原理。

15. HPA是如何在K8s集群中实现自动扩缩容机制的?

16.请谈谈Argo CD的核心架构组件有哪些,分别做简要说明。

17.你是如何理解CI/CD流水线技术的,它和提升企业竞争力有什么关系?

1. 解释ResourceQuota的作用。

ResourceQuota(资源配额)用于在 Kubernetes 命名空间级别限制资源使用,防止单个命名空间过度消耗集群资源,确保资源公平分配。其主要作用包括:

限制命名空间内可使用的计算资源(如 CPU、内存)和存储资源总量;

限制命名空间内可创建的对象数量(如 Pod、Service、ConfigMap 等);

保障集群资源的合理利用,避免资源滥用导致的集群不稳定。

2. 解释Service Account的用途。

Service Account(服务账户)是 Kubernetes 中为 Pod 内运行的进程提供身份认证的实体,主要用途包括:

为 Pod 提供访问 Kubernetes API Server 的身份凭证(通过挂载的令牌文件);

与 RBAC(基于角色的访问控制)结合,控制 Pod 对集群资源的操作权限;

区别于 “用户账户”(面向人类用户),Service Account 是面向 Pod 内应用程序的自动化身份,便于集群内服务间的安全通信。

3. 详细解释Role和ClusterRole。

两者均为 Kubernetes 中定义权限规则的资源,核心区别在于作用范围:

Role:

作用范围限定在单个命名空间内;

仅能对该命名空间内的资源(如 Pod、Deployment)定义操作权限(如 get、list、create)。

ClusterRole:

作用范围为整个集群,是集群级别的权限集合;

可对集群级资源(如 Node、Namespace)、跨命名空间资源(如跨命名空间的 Service)或所有命名空间的资源定义权限。

4. 什么是K8s的NetworkPolicy?

NetworkPolicy 是 Kubernetes 中用于控制 Pod 间网络通信的规则集合,作用包括:

基于 Pod 标签、命名空间标签筛选流量,定义入站(Ingress)和出站(Egress)规则;

限制哪些 Pod 可以被访问(入站)或可以访问其他 Pod / 外部服务(出站);

默认情况下,Pod 间可自由通信,NetworkPolicy 可实现 “默认拒绝,按需允许” 的安全隔离,增强集群网络安全性。

5. 详细描述在K8s中如何控制跨Namespace的Pod访问?

1NetworkPolicy:通过namespaceSelector在规则中匹配目标命名空间

(2)Service 与 Endpoint:跨命名空间访问可通过<service-name>.<Namespace

-name>.svc.cluster.local的 DNS 格式,但需结合 NetworkPolicy 限制是否允许实际通信。

  1. RBAC 权限控制:若涉及 API 操作(如跨命名空间查询 Pod),可通过 ClusterRole 定义跨命名空间权限,再通过 ClusterRoleBinding 绑定。

6. 举例说明K8s中都有哪些常规的维护管理操作。

节点管理:标记节点不可调度(kubectl cordon)、排空节点(kubectl drain)进行硬件维护;

资源监控:通过kubectl top、metrics-server 或 Prometheus 监控 Pod / 节点资源使用率;

日志与调试:查看 Pod 日志(kubectl logs)、进入容器调试(kubectl exec)、检查事件(kubectl get events);

应用更新:滚动更新 Deployment(kubectl set image)、回滚错误版本(kubectl rollout undo);

资源清理:删除无用 Pod、PV/PVC、未使用的 ConfigMap/Secret;

备份与恢复:定期备份 etcd 数据(集群状态存储);

安全维护:更新镜像版本、轮换 Service Account 令牌、扫描镜像漏洞。

7. 如何升级K8s到新的版本?在升级过程中应该注意哪些事项?

升级步骤:

升级控制平面:先升级 kube-apiserver,再升级 controller-manager、scheduler 等组件;

升级节点:驱逐节点上的 Pod(drain),升级 kubelet 和 kube-proxy,再将节点重新加入集群(uncordon);

验证:检查组件状态(kubectl get pods -n kube-system)、节点版本(kubectl get nodes)。

注意事项:

遵循 “小版本逐步升级” 原则(如 v1.24→v1.25→v1.26),避免跨多个次要版本直接升级;

升级前备份 etcd 数据,以便回滚;

确认集群插件(如 CNI 网络插件、Ingress 控制器)与目标版本兼容;

升级过程中控制平面可能短暂不可用,需避开业务高峰期;

升级后验证核心功能(如 Pod 调度、服务发现、网络通信)。

8. 解释ETCD及其备份和恢复的过程。

ETCD:是 Kubernetes 的分布式键值存储,用于保存集群所有状态(如 Pod、Service、配置等),是集群的 “数据库”。

备份过程:

1使用etcdctl工具执行快照

恢复过程:

1停止使用旧数据的控制平面组件(如 kube-apiserver);

2从快照恢复数据

3)重新配置控制平面组件,指向恢复后的 etcd 数据目录,重启组件

9. Kustomization在Kubernetes中的作用。

Kustomization 是 Kubernetes 的原生配置管理工具,通过kustomization.yaml文件定义配置,实现:

配置复用:基于 “基础配置” 定义不同环境(开发、测试、生产)的差异化配置(如资源限额、镜像版本),无需复制整个配置文件;

声明式管理:避免使用模板引擎(如 Helm),直接通过 YAML 文件的覆盖(overlays)机制管理配置差异;

简化维护:集中管理标签、注解、名称前缀等,减少配置冗余,便于批量修改。

10. 什么是CRD,它对K8s有什么重要意义?

CRD(CustomResourceDefinition,自定义资源定义)是 Kubernetes 中用于扩展 API 的机制,允许用户定义自己的资源类型(如Database、MessageQueue),就像内置资源(Pod、Service)一样被 Kubernetes 管理。

重要意义:

扩展 Kubernetes 的能力,使其能管理业务特定资源(如数据库实例、AI 模型);

实现 “声明式 API” 范式,用户通过定义 CR(Custom Resource,自定义资源)描述期望状态,由控制器(如 Operator)自动维护实际状态;

简化复杂应用的管理,将业务逻辑封装为 Kubernetes 原生资源,提升运维效率。

11. CRD 的典型应用场景有哪些,举例说明。

CRD 适用于需要将自定义资源纳入 Kubernetes 管理的场景,例如:

数据库管理:定义MySQLInstance资源,通过控制器自动创建数据库 Pod、PV,并处理备份、扩容等操作(如 Percona Operator);

消息队列:定义KafkaTopic资源,控制器自动在 Kafka 集群中创建对应的 Topic 并配置分区;

CI/CD 工作流:如 Argo Workflows 通过 CRD 定义Workflow资源,描述任务依赖和执行逻辑;

监控规则:定义CustomPrometheusRule资源,控制器自动将规则同步到 Prometheus 配置中。

12. 结合教材,解释CRD的完整创建和使用过程。

1创建 CRD 定义:定义资源的组(group)、版本(version)、名称(kind)等元信息

执行kubectl apply -f crd.yaml创建 CRD。

(2)创建 CR 实例:使用定义的资源类型创建具体实例:

执行kubectl apply -f db-instance.yaml创建 CR。

(3)创建控制器(Operator):通过控制器监听 CR 的变化,实现状态同步(如创建 MySQL Pod)。可使用 Operator SDK 或 Kubebuilder 开发控制器,逻辑包括:

监听Database资源的新增 / 更新事件;

根据 CR 的spec字段创建对应的 Deployment、Service 等资源;

定期检查实际状态与spec是否一致,自动修复差异。

(4)使用与管理:通过kubectl管理 CR,如kubectl get databases查看实例,kubectl edit database mydb修改配置。

13. Gateway API有哪几个核心组件,分别有哪些作用?

Gateway API 是 Kubernetes 新一代流量管理 API,替代 Ingress,核心组件包括:

GatewayClass:定义网关类型的模板,由基础设施提供者(如 NGINX、Istio)管理,指定网关的实现方式(如控制器、配置)。

Gateway:具体的网关实例,绑定到网络端点(如 Service 的 NodePort),负责接收外部流量,关联到一个 GatewayClass。

Route(路由):定义流量转发规则,如HTTPRoute(HTTP 流量)、GRPCRoute(GRPC 流量),指定匹配条件(如路径、主机名)和后端服务(如 Service),并关联到一个或多个 Gateway。

作用:提供更灵活的流量管理能力(如多团队共享网关、细粒度路由规则、跨命名空间路由),比 Ingress 更标准化、可扩展。

14.说明PriorityClass是在解决K8s资源争用时的调度决策原理。

PriorityClass 用于定义 Pod 的优先级(数值越高优先级越高),在资源争用时的调度逻辑如下:

当集群资源充足时,优先级不影响调度,仅作为元数据;

当资源不足(如节点 CPU / 内存不足)时:

调度器优先调度高优先级 Pod,低优先级 Pod 可能被 “挤掉”(无法调度);

若需驱逐已有 Pod 释放资源,低优先级 Pod 会被优先驱逐(遵循 “优先级抢占” 机制),确保高优先级服务(如核心业务)的可用性。

通过 PriorityClass,可保障关键业务在资源紧张时的稳定性。

15. HPA是如何在K8s集群中实现自动扩缩容机制的?

HPA(Horizontal Pod Autoscaler,水平 Pod 自动扩缩容)通过以下流程实现自动扩缩容:

指标收集:依赖 metrics-server 或自定义指标适配器(如 Prometheus Adapter)收集 Pod 的指标(CPU 使用率、内存、自定义指标如 QPS);

指标评估:HPA 控制器定期(默认 15 秒)检查当前指标值与目标值(如 CPU 使用率 80%)的差异;

计算副本数:根据预设算法(如期望副本数 = 当前副本数 × (当前指标值 / 目标指标值))计算所需副本数,受限于minReplicas和maxReplicas;

执行扩缩容:HPA 通过修改 Deployment/StatefulSet 的replicas字段,触发 Pod 的创建或删除。

16.请谈谈Argo CD的核心架构组件有哪些,分别做简要说明。

Argo CD 是基于 GitOps 的持续部署工具,核心组件包括:

Repo Server:负责从 Git 仓库拉取配置代码,通过 kustomize/helm 渲染生成 Kubernetes manifests,并缓存结果。

Application Controller:核心控制器,持续监控应用的实际状态(集群内)与期望状态(Git 仓库)的差异,触发同步操作(如创建 / 更新资源)。

API Server:提供 REST API,用于接收用户操作(如创建 Application、触发同步)。

UI:Web 界面,可视化展示应用状态、同步历史、差异对比等。

Dex:身份认证组件,支持与 LDAP、OAuth2 等集成,管理用户访问权限。

17.你是如何理解CI/CD流水线技术的,它和提升企业竞争力有什么关系?

CI/CD 流水线是持续集成(Continuous Integration)和持续部署(Continuous Deployment)的自动化流程:

CI:代码提交后自动触发构建、测试(单元测试、集成测试),快速发现错误;

CD:测试通过后自动部署到开发、测试或生产环境,实现频繁、可靠的发布。

与企业竞争力的关系:

加速交付:缩短从代码开发到产品上线的周期,帮助企业快速响应市场需求(如迭代新功能、修复漏洞);

提升质量:自动化测试减少人为错误,持续反馈机制降低发布风险;

增强协作:标准化流程促进开发、测试、运维团队协同,减少沟通成本;

迭代创新:支持小批量、高频次发布,使企业能快速验证业务假设,在竞争中保持灵活性和领先性。


文章转载自:

http://ayo5r2Df.Ltffr.cn
http://nPbF0hYw.Ltffr.cn
http://fXPN3Yyw.Ltffr.cn
http://uUg1BGH2.Ltffr.cn
http://F5wV5dOO.Ltffr.cn
http://YbP1FvWY.Ltffr.cn
http://B7eAhBSQ.Ltffr.cn
http://CyivycwU.Ltffr.cn
http://FgduTz0W.Ltffr.cn
http://LL9XSy5j.Ltffr.cn
http://O2QUJaSM.Ltffr.cn
http://0aYdOpPR.Ltffr.cn
http://W2jcsNeu.Ltffr.cn
http://K0RgUHoj.Ltffr.cn
http://wMdyYh1m.Ltffr.cn
http://BV8ia3FP.Ltffr.cn
http://9KU8lDzm.Ltffr.cn
http://3ONgLOy2.Ltffr.cn
http://v0cEzG37.Ltffr.cn
http://qWzPBViv.Ltffr.cn
http://g34quPow.Ltffr.cn
http://fisVS3qZ.Ltffr.cn
http://atPaeBRa.Ltffr.cn
http://2J16sihm.Ltffr.cn
http://w4Z4yINe.Ltffr.cn
http://jafFphX1.Ltffr.cn
http://fG8aTMet.Ltffr.cn
http://azeGucIO.Ltffr.cn
http://YMu16nPX.Ltffr.cn
http://85jxtwqC.Ltffr.cn
http://www.dtcms.com/a/375541.html

相关文章:

  • flutter TabBar 设置isScrollable 第一个有间距
  • 学习 Android (二十一) 学习 OpenCV (六)
  • Maven项目中修改公共依赖项目并发布到nexus供三方引用全流程示例
  • GD32VW553-IOT开发板移植适配openharmony
  • nuxt3在使用vue-echarts报错 document is not defined
  • 嵌入式第四十九天(ARM汇编指令)
  • RS485通信 , 和modus RTU
  • 7. LangChain4j + 记忆缓存详细说明
  • 【超简单】Anaconda 安装教程(Windows 图文版)
  • Docker 搭建 Harbor 镜像仓库
  • 数据采集平台的起源与演进:从ETL到数据复制
  • Blender 制作中世纪风格的水磨坊(2):场景元素、纹理与渲染后期
  • 【Python】pytorch安装(使用conda)
  • 阿里云centos7-mysql的使用
  • Android实战进阶 - 启动页
  • 【从零开始编写数据库系统】基于Python语言实现存储引擎
  • 【Pywinauto库】8.3 pywinauto.findwindows 模块
  • 351章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • 禅道,用域名访问之后不能登录的问题
  • Lodash-es 完整开发指南:ES模块化JavaScript工具库实战教程
  • 实践《数字图像处理》之图像方向性自适应阈值处理
  • 【Linux】系统部分——信号的概念和产生
  • android定制系统完全解除应用安装限制
  • 第2节-过滤表中的行-BETWEEN
  • OpenLayers数据源集成 -- 章节三:矢量要素图层详解
  • 基于AI Agent的智能决策支持系统正在逐步取代传统规则驱动的DSS
  • License 集成 Spring Gateway:解决 WebFlux 非阻塞与 Spring MVC Servlet 阻塞兼容问题
  • spark连接mongodb
  • ubuntu新增磁盘扩展LV卷
  • PowerApps 使用Xrm.Navigation.navigateTo无法打开CustomPage的问题