Kubernetes常见面试题

发布时间 2023-10-25 11:09:49作者: 这个手刹不太灵儿

说明:以下问题只做简单总结,详细内容请参考链接:https://github.com/bregman-arie/devops-exercises/blob/master/topics/kubernetes/README.md#kubernetes-101

1、k8s 是什么,为什么企业选择使用它

      k8s是一个开源应用,给用户提供了管理、部署、扩展容器的能力。

  • 将容器运行在不同的机器或节点上,并且将一些变化同步给容器(只需要编写yaml文件,告诉k8s我的预期是什么,同步变化的过程交由k8s去完成)。
  • 一键管理所有容器,同步所有变更
  • 根据负载调整应用副本数,手动和自动完成都可以

2、什么时候用或不用k8s

  • 通常传统的业务,还在使用物理机这种低级别的基础设施的话,不建议使用k8s
  • 小团队、容器规模小的时候也不建议使用,除非想使用 k8s 的滚动发布和自扩容能力,不过这些功能运维自己写工具也能实现。

3、k8s特性

  • 自我修复,k8s 对容器有着健康检测(探针、oom)
  • 自带负载均衡(service)
  • 自动运维能力(扩缩容)、水平扩展
  • 滚动更新
  • 数据加密(secret)

4、k8s最佳实践

  • 验证yaml文件内容正确性(一旦执行错了后果很严重,比如使用 helm 的时候最好岂容 dry-run 和 debug,先看看生成的 yaml 是否是预期想要的)
    • helm upgrade app --dry-run --debug
  • 限制资源使用,如CPU、内存( 不设置一旦应用出现bug,可能导致k8s集群受到影响)
# 资源限制
resources:  
  limits:  
    cpu: 200m  
    memory: 200Mi  
  requests:  
    cpu: 100m  
    memory: 100Mi
  • 为pod、deployment指定标签,用于分组