狙击 K8s 用户的“流氓”专利:分布式软件定义网络 (DSDN)
背景 流氓专利(Patent Troll)通常是指一种专利滥用现象,其中专利的持有人或公司主要以专利诉讼和许可费为目的,而非通过生产或使用专利技术来进行创新。这类专利持有者有时被称为 专利流氓(Patent Trolls)。 流氓专利的主要 …
背景 流氓专利(Patent Troll)通常是指一种专利滥用现象,其中专利的持有人或公司主要以专利诉讼和许可费为目的,而非通过生产或使用专利技术来进行创新。这类专利持有者有时被称为 专利流氓(Patent Trolls)。 流氓专利的主要 …
周末检查博客草稿,发现了这篇。记得当时是与 Kubernetes 自动化诊断工具:k8sgpt-operator 一起写的,算算过去了一年之久,这拖延症也算是病入膏肓了。原本想使用 K8sGPT + LocalAI 的方案, …
几天前,K8s Network SIG 发布了 Gateway API(简称 gwapi)的 v1.1 版本,这个版本的发布包含了多项重要功能的 GA(一般可用),以及一些实验功能的引入。这两部分分别通过标准渠道和实验渠道发布。 发布渠道用 …
在本文中,我们将探讨如何利用 cert-manager 自动管理 Kubernetes Gateway 证书,以增强集群入口安全并提升管理效率。 背景 Kubernetes Gateway 或许,确切地应该称为 Kubernetes …
前几天 Gateway API 宣布在 0.8.0 中支持服务网格,这意味着 GAMMA(Gateway API for Mesh Management and Administration)有了新进展,虽然目前还是实验阶段。去年 6 …
写这篇文章是来填 很久之前挖下的坑。 本文涉及组件的源码版本如下: Kubernetes 1.24 CRI 0.25.0 Containerd 1.6 容器运行时(Container Runtime)是负责管理和执行容器的组件。它负责将容器 …
Kubernetes 作为一项核心技术已成为现代应用程序架构的基础,越来越多的企业使用其作为容器编排系统。Kubernetes 集群经历了 从单 Kubernetes 集群到多 Kubernetes 集群、从多 Kubernetes …
在过去的文章中,我们曾 追踪过 Kubernetes 中的网络数据包,这篇文章将追踪 Kubernetes 中的 DNS 查询。 让我们以在 Pod 中解析 Service 完全限定域名(FQDN) …
CoreDNS 是一个开源的域名系统(DNS)服务器,用于将域名解析为 IP 地址以实现网络通信。它是一个用 Go 语言编写的可扩展 DNS 服务器,旨在取代传统的 DNS 服务器并提供更灵活、可配置的解析方案。 CoreDNS 提供了模块 …
这篇之前写 Kubernetes 网络学习之 Cilium 与 eBPF 记录的内容,隔了几个月终于想起把笔记完成,作为探索 Cilium 工作原理的入门,也还是 Cilium 冰山一角,像是高级的网络策略、网络加密、BGP 网络、服务网格 …
背景 在 Kubernetes 上,从部署 Deployment 到正常提供服务,整个流程可能会出现各种各样问题,有兴趣的可以浏览 Kubernetes Deployment 的故障排查可视化指南(2021 中文版)。从可视化指南也可能看出 …
Kubernetes 作为一项核心技术已成为现代应用程序架构的基础,越来越多的企业使用 Kubernetes 作为容器编排系统。 下面的数据来自 2020 CNCF Survey 的原始数据,可以看到使用 Kubernete 的企业占比达到 …
网络和操作系统内核,对我来说是既陌生又满是吸引,希望能够拨开层层迷雾找到背后的真相。 在 上一篇文章 中我深入探讨了 Kubernetes 网络模型,这次我想更深入一点:了解数据包在 Kubernetes 中的传输, …
背景 过去几年,公有云凭借着更高扩展性、灵活性、可靠性和安全性,吸引了大量的企业将应用程序部署到公有云上。随着业务规模的不断扩张,企业出于某些原因,如避免厂商锁定、追求更低的延迟、更高的可靠性等,选择将应用部署在更多的公有云上;也有些企业出 …
在 上一篇 文章中分享了分布式运行时 Dapr 的使用,在示例中将状态存储能力分离到 Dapr 运行时中,应用通过 Dapr API 来使用该能力。这篇文章将介绍如何通过 Ingress Controller(入口控制器)来访问 Dapr …
Dapr 分布式应用运行时 Distributed Application Runtime 的首字母缩写。有关多运行时,可以看下 Bilgin Ibryam 的 Multi-Runtime Microservices …
假期给小朋友装上了叨叨许久的 Minecraft(我的世界),为了体验安装的是 开源启动器 HMCL。其实这游戏我也关注比较久了,不过感觉太耗时间。但被小朋友拉上一起玩,便研究了下自建服务器。GitHub …
这是 Kubernetes 网络学习的第五篇笔记,也是之前计划中的最后一篇。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel …
本文翻译自 ContainerJournal 的 2022 年度文章之一 《Implementing Zero-Trust on Kubernetes》,作者 Deepak Goel 在文中分享了 Kubernetes 上实施零信任的三个最 …
这是 Kubernetes 网络学习的第四篇笔记。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel 学习 Kubernetes …
这是 Kubernetes 网络学习的第三篇笔记。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用(本篇) 从 Flannel …
写在最前,周末写到这篇的时候我就发现可能是给自己挖了很大的坑,整个 Kubernetes 网关相关的内容会非常复杂且庞大。 深入探索 Kubernetes 网络模型和网络通信 认识一下容器网络接口 CNI(本篇) 源码分析: …
这是 Kubernetes 网络学习的第一篇笔记。 深入探索 Kubernetes 网络模型和网络通信(本篇) 认识一下容器网络接口 CNI 源码分析:从 kubelet、容器运行时看 CNI 的使用 从 Flannel …
上周在写 K8s 多集群的流量调度 的 demo 部分时需要不停地在多个集群中安装组件、部署应用,或者执行各种命令。当时是通过 Linux shell 脚本并通过工具 kubectx 进行集群的切换,像这样: 或者这样: 操作繁琐,很是痛 …
由于各种原因,采用 Kubernetes 的企业内部存在着几个、几十甚至上百个集群。比如处于研发流程上的考虑,不同环境下都存在独立的集群;监管层面的考虑,就地存储的用户数据需要搭配应用集群;单个集群的容量限制,无法满足业务体量;可用性要求的 …
背景 在《SMI 与 Gateway API 的 GAMMA 倡议意味着什么?》的一文中,介绍过 Kubernetes Gateway API 处理东西向(网格)流量的可能性。让我们重新看下 Gateway API 中对流量定义(路由)的定 …
之前介绍过一些 Ingress 使用,比如 Ingress SSL 透传、Ingress 的多租户。从 Demo 看起来是创建 Ingress 之后,就能从集群外访问服务了。实际上除了 Ingress 的作用以外,还有 Kubernetes …
最近正在读 《Solving the Bottom Turtle》 这本书,这篇是对部分内容的总结和思考,由于内容较多,会分几篇来发。 这本书的副标题是: a SPIFFE Way to Establish Trust in Your …
这篇是 Buoyant 的创始人 William Morgan 文章《What Does Zero Trust Mean for Kubernetes?》 的翻译,文章很好的解释了什么是零信任、为什么要实施零信任,以及服务网格如何以最小的代 …
kube-ovn 从名字不难看出其是一款云原生的网络产品,将 SDN 等能力带入云原生领域。让 ovn/ovs 的使用更容易,屏蔽了复杂度,降低了使用的难度,并与云原生进行了结合。 借助 OVS/OVN 在 SDN 领域成熟的能 …
8 月 24 日,发明服务网格的公司 Buoyant 发布了 Linkerd 2.12,这是时隔近一年的版本发布。不知道大家的对新版本期待如何,在我来看新版本中的功能对于一年的时间来说确实不算多,但是我想说的是 Linkerd …
本文的源码基于 Kubernetes v1.24.0,容器运行时使用 Containerd 1.5,从源码来分析 kubectl port-forward 的工作原理。 通过 port-forward 流程的分析,梳理出 kubectl …
就在上周 Gateway API 发布版本 0.5.0,其中几个最重要的 CRD Gateway、GatewayClass 以及 HTTPRoute 第一次升级到了 beta 版本。升级的详细内容这里不做详谈,我也想说说的是与版本一同发布 …
GitHub Actions 是一个功能强大、“免费” 的 CI(持续集成)工具。 与之前介绍的 Tekton 类似,GitHub Actions 的核心也是 Pipeline as Code 也就是所谓的流水线即代码。二者不同的 …
本文翻译自 Jack Roper 的文章 Kubernetes Best Practice。 译者:文章中作者从应用程序开发、治理和集群配置三个方面给出了一些 Kubernetes 的最佳实践,同时翻译过程中也加入了我过往的一些使用经验。有 …
TL;DR 本文从服务网格发展现状、到 Open Service Mesh 源码,分析开放服务网格中的开放是什么以及如何开放。笔者总结其开放体现在以下几点: 资源提供者(Provider)接口和资源的重新封装:通过资源提供者接口抽象计算平台 …
使用 Kubernetes 时,经常会遇到一些棘手的网络问题需要对 Pod 内的流量进行抓包分析。然而所使用的镜像一般不会带有 tcpdump 命令,过去常用的做法简单直接暴力:登录到节点所在节点,使用 root 账号进入容器, …
在上一篇《在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(上)- Layer2》中,我们使用 MetalLB 的 Layer2 模式作为 LoadBalancer 的实现,将 Kubernetes 集群 …
这是系列文章的上篇,下篇《在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)- BGP》。 TL;DR 网络方面的知识又多又杂,很多又是系统内核的部分。原本自己不是做网络方面的,系统内核知识也薄弱。但 …
TL;DR 在本篇,我们分别使用了 Kubernetes 原生的网络策略和 Cilium 的网络策略实现了 Pod 网络层面的隔离。不同的是,前者只提供了基于 L3/4 的网络策略;后者支持 L3/4、L7 的网络策略。 通过网络策略来提升 …
TL;DR 本文介绍并安装体验了极简 Kubernetes 发行版,也顺便分析学习下编译的流程。 背景 k8e 本意为 kuber easy,是一个 Kubernetes 的极简发行版,意图让云原生落地部署 Kubernetes 更轻 …
译者注: 这篇文章很全面的罗列出了 Kubernetes 中涉及的网络知识,从 Linux 内核的网络内容,到容器、Kubernetes,一一进行了详细的说明。 文章篇幅有点长,不得不说,网络是很复杂很麻烦的一层,但恰恰这层多年来变化不 …
在《Kubernetes 的自动伸缩你用对了吗?》 一文中详细说明了如何使用 Kubernetes 的自动伸缩。在 Kubernetes 中弹性伸缩主要有三种:HPA、VPA、CA。本文不再详细说明,有兴趣的可以看那篇文章。 …
Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1(文末讨论),同样也支持 Linux。 Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具,可以 …
译者注: 本文篇幅较长,有助于了解 FaaS 和 OpenFaaS。作者分别从开发人员和运维人员的视角来了解 OpenFaaS,对了解新的技术是个很好的方式。 本文翻译自 Ivan Velichko 的 OpenFaaS - Run …
距离上个版本 用 Pipy 实现 OPA,已经过去快半年了。当初使用Pipy 实现了可信镜像仓库的检查,那时的版本实现起来会稍微复杂,从策略仓库到证书创建到Admission Webhook 的创建都需要大量的人工操作,配置和逻辑也还是耦合 …
将应用部署到 Kubernetes 时通常会使用 Deployment、Service、Ingress,整个应用从部署到正常运行,经历的流程很长。从 kubectl apply YAML 文件,经过 apiserver、controller …
TL;DR 本文内容: 介绍 distroless 镜像、作用以及简单的使用 如何针对 distroless 容器的进行调试 临时容器(v.1.18+)的使用 Distroless 镜像 Distroless 容器, …
前几天有朋友在问如何在某云上拉取 Tekton 的镜像,这种情况其实比较普遍不只是某云。工作中经常要用到过某些靠运气才能拉取到的镜像,这对工作来说真是极度的不友好。 因此也萌生了个想法,维护一个后网络友好的仓库镜像,在 Pod 创建时将镜像 …
为什么要在 arm64 平台上部署 Kubernetes,而且还是鲲鹏 920 的架构。说来话长 。。。 此处省略5000 字。 介绍下系统信息; 架构:鲲鹏 920(Kunpeng920) OS:openEuler 20.03 …
写在最前 和上一篇《使用 Flomesh 强化 Spring Cloud 服务治理》一样,这次同样是在无代码侵入的情况下对 Dubbo 服务治理的提升。 更多治理场景陆续添加中, …
有别于前些天的文章 - 常用的几款工具让 Kubernetes 集群上的工作更容易 偏重于工具类来提升工作效率,今天这篇文章更加适合用来做选型时的参考。 文档翻译自 Kubernetes Essential Tools: 2021,篇幅较 …
还不知道 Pipy 是什么的同学可以看下 GitHub 。 Pipy 是一个轻量级、高性能、高稳定、可编程的网络代理。Pipy 核心框架使用 C++ 开发,网络 IO 采用 ASIO 库。 Pipy 的可执行文件仅有 5M 左右,运行期的内 …
如何使用 Open Policy Agent 实现准入策略控制,可以参考这里 本文翻译自 Open Policy Agent: The Top 5 Kubernetes Admission Control Policies …
笔者:Kubernetes 抽象了资源和工作负载的操作模式,统一了工具集,实现人机接口的标准化。正如类 Docker 工具提供了应用运行时的操作模式;Spring Framework 提供了 Java 应用的开发模式。 Kubernetes …
从互联网(或可信镜像仓库库以外的任何地方)拉取未知镜像会带来风险——例如恶意软件。但是还有其他很好的理由来维护单一的可信来源,例如在企业中实现可支持性。通过确保镜像仅来自受信任的镜像仓库,可以密切控制镜像库存,降低软件熵和蔓延的风险,并提高 …
Kubernetes 使用有好几年了,但在今年 5 月才完成 CKA 的考试。虽说用了几年,还是提前刷了部分题熟悉下。 绝大部分题都是有在 minikube 的环境上操作过,只有部分比如升级集群受限于环境问题没有实地操作。 写在最前 保存常 …
之前写过一篇 介绍了工具加速云原生 Java 开发。 其实日常工作中在集群上的操作也非常多,今天就来介绍我所使用的工具。 kubectl-alias 使用频率最高的工具,我自己稍微修改了一下,加入了 StatefulSet 的支持。 这个是 …
本文详细介绍了 Jenkins 如何通过 tekton-client-plugin 实现与 Kubernetes 上的 Tekton Pipeline 交互,包括 Kubernetes 上安装 Jenkins、Tekton …
更新历史: v1:2020.1.21 基于 Tekton Pipline v0.9.0 v2(当前):2021.6.22 基于 Tekton Pipeline v0.25.0 Tekton 是 Google 开源的 Kubernetes 原 …
本文主要介绍 kubelet 功能、核心组件,以及启动流程的源码分析,总结了 kubelet 的工作原理。 kubelet 简介 从官方的架构图中很容易就能找到 kubelet 执行 kubelet -h 看到 kubelet 的功能介绍: …
本文翻译自 learnk8s 的 Architecting Kubernetes clusters — choosing the best autoscaling strategy,有增删部分内容。 TL;DR: 在默认设置下, …
去年写过一篇博客:控制 Pod 内容器的启动顺序,分析了 TektonCD 的容器启动控制的原理。 为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的。类似 TektonCD …
为什么 说起服务网格,这幅图大家肯定不会陌生。这就是服务网格的网络,也是网格架构的终极形态。 那在迁移到网格架构之前,我们的系统是什么样的? 我们的系统在演进的过程中,不可避免的会遇到各种 0 到 1 过程中的中间态。比如下面这种,可以比较 …
本文译自 The Evolution of Distributed Systems on Kubernetes 在 3 月份的 QCon 上,我做了一个关于 Kubernetes 的分布式系统进化的演讲。首先,我想先问一个问题,微服务之后是 …
上篇扒了 HPA 的源码,但是没深入细节,今天往细节深入。 开局先祭出一张图: 为什么要有 Informer? Kubernetes 中的持久化数据保存在 etcd中,各个组件并不会直接访问 etcd,而是通过 api-server …
HPA - Horizontal Pod Autoscaler 的缩写,Pod 水平自动伸缩。通过对 Pod 负载的监控,来自动增加或者减少 Pod 的副本数量。 从字面意思来看,其主要包含了两部分: 监控 Pod 的负载 控制 Pod 的 …
这篇文章是基于 Tekton Pipeline 的最新版本v0.12.1版本。 快速入门请参考:云原生 CICD: Tekton Pipeline 实战 ,实战是基于版本 v0.10.x。 Pipeline CRD 与核心资源的关系 $ k …
这样文章通过Google翻译和人工逐字修改的方式完成的,某些位置也加上自己的理解。如有错误,请指出。 翻译这篇文章的目的其实是为了自己加深对微服务、分布式架构以及多运行时架构的理解。整篇文章从”战略“上分析了微服务”从古至今“解决的问题,以 …
2021.4.30 更新: 最新的方案,请跳转新篇 Kubernetes 上如何控制容器的启动顺序。 背景 众所周知, Kubernetes Pod 内有两种容器: 初始化容器(init container)和应用容器(app …
背景 Tekton 的介绍请参考Tekton Pipeline 实战. 通常, CI/CD 事件应该包含如下信息: 确定事件的类型(比如 GitHub Push, GitLab Issue, Docker Hub Webhook 等) 可从 …
Tekton 提供了dashboard方便用户管理和查看 Tekton PipelineRun 和 TaskRun 以及创建, 执行和完成过程中涉及的资源. 它还允许按标签过滤 PipelineRun 和 TaskRun. …
安装 kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml 检查安装的tekton相关 …
准备 注意: istioctl的安装要使用安装里的, 不要是用homebrew里的. github issue curl -L https://istio.io/downloadIstio | sh - cd istio-1.4.2 cp …
今天来说说日常在Kubernetes开发Java项目遇到的问题. 当我们新建一个项目的时候, 总是面临需要新建manifest, 平时都是copy+paste+modify. 能否以变成的方式来生成? 开发时的步骤也比较繁琐: docker …
背景 Nginx运行在kubernets中, 反向代理service提供服务. kubernetes版本v1.9.1+a0ce1bc657. 问题: 配置如下: location ^~/info { proxy_pass: …
MacOS环境安装minishift 安装minishift cli brew cask install minishift 使用virtualbox安装 安装的时候可以指定HTTP代理, 拉取墙外镜像时需要; 还可以指定insecure的 …
使用openshift搭建的k8s的api创建Deployment,在启动的时候报下面的错误: Invalid value: “hostPath”: hostPath volumes are not allowed …
Persistent Volume 译自Persistent Volumes 介绍 管理存储是管理计算的独特问题。 PersistentVolume子系统为用户和管理员提供了一个API,其中提供了如何从如何使用存储提供存储的详细信息。为此, …
Kubernetes 安装 macos 检查环境 sysctl -a | grep machdep.cpu.features | grep VMX 安装VirtualBox …