k8s与docker及其他中间件面试题总结

一、k8s

1、k8s有几种pod控制器

答:

k8s有8中pod控制器 分别为“ReplicaSet、deployment、StatefulSet、Horizontal Pod Autoscaler(HPA)、DaemonSet、Job、CronJob”

2、滚动更新和版本回退

答:

滚动更新就是杀死一部分就启动一部分在更新过程中存在两个版本Pod

版本回退就是 支持版本升级过程中的暂停、继续功能以及版本回退等诸多功能 升级过程中出现问题则回退到上一个版本

3、什么是灰度发布/蓝绿发布/金丝雀发布

答:

有一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新。

4、k8s cni cri csi 分别是什么

答:

  • CNI(caclico、flannel、Weave Net):负责 Pod 的网络连接,例如为新创建的 Pod 分配 IP,并确保 Pod 之间可以通信。
  • CSI(nfs ceph AWS EBS):为 Pod 提供存储资源,例如挂载持久化存储卷。
  • CRI(Docker、cri-oz、container):为 Pod 提供容器运行环境,例如拉取镜像并启动容器。

5、k8s有哪些存储

答:

EmptyDir、HostPath、NFS、Pv、Pvc、StorageClass、ConfigMap、Secret

6、service有几种类型

答:

CluSterIP、Headliness、NodePort、Loadbalancer、ExternalName

二、docker

1、docker cgroup是什么

答:

cgroup(Control Groups)是 Linux 内核的一项功能,用于限制、隔离和监控系统资源(如 CPU、内存、I/O 和网络)的使用。Docker 使用 cgroup 来实现容器的资源限制和隔离。

2、怎样查看docker的资源占用情况

  • 通过telegraf、prometheus等监控插件监控
  • 使用命令docker stats监控

3、dockerfile有哪些保留字指令

docker build -f /home/Dockerfile/Dockerfile -t zznn/telegraf .

Dockerfile 指令 说明
FROM 指定基础镜像,用于后续的指令构建。
MAINTAINER 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)
LABEL 添加镜像的元数据,使用键值对的形式。
RUN 在构建过程中在镜像中执行命令。
CMD 指定容器创建时的默认命令。(可以被覆盖)
ENTRYPOINT 设置容器创建时的主要命令。(不可被覆盖)
EXPOSE 声明容器运行时监听的特定网络端口。
ENV 在容器内部设置环境变量。
ADD 将文件、目录或远程URL复制到镜像中。
COPY 将文件或目录复制到镜像中。
VOLUME 为容器创建挂载点或声明卷。
WORKDIR 设置后续指令的工作目录。
USER 指定后续指令的用户上下文。
ARG 定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。
ONBUILD 当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL 设置发送给容器以退出的系统调用信号。
HEALTHCHECK 定义周期性检查容器健康状态的命令。
SHELL 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。