/images/avatar.png

Kubernetes CNI 网络模型概览:VETH & Bridge / Overlay / BGP

序言

网络是容器通信的基础,Kubernetes 本身并未提供开箱即用的网络互通功能,只提出了两点基本要求:

  • pods can communicate with all other pods on any other node without NAT
  • agents on a node (e.g. system daemons, kubelet) can communicate with all pods on that node

至于如何实现这些通信能力,通常依赖于 CNI 插件来完成。

Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

序言

当一个新的 Pod 被提交创建之后,KubeletCRICNI 这三个组件之间进行了哪些交互?

Kubelet -> CRI -> CNI

https://raw.githubusercontent.com/RifeWang/images/master/k8s/kubelet-cri-cni-sequence.png

如上图所示:

  1. Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。
  2. Kubelet 创建 sandbox 并配置好 Pod 的环境,其中包括:
    • Kubelet 通过 gRPC 调用 CRI 组件创建 sandbox。
    • CRI 通过命令行调用 CNI 设置 pod 的网络。
  3. Kubelet 创建 container 阶段:
    • 调用 CRI 拉取镜像。
    • 调用 CRI 创建 container。
    • 调用 CRI 启动 container。

注意:

DDIA 分布式数据的分区与复制 - 基于 Redis、Kafka、Elasticsearch 的深入分析

引言

本文基于《Designing Data-Intensive Applications》一书(设计数据密集型应用,简称 DDIA),深入探讨了 RedisKafkaElasticsearch 等常用组件的分区与复制机制。通过这些案例分析,我们可以更好地理解分布式系统的基本原理和实际应用。

Redis 全文检索及使用示例

序言

Redis 除了我们所熟知的缓存功能之外,还通过 RedisJSONRediSearchRedisTimeSeriesRedisBloom 等模块支持了 JSON 数据、查询与搜索(包括全文检索、向量搜索、GEO 地理位置等)、时序数据、概率计算等等扩展功能。这些模块既可以按需导入,也被全部打包到了 Redis Stack 中方便我们直接使用。

Redis 向量搜索

序言

Redis 除了我们所熟知的缓存功能之外,还通过 RedisJSONRediSearchRedisTimeSeriesRedisBloom 等模块支持了 JSON 数据、查询与搜索(包括全文搜索、向量搜索、GEO 地理位置等)、时序数据、概率计算等等扩展功能。这些模块既可以按需导入,也被全部打包到了 Redis Stack 中方便我们直接使用。

Kubernetes scheduler 概述及自定义调度器

kube-scheduler

kube-scheduler 是 k8s 集群中控制平面的一个重要组件,其负责的工作简单且专一:给未分配的 pod 分配一个 node 节点。

调度器的大致工作过程可以分为以下几步:

  • 监听到未绑定 node 的 pod。
  • 过滤节点:挑选出来适合分配这个 pod 的 node 节点(可能有多个)。
  • 节点打分:给过滤出来的节点进行打分。
  • 最后选择得分最高的那个 node 与 pod 绑定(如果最高得分有多个 node 则随机选择一个)。

更加详细的步骤则参考下图所示: