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指令。