cilium

大规模微服务利器:eBPF 与 Kubernetes

天涯浪子 提交于 2020-10-03 07:21:46
Daniel 是 eBPF 两位 maintainer 之一,目前在 eBPF commits 榜单上排名第一,也是 Cilium 的核心开发者之一。 本文内容的时间跨度有 8 年,覆盖了 eBPF 发展的整个历史,非常值得一读。时间限制, Daniel 很多地方只是点到,没有展开。译文中加了一些延展阅读,有需要的同学可以参考。 eBPF 正在吞噬世界 Kubernetes 已经是云操作系统 Kubernetes 正在吞噬世界(eating the world)。越来越多的企业开始迁移到容器平台上 ,而 Kubernetes 已经是公认的云操作系统(Cloud OS)。从技术层面来说: Linux 内核是一切的坚实基础,例如,内核提供了 cgroup、namespace 等特性。 Kubernetes CNI 插件串联起了关键路径(critical path)上的组件。例如,从网络的 视角看,包括: 广义的 Pod 连通性:一个容器创建之后,CNI 插件会给它创建网络设备,移动到容 器的网络命名空间。 IPAM:CNI 向 IPAM 发送请求,为容器分配 IP 地址,然后配置路由。 Kubernetes 的 Service 处理和负载均衡功能。 网络策略的生效(network policy enforcement)。 监控和排障。 两个清晰的容器技术趋势

Linux超能力BPF技术介绍及学习分享

落花浮王杯 提交于 2020-10-02 11:18:33
近两年BPF技术跃然成为了一项热门技术,在刚刚结束的KubeCon 2020 Europe会议上有7个关于BPF的技术分享, 而在KubeCon 2020 China会议上也已有了3个关于BPF技术的中文分享,分别来自腾讯和PingCAP,涉足网络优化和系统追踪等领域。在中文社区里,包括阿里巴巴、网易、字节跳动等国内第一梯队IT公司也越来越关注BPF这项新技术。本文主要介绍BPF技术发展和应用,以及我是如何学习BPF技术的。 BPF是什么? 需要回答BPF是什么?就得先回答为什么需要BPF? 多年前很多程序,例如网络监控器,都是作为用户级进程运行的。为了分析只在内核空间运行的数据,它们必须将这些数据从内核空间复制到用户空间的内存中去,并进行上下文切换。 这与直接在内核空间分析这些数据相比,导致了巨大的性能开销。 而随着近年来网络速度和流量井喷式增长,一些应用程序必须处理大量的数据(如音频、视频流媒体数据)。要在用户空间监控分析那么多的流量数据已经不可行了,因而BPF应运而生——一种在内核空间执行高效安全的程序的机制。 BPF全称是「Berkeley Packet Filter」,翻译过来是「伯克利包过滤器」,顾名思义,它是在伯克利大学诞生的,1992年Steven McCanne和Van Jacobson写了一篇论文:《The BSD Packet Filter: A New

Cilium使用 (Cilium 3)

▼魔方 西西 提交于 2020-04-20 12:39:15
目录 Cilium安装使用 docker安装 内核更新 安装k3s 安装master 安装node(可选) 挂载BPF文件系统 安装Cilium 查看安装结果 部署连接测试 安装Hubble 安装helm 安装Hubble Cilium的网络模型 同节点访问 跨节点网络 Cilium cli 使用k3s测试Cilium,安装步骤可以参见 官方 文档 Cilium安装使用 docker安装 使用如下命令安装最新版本的docker yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io 启动docker service docker start 内核更新 Cilium要求的内核版本比较高,需要对内核进行升级,否则会运行失败。错误日志如 minimal supported kernel version is 4.8.0; kernel version that is running is: 3.10.0" 1、导入key rpm -

Kubespray fails with “Found multiple CRI sockets, please use --cri-socket to select one”

。_饼干妹妹 提交于 2019-12-25 00:57:40
问题 Problem encountered When deploying a cluster with Kubespray , CRI-O and Cilium I get an error about having multiple CRI socket to choose from. Full error fatal: [p3kubemaster1]: FAILED! => {"changed": true, "cmd": " mkdir -p /etc/kubernetes/external_kubeconfig && /usr/local/bin/kubeadm init phase kubeconfig admin --kubeconfig-dir /etc/kubernetes/external_kubeconfig --cert-dir /etc/kubernetes/ssl --apiserver-advertise-address 10.10.3.15 --apiserver-bind-port 6443 >/dev/null && cat /etc