归纳总结
归纳总结
云原生
什么是云原生?
云原生有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。
Kubernetes在云原生中的角色
- K8s是云原生体系中必不可少的基座,提到云原生必然少不了K8s的影子。
- K8s提供了一个可移植、可扩展的平台,并且提供了很多开箱即用的功能,
- 比如负载均衡、高可用、服务发现等,可以大大降低程序开发的难度。
如果设计一个云原生应用?
- 应用日志直接输出至控制台
- 应用数据不要直接写在本地
- 应用配置与代码分离
- 应用服务治理采用云平台能力
- 应用微服务化
- 应用可容器化
- 应用提供可靠健康检查接口
- 应用提供Metrics接口
Namespace
Namespace是什么?有什么作用?和K8s集群有什么关系?
Namespace在Kubernetes中是一种逻辑分组机制,允许将集群资源划分为独立的虚拟环境。
Pod
Pod和容器的关系?或者区别?或者Pod是什么?
Pod是Kubernetes中最小的可部署单元,它封装了一个或多个紧密相关的容器,这些容器共享相同的网络命名空间、存储卷和IPC(进程间通信)空间。Pod是Kubernetes进行资源分配和调度的基本单位,是Kubernetes资源模型中的核心概念之一。Pod是容器的封装,一个Pod可以包含一个或多个容器,因为容器通常不是独立运行的,往往需要共享存储、网络等资源, 所以单独的容器不能满足需求,借助Pod可以解决这些问题。
Pause容器是什么?有什么作用?
Pause容器是一个由Kubernetes自动生成并注入到每个Pod中的特殊容器,不是用户定义的容器,主要为Pod中的其他容 器提供了网络、IPC和文件系统的共享能力,并帮助实现了容器间的通信和资源共享
Pod常见状态,以及问题如何排查?
K8s资源资源配置必备字段与作用
- apiVersion
- kind
- metadata
- spec
Pod创建与删除过程
Pod探针类型与区别
- startupProbe
- livenessProbe
- readinessProbe
pod健康检查方式
- exec
- tcpSocket
- httpGet
- gRPC
Pod不配置健康检查有什么问题?
未完全启动的Pod会直接顶替正常的Pod,从而引起服务不可用
资源调度
DaemonSet、Deployment、StatefulSet的区别,以及和Pod之间的关系
通过Deployment部署服务,如何保证零岩机的更新?健康检查、平滑退出
通过DaemonSet部署的服务,添加新节点没有自动在新节点上创建Pod,可能是什么原因?
检查是否有节点选择器、污点、以及是否有足够用的资源
服务发布
Ingress和Ingress Controller的区别
Ingress相当于控制器的配置文件,在Ingress中指定路由信息,会被Controller解析为自己的配置文件。Ingress是K8s的一类资源,而Controller可以是不同的工具
Service的代理模式和常见类型iptables, ipvs
Ingress生产环境是怎样的部署方式或规划?
配置管理
ConfigMap和Secret区别
两者都可以管理程序的配置文件,只是Secret采用base64加密value数据,并且Secret提供了更多的类型以支持不同的使用场景
ConfigMap和Secret使用注意事项
存储管理
Volume、PV、PVC的区别是什么?
Volume可以定义不同类型的存储然后为容器提供数据持久化的能力,包含PV和PVC,但是Volume使用具有一定的局限性,所以一般使用PV和PVC进行数据的生命周期管理。可以先定义PV绑定到存储平台,然后定义PVC和PV关联,之后挂载到容器中。
CSI和StorageClass的区别是什么?
StorageClass用于定义存储资源的类别,并且与存储插件或Provisioner相关联。CSI提供了一个标准化的接口,用于集成外部存储系统。CSI和StorageClass一般会协同工作进而提供对动态存储的支持。
Pod和PVC处于Pending的原因?
PVC一直Pending的原因:
- PVC的空间申请大小大于PV的大小
- PVC的StorageClassName没有和PV的一致
- PVC的accessModes和PV的不一致
- 请求的PV已被其他的PVC绑定
挂载PVC的Pod一直处于Pending:
- PVC没有创建成功
- PVC不存在PVC和Pod不在同一个Namespace
任务管理
使用Job或者CronJob替代传统任务有什么优点?
回顾Job和CronJob的优点。
CronJob的时区?有没有遇到过CronJob没有定时执行的问题注意
CronJob的时区是UTC时钟,需要进行时区的转换
CronJob并发策略有哪些
- Allow
- Forbid
- Replace
容忍和污点
什么是污点和容忍?它们的作用是什么?
污点是应用于节点的一种属性,用于排斥某些Pod。节点上的污点会阻止任何没有相应容忍的Pod调度到该节点上。容忍是应用于Pod的一种属性,允许Pod被调度到具有特定污点的节点上,通过在Pod的规范中添加容忍,Pod可以忽略节点上的污点。
在Kubernetes集群中如何划分不同的租户?
首先根据节点划分标签组,之后根据标签配置污点,最后给不同租户添加不同的节点选择器
和容忍。
污点和容忍有哪些使用的场景
故障隔离、故障恢复、资源隔离、专用节点隔离、多租户多环境隔离、节点平滑维护与下线
等