51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

上交所采用云原生技术(如容器化、K8s)部署系统,请说明如何利用K8s实现弹性伸缩,以及如何保证容器间通信的安全(如网络策略)。

上海证券交易所A04难度:中等

答案

1) 【一句话结论】
K8s通过Horizontal Pod Autoscaler(HPA)根据资源指标(如CPU利用率)动态调整Pod副本数实现弹性伸缩;通过NetworkPolicy结合标签选择器定义流量规则(允许/拒绝),保障容器间通信安全。

2) 【原理/概念讲解】
老师来解释下核心概念:

  • 弹性伸缩(HPA):K8s的HPA是核心组件,它持续监控Pod的CPU使用率(默认指标),当CPU利用率超过阈值(如70%)时,自动增加Pod副本数以分担负载;当利用率低于阈值(如30%)时,减少副本数释放资源。类比就像“自动调节空调”:温度高就开多台“空调”(Pod),温度低就关掉一些,保持系统稳定。
  • 容器间通信安全(NetworkPolicy):NetworkPolicy是K8s原生资源,通过定义规则(如“允许前端服务Pod访问后端服务Pod,拒绝其他流量”)实现隔离。它基于Pod的标签选择器(如app=frontend)匹配流量,简单高效,无需额外代理。类比就像“教室进出规则”:每个班级(服务)有自己的进出规则(NetworkPolicy),只有允许的班级(服务)可以进入,其他不行。

3) 【对比与适用场景】

方案定义特性使用场景注意点
HPA(Horizontal Pod Autoscaler)根据CPU/内存等指标自动调整Pod副本数仅水平扩缩容,垂直资源调整需配合其他工具负载敏感的应用(如Web服务、计算密集型任务)需准确监控指标,避免误判(如CPU vs 内存)
VPA(Vertical Pod Autoscaler)根据CPU/内存等指标自动调整单个Pod的资源请求仅垂直调整资源,不改变副本数资源利用率波动大的应用(如数据库)需考虑资源限制,避免过度分配
NetworkPolicyK8s原生资源,定义Pod间的流量规则(允许/拒绝)基于标签选择器,简单高效,无额外代理基础网络隔离场景(如微服务间通信)规则复杂度限制(不支持复杂流量控制,如会话保持)
Service Mesh(如Istio)通过Sidecar代理实现流量控制提供丰富规则(如会话保持、熔断),支持复杂策略高级流量控制场景(如灰度发布、故障注入)增加网络延迟,部署复杂

4) 【示例】

  • 弹性伸缩(HPA)示例:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-deployment
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
  • 容器间通信安全(NetworkPolicy)示例:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: database

5) 【面试口播版答案】
“面试官您好,关于K8s实现弹性伸缩,核心是通过Horizontal Pod Autoscaler(HPA)根据CPU等资源指标动态调整Pod副本数。比如当系统负载升高时,HPA会自动增加Pod数量以分担压力,负载降低时减少副本数,保证资源利用率。同时,容器间通信安全方面,我们使用NetworkPolicy结合标签选择器定义流量规则,比如允许前端服务的Pod访问后端服务的Pod,拒绝其他流量,这样既能实现隔离又能保障通信安全。具体来说,通过定义NetworkPolicy资源,指定允许的源Pod(如app=frontend)和目标Pod(如app=backend),确保只有授权的容器间通信,避免未授权访问。”

6) 【追问清单】

  • 问题1:HPA的指标选择(CPU vs 内存)如何确定?
    回答要点:根据应用特性,CPU密集型选CPU,内存密集型选内存,通常默认CPU。
  • 问题2:网络策略的复杂度,当规则较多时如何管理?
    回答要点:使用标签分层管理,或结合Service Mesh简化复杂规则。
  • 问题3:弹性伸缩的故障恢复,比如Pod突然被删除,HPA如何处理?
    回答要点:HPA会根据当前负载重新调整副本数,确保系统稳定。
  • 问题4:容器间通信的安全,除了NetworkPolicy,还有哪些方式?
    回答要点:Namespace隔离、Service Mesh(如Istio)的流量控制、TLS加密等。
  • 问题5:资源配额对弹性伸缩的影响,如何设置?
    回答要点:通过ResourceQuota限制每个命名空间的总资源,避免资源滥用影响伸缩。

7) 【常见坑/雷区】

  • 弹性伸缩指标错误:用内存指标但应用是CPU密集型,导致伸缩异常。
  • 网络策略语法错误:标签选择器错误,导致规则失效。
  • 忽略服务发现:未使用Service,导致Pod间通信失败。
  • 未考虑资源限制:maxReplicas设置过高,导致资源耗尽。
  • 未提多集群管理:假设上交所有多集群,弹性伸缩需跨集群协调(需明确“假设”)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1