/images/avatar.png

Kubernetes 10 问,测测你对 k8s 的理解程度

Kubernetes 10 问

  1. 假设集群有 2 个 node 节点,其中一个有 pod,另一个则没有,那么新的 pod 会被调度到哪个节点上?

  2. 应用程序通过容器的形式运行,如果 OOM(Out-of-Memory)了,是容器重启还是所在的 Pod 被重建?

  3. 应用程序配置如环境变量或者 ConfigMap 可以不重建 Pod 实现动态更新吗?

  4. pod 被创建后是稳定的吗,即使用户不进行任何操作?

  5. 使用 ClusterIP 类型的 Service 能保证 TCP 流量的负载均衡吗?

  6. 应用日志要怎么采集,会不会有丢失的情况?

  7. 某个 HTTP Server Pod 的 livenessProbe 正常是否就一定没问题?

  8. 应用程序如何扩展以应对流量波动的情况?

  9. 当你执行 kubectl exec -it <pod> -- bash 之后是登录到了 pod 里吗?

  10. 如果 Pod 里的容器反复退出并重启,如何排查?

Kubernetes Node 节点的生命周期简述

Node 节点是 Kubernetes 的核心组件之一,其生命周期可以简要概括为:注册、运行、下线。本文将简要介绍 Node 生命周期中发生的关键事件。

https://raw.githubusercontent.com/RifeWang/images/master/k8s/kubelet/node-lifecycle.drawio.png

节点注册

每个 node 节点都需要运行 kubelet,kubelet 启动后会向 kube-apiserver 发起节点的注册请求,即创建一个新的 node 资源对象。

Kubernetes Node 节点上的镜像管理

本文将详细介绍 Kubernetes 如何管理节点上的镜像。

拉取镜像

https://raw.githubusercontent.com/RifeWang/images/master/k8s/kubelet/kubelet-image-gc.drawio.png

Kubelet 通过 gRPC 协议与 CRI 组件(如 containerd、cri-o)进行交互。在创建新 Pod 时,kubelet 调用 gRPC 的 ImageService.PullImage 方法,由 CRI 组件将镜像下载到节点上。镜像在磁盘上的组织和管理由 CRI 组件负责,不同的 CRI 组件存在差异。