eBPF 简介

eBPF是什么? eBPF 全称(Extended Berkeley Packet Filter)扩展的伯克利包过滤器。 从这个名字中,你可以看到它的根源在于过滤网络数据包,而且最初的 论文 2 是在伯克利实验室(Lawrence Berkeley National Laboratory)写的。但是(在我看来)这个名字对于传达 eBPF 的真正力量并没有很大的帮助,因为"扩展" 版本可以实现比数据

Kubernetes 配置语言 KCL

什么是 KCL KCL 是一个开源的基于约束的记录及函数语言,期望通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于围绕配置的模块化、扩展性和稳定性,打造更简单的逻辑编写体验,构建更简单的自动化和生态集成路径。 项目主要里程碑如下: 2022 年 5 月,KCL 由蚂蚁集团发起,正式开源 2023 年 6 月,KCL 正式成为 CNCF Lan

csi-nfs-storageclass-aliyun

CSI-NFS-StorageClass 阿里云 apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-nfs-storageclass-aliyun provisioner: nfs.csi.k8s.io parameters: server: xxxxxxxxxxxxxxxxxx.cn-hangzhou.nas

CSI (Container Storage Interface) 容器存储接口

官方文档 https://github.com/kubernetes-csi/csi-driver-nfs 国内文档 https://gitcode.com/gh_mirrors/cs/csi-driver-nfs/overview 部署 csi https://github.com/kubernetes-csi/csi-driver-nfs/blob/master/docs/install-nf

Ingress路由

Ingress是什么? Ingress 是 Kubernetes 中的一种资源对象,用于管理从集群外部到内部服务的 HTTP 和 HTTPS 路由。它提供了灵活的路由功能、SSL/TLS 终止、负载均衡和虚拟主机支持。Ingress 需要一个 Ingress 控制器来实际处理路由,并且可以通过配置不同的控制器来满足不同的需求。 下图展示了 Ingress 是如何运作的: 通过配置,Ingress

QoS服务质量等级

QoS(Quality of Service),大部分译为“服务质量等级”,又译作“服务质量保证”,是作用在 Pod 上的一个配置,当 Kubernetes 创建一个 Pod 时,它就会给这个 Pod 分配一个 QoS 等级,可以是以下等级之一: Guaranteed:Pod 里的每个容器都必须有内存/CPU 限制和请求,而且值必须相等。 Burstable:Pod 里至少有一个容器有内存或者 C

docker-containerd-runC-CRI-OCI分别是什么

Docker: 包括docker client和dockerd,是一个客户端工具,用来把用户的请求发送给docker daemon(dockerd)。 dockerd:dockerd是对容器相关操作的最上层封装,直接面向操作用户。 Docker daemon,一般也会被称为docker engine。dockerd启动时会启动containerd 子进程。 Containerd: 一个工业级标准的

Pod创建过程

Pod创建过程 比如,要部署一个deployment,文件叫nginx.yaml 执行命令 kubectl apply -f nginx.yaml 命令, kubectl根据kubeconfig配置文件里面指定的api-server地址,将nginx.yaml传给api-server API Server 接到nginx.yaml的内容请求后,开始分析里面的内容,校验内容的语法和格式是否正确,语法

CNI相关总结

考虑几个问题: 1、需要细粒度网络访问控制? 这个flannel是不支持的,calico支持,所以做多租户网络方面的控制ACL,那么要选择 calico。 2、追求网络性能? 选择 flannel host-gw 模式 和 calico BGP 模式。 3、服务器之前是否可以跑BGP协议? 很多的公有云是不支持跑BGP协议,那么使用calico的BGP模式自然是不行的。 4、集群规模多大? 如果规

calico使用IPIP模式

IPIP 是linux内核的驱动程序,可以对数据包进行隧道,两个不同的网络 vlan1 和 vlan2。基于现有的以太网将原始包中的原始IP进行一次封装,通过tunl0解包,这个tunl0类似于ipip模块,和Flannel vxlan的veth很类似。 举个例子,假如我们有两台处于不同子网的宿主机 Node 1 和 Node 2,网段分别为192.169.1.0/24 和 192.168.2.0

calico使用BGP模式

BGP 简介: 它是一个 Linux 内核原生就支持的、专门用在大规模数据中心里维护不同的“自治系统”之间路由信息的、无中心的路由协议。 用一个非常简单的例子来说明: 有两个自治系统(Autonomous System,简称为 AS):AS 1 和 AS 2。而所谓的一个自治系统,指的是一个组织管辖下的所有 IP 网络和路由器的全体。你可以把它想象成一个小公司里的所有主机和路由器。在正常情况下,自

calico简介

什么是 Calico? Calico 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。 组件: Felix:calico的核心组件,运行在每个节点上。主要的功能有接口管理、路由规则、ACL规则和状态报告 接口管理:Felix为内核编写一些接口信息,以便让内核能

flannel使用vxlan-Directrouting模式

flannel使用vxlan-Directrouting模式: 为了提升性能,Flannel的VXLAN后端还支持DirectRouting模式,即在集群中的各节点上添加必要的路由信息,让Pod间的IP报文通过节点的二层网络直接传送。仅在通信双方的Pod对象所在的节点跨IP网络时,则使用VXLAN隧道方式转发通信流量。 如果Node节点全部位于单个二层网络中,则DirectRouting模式下的P

flannel使用host-gw模式

Flannel 的 host-gw 模式,它的工作原理非常简单,为了方便叙述,我用这张图为“host-gw 示意图”: Node 1 上的 Infra-container-1,要访问 Node 2 上的 Infra-container-2。 当你设置 Flannel 使用 host-gw 模式之后,flanneld 会在宿主机上创建这样一条route路由规则。 以 Node 1 为例: # ip

flannel使用vxlan模式

VXLAN,即 Virtual Extensible LAN(虚拟可扩展局域网),是 Linux 内核本身就支持的一种网络虚似化技术。所以说,VXLAN 可以完全在内核态实现上述封装和解封装的工作,从而通过与前面相似的“隧道”机制,构建出覆盖网络(Overlay Network)。 VXLAN 的覆盖网络的设计思想是:在现有的三层网络之上,“覆盖”一层虚拟的、由内核 VXLAN 模块负责维护的二层

Linux清理buff/cache

当服务器内存不够使用时,通过命令free -h,查看服务器内存使用情况,发现buff/cache占用了大量内存。 可以执行以下操作: sync;echo 1 > /proc/sys/vm/drop_caches # 表示清除pagecache。 sync;echo 2 > /proc/sys/vm/drop_caches # 表示清除回收slab分配器中的对象(包括目录项缓存和inod

flannel简介

我们在部署 Kubernetes 的时候,有一个步骤是安装 kubernetes-cni 包,它的目的就是在宿主机上安装CNI 插件所需的基础可执行文件。 在安装完成后,你可以在宿主机的 /opt/cni/bin 目录下看到它们,如下所示: # cd /opt/cni/bin/ # ll 总用量 56484 -

node节点的pod数量限制

默认为110个,可以修改配置文件。 vim /var/lib/kubelet/config.yaml maxPods: 200 #停止kubelet systemctl stop kubelet #重新载入systemd systemctl daemon-reload #启动kubelet systemctl start kubelet  

NodePort的端口范围(修改)

NodePort的端口范围 默认范围为30000-32767,可以修改 vim /etc/kubernetes/manifests/kube-apiserver.yaml 添加一行 - --service-node-port-range=1-65535 kubelet监控/etc/kubernetes/manifests/* ,会自动触发更新。