自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coder

肖德时的个人专栏

  • 博客(67)
  • 收藏
  • 关注

原创 28. 使用 k8e 玩转 kube-vip with Cilium‘s Egress Gateway 特性

在外部提供一台可以访问的 nginx 服务:在 k8s 集群跑个例子:it works查看外面 主机的 nginx 日志:这个 IP 是你的测试容器所在的主机 IP,当我们期望隐藏这个 IP,只允许流量从固定的 IP 访问外部服务。这个时候就需要 Egress Gateway。metadata:spec:egress:配置CiliumEgressNATPolicy对象。it worksNginx 上的日志:在容器里面继续访问sleep 1;done。

2023-10-22 17:43:09 500

原创 27. Cgroups, 深入了解Kubernetes 的资源管理

首先是最重要的 - Cgroups 到底是什么?- Cgroups,或简称为 cgroups,是 Linux 内核的一个功能,负责资源分配(CPU 时间、内存、网络带宽、I/O)、优先级和计费(即容器使用了多少)。此外,除了是 Linux 的基本功能之外,Cgroups 还是容器的基础构建块,因此没有 Cgroups 就不会有容器。正如其名称所示 - Cgroups 是组,所以它们将进程分组在父-子层次结构中,形成一棵树。

2023-10-22 17:41:37 110

原创 26. 通过 cilium pwru了解网络包的来龙去脉

是一种基于eBPF的工具,可跟踪Linux内核中的网络数据包,并具有先进的过滤功能。它允许对内核状态进行细粒度检查,以便通过调试网络连接问题来解决传统工具(如iptables TRACE或tcpdump)难以解决甚至无法解决的问题。在本文中,我将介绍pwru如何在不必事先了解所有内容的情况下解决了一个网络谜团。

2023-10-22 17:36:51 687

原创 25. HA Kubernetes cluster的高可用不是LB

最近在给k8e引擎引入高可用方案,看了一些资料,也和同事交流,发现这里稍微不注意就会把HA高可用和LB 负载均衡搞一起了。加上这里面都有VIP的概念,就更让人稍不留意就混淆概念了。以下分解内容假设你对K8S有一定的了解,如果看不懂,那就别看了,这篇对你有点水,出门右转看看AI Chat也挺好的。

2023-10-22 17:36:02 136

原创 24. Kernel 4.19环境下,Cilium网络仍然需要使用iptables

通过学习我终于把cilium网络中使用iptables的细节做了一些梳理,也更新了k8e的安装部署文档,把cilium的 vxlan端口也更新到开放端口清单中,解决了跨主机不能访问端口的疑惑。我开始以为是cilium的安全要求呢。现在终于解决了。k8e在实践中不断优化,趋于问题,推荐大家在服务器环境中使用。getk8e.com有问题也方便在github上反馈交流,最后如果方便,也帮我star一下项目,给我维护项目的激励。

2023-10-22 17:35:06 263

原创 23. Docker image Digest你真的了解吗?

我们知道镜像的版本是通过tag来实现的。但是随时大量的实践,我们发现黑客可以篡改这个镜像,毕竟Docker是个集装箱,我们并不能天天解压文件来检查它有没有木马。执行结果显示,当你同时在拉去镜像的时候加上了tag和digest时,优先使用digest拉取,但是tag信息就丢掉了。今天遇到cilium拉取的问题才静下心看了这个问题,算是把它的原理搞清楚了。当然现在业界为了安全,用signing技术来保证digest的有效性。我今天测试过了,集群搭建很方便,如果你有空闲,可以去试试。

2023-10-21 22:38:24 189

原创 22. containerd使用Devmapper snapshotter讲解

最近一直在跟进的工程是想打造k8e的serverless服务,也就是用VMM虚拟机来跑容器。其中对镜像存储的驱动不再是overlay,需要采用Device-mapper功能来驱动虚拟机的存储、运行。Devmapper是一个containerd snapshotter插件,它将快照存储在Device-mapper thin-pool中的文件系统图像中。默认k8e是没有增加devmapper驱动的,我通过增加初始化定义解决了这个问题。然后先创建设备,在重启k8e服务即可支持devmapper驱动。

2023-10-21 22:35:04 530

原创 21. Serverless虚拟化遇到的内核device-mapper driver是什么

我在打造k8e的 Serverless 引擎时,选择了AWS的 Firecracker-microvm,遇到一个技术问题,它要求一定要支持内核device-mapper驱动,这是个什么东西?和 overlayfs 对比有啥优缺点要讲一讲。

2022-12-31 15:51:33 692 2

原创 使用k8e快速部署Kubernetes集群服务

简单的企业级Kubernetes。我想在一个轻量级的分布中采用更多的企业功能,一个二进制组件,k8e来提供所有的k8s组件。

2022-01-16 12:06:04 3173

原创 31:抽丝剥茧理解kube-proxy的原理

很多时候在熟悉一套集群系统的同时,我们也在忽略一些重要组件的实现细节,比如kube-proxy。kube-proxy是解决Kubernetes 集群中南北向,东西向网络通信的核心组件,但是在梳理Kubernetes知识的时候,会对它有一种陌生的感觉。它到底是怎么运行的呢?所以,本篇的内容就是为了解密kube-proxy的运行原理和执行细节,让你更详细的了解到kube-proxy的今生后世。

2021-12-09 15:06:19 693

原创 安全审计扫描工具的活学活用

2020-10-28 16:11:50 130

原创 Pod 中 securityContext 配置分析

2020-10-28 16:11:50 805

原创 RBAC 管理实践

2020-10-28 16:11:50 128

原创 镜像仓库的安全配置

2020-10-28 16:11:50 196

原创 混沌工程技术在 K8s 生产安全中的应用

2020-10-28 16:11:50 200

原创 练习篇:K8s 安全生产技术测验

2020-10-28 16:11:50 119

原创 结语:日积硅步终将活用 K8s 编排集群技术

2020-10-28 16:11:50 140

原创 使用 Rook 构建生产可用存储环境实践

2020-10-28 16:11:49 258

原创 有状态应用的默认特性落地分析

2020-10-28 16:11:49 65

原创 案例:分布式 MySQL 集群工具 Vitess 实践分析

2020-10-28 16:11:49 348

原创 存储对象 PV、PVC、Storage Classes 的管理落地实践

2020-10-28 16:11:49 189

原创 K8s 集群中存储对象灾备的落地实践

2020-10-28 16:11:49 131

原创 练习篇:有状态应用的部署技术测验

2020-10-28 16:11:49 160

原创 应用流量的优雅无损切换实践

Kubernetes 的部署基本上都是默认滚动式的,并且保证零宕机,但是它是有一个前置条件的。正是这个前置条件让零宕机部署表现为一个恼人的问题。为了实现 Kubernetes 真正的零宕机部署,不中断或不丢失任何一个运行中的请求,我们需要深入应用部署的运行细节并找到根源进行深入的根源分析。本篇的实践内容继承之前的知识体系,将更深入的总结零宕机部署方法。刨根问底滚动更新我们首先来谈谈滚动更新的...

2020-10-28 16:11:48 241

原创 练习篇:应用流量无损切换技术测验

经过连续 5 篇相关应用流量引流相关的技术探讨,相信大家已经对 Kubernetes 的服务引流架构有了更深入的了解。常言道好记性不如烂笔头,笔者在反复练习这些参数的过程中,也是费劲了很大的一段时间才对 Kubernetes 的集群引流技术有了一些运用。以下的练习案例都是笔者认为可以加固自身知识体系的必要练习,还请大家跟随我的记录一起练习吧。练习 1:Deployment 下实现无损流量应用更新...

2020-10-28 16:11:48 151

原创 应用网关 OpenResty 对接 K8s 实践

当前云原生应用网关有很多选择,例如:Nginx/OpenResty、Traefik、Envoy 等,从部署流行度来看 OpenResty 毋容置疑是最流行的反向代理网关。本篇探讨的就是 Kubernetes 为了统一对外的入口网关而引入的 Ingress 对象是如何利用 OpenResty 来优化入口网关的能力的。为什么需要 OpenResty原生 Kubernetes Service 提供对...

2020-10-28 16:11:47 1151

原创 Service 层引流技术实践

Kubernetes 引入的 Service 层给集群带来了两样特性:第一是 ClusterIP,通过集群 DNS 分配的服务别名,服务可以获得一个稳定的服务名字,例如:foo.bar.svc.cluster.local。第二是反向代理,通过 iptables/IPVS/eBPF 等各种网络数据转换技术把流量负载到上游的 Pod 容器组中。到这里,其实 Service 层的基本技术已经给大家介绍了...

2020-10-28 16:11:47 195

原创 Cilium 容器网络的落地实践

随着越来越多的企业采用 Kubernetes,围绕多云、安全、可见性和可扩展性等新要求,可编程数据平面的需求用例范围越来越广。此外,服务网格和无服务器等新技术对 Kubernetes 底层提出了更多的定制化要求。这些新需求都有一些共同点:它们需要一个更可编程的数据平面,能够在不牺牲性能的情况下执行 Kubernetes 感知的网络数据操作。Cilium 项目通过引入扩展的伯克利数据包过滤器(eB...

2020-10-28 16:11:47 538

原创 练习篇:K8s 集群配置测验

第二部分的内容围绕 Kubernetes 核心组件的安装配置一一给大家拆解了一遍,当前集群组件最主流的配置就是这些:containerd、kubeadm、IPVS、Calico、kube-dns。读者通过官方文档就可以独立配置一套集群,只是笔者发现,因为集群配置的过度复杂,能获得的环境也是千差万别,很难得到统一的认知。本篇测验的目的就是带着大家一起校验一遍我们学习到的经验,一起搭建一套集群的全过程...

2020-10-28 16:11:46 470

原创 理解对方暴露服务的对象 Ingress 和 Service

Kubernetes 中的服务(Service)可以理解为对外暴露服务的最小单元对象,这个和 Pod 对象还是有不同的。例如用户通过发布服务对象 Deployment 发布应用,当在容器集群中启动后,ReplicaSet 副本对象会帮我们维持 Pod 实例的副本数。Pod 使用的容器网络默认会选择构建在主机网络上的覆盖网络(Overlay),默认外网是无法直接访问这些 Pod 实例服务的。为了能有...

2020-10-28 16:11:46 260

原创 南北向流量组件 IPVS 的落地实践

我们知道 Kubernetes 工作节点的流量管理都是由 kube-proxy 来管理的。kube-proxy 利用了 iptables 的网络流量转换能力,在整个集群的数据层面创建了一层集群虚拟网络,也就是大家在 Service 对象中会看到的术语 ClusterIP,即集群网络 IP。既然 iptables 已经很完美的支持流量的负载均衡,并能实现南北向流量的反向代理功能,为什么我们还要让用户...

2020-10-28 16:11:45 256

原创 东西向流量组件 Calico 的落地实践

Kubernetes 网络并没有原生的方案,它从一开始就给我们送来了一个选择题。到底选哪种网络方案才是最佳的方案呢?网络问题一直让社区用户很困惑,以至于在早期,不同场景下的方案如雨后春笋般涌现出来。其中比较优秀的就是今天选择给大家介绍的网络组件 Calico。这里我们要强调的是,Calico 方案并不是唯一方案,我们在社区仍然能看到很多优秀的方案比如 Cilium、OvS、Contiv、Flann...

2020-10-28 16:11:45 442

原创 服务发现 DNS 的落地实践

DNS 服务是 Kubernetes 内置的服务发现组件,它方便容器服务可以通过发布的唯一 App 名字找到对方的端口服务,再也不需要维护服务对应的 IP 关系。这个对传统企业内部的运维习惯也是有一些变革的。一般传统企业内部都会维护一套 CMDB 系统,专门来维护服务器和 IP 地址的对应关系,方便规划管理好应用服务集群。当落地 K8s 集群之后,因为应用容器的 IP 生命周期短暂,通过 App ...

2020-10-28 16:11:45 178

原创 容器引擎 containerd 落地实践

Docker 公司从 2013 年发布容器引擎 Docker 后,就被全球开发者使用并不断改进它的功能。随着容器标准的建立,Docker 引擎架构也从单体走向微服务结构,剥离出 dontainerd 引擎。它在整个容器技术架构中的位置如下:图 6-1 containerd 架构图,版权源自 https://containerd.io/containerd 使用初体验从官方仓库可以下载最新的...

2020-10-28 16:11:44 561

原创 K8s 集群安装工具 kubeadm 的落地实践

kubeadm 是 Kubernetes 项目官方维护的支持一键部署安装 Kubernetes 集群的命令行工具。使用过它的读者肯定对它仅仅两步操作就能轻松组建集群的方式印象深刻:kubeadm init 以及 kubeadm join 这两个命令可以快速创建 Kubernetes 集群。当然这种便捷的操作并不能在生产环境中直接使用,我们要考虑组件的高可用布局,并且还需要考虑可持续的维护性。这些更...

2020-10-28 16:11:44 100

原创 解决 K8s 落地难题的方法论提炼

做过技术落地的读者应该有所体会,任何技术经过一段时间的积累都会形成一套约定成熟的方法论,包括 Kubernetes 也不例外。在这些落地实践中比较突出的问题,有构建集群的问题、CI/CD 如何构建的问题、资源租户管理的问题,还有安全问题最为突出。本文为了让使用 Kubernetes 的后来者能少走弯路,通过总结前人经验的方式给大家做一次深度提炼。构建弹性集群策略Kubernetes 集群架构是...

2020-10-28 16:11:43 186

原创 练习篇:K8s 核心实践知识掌握

经过前面章节的介绍,我们把 Kubernetes 的核心组件、应用编排落地 Kubernetes、DevOps 场景落地 Kubernetes、微服务场景落地 Kubernetes 等主要的知识点给大家讲解了一遍。考虑到读者从拿来知识的角度看总觉得浅,不如通过一篇实战讲解来熟练掌握 Kubernetes 的主要技术能力。很多读者在安装高可用的 Kubernetes 的集群开始的时候就会遇到很多挫...

2020-10-28 16:11:43 252

原创 DevOps 场景下落地 K8s 的困难分析

Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统,一般被 DevOps 团队用来解决在 CI/CD(也就是持续集成、持续发布)场景下遇到的工具链没法统一,构建过程没法标准化等痛点。DevOps 团队在落地 Kubernetes 的过程中发现,在安装、发布、网络、存储、业务滚动升级等多个环节都会遇到一些不可预期的问题,并且官方的参考资料并没有确定性的方案来解决。很多 DevO...

2020-10-28 16:11:42 489

原创 微服务应用场景下落地 K8s 的困难分析

近些年企业应用开发架构发生了细微的变化,根据康威定律,由于企业组织架构的变化,导致微服务应用体系开始在企业应用开发过程中流行起来。微服务是最近几年企业数字化转型过程中,在技术团队技术选型中比较常见的架构升级方案之一。在这个背景下,DevOps 团队为了应对企业架构的变化,迫切需要使用一套统一的基础设施来维护微服务应用的整个生命周期,这就给我们带来了新的挑战——如何应对微服务应用场景,平稳快速的落地...

2020-10-28 16:11:42 500

原创 重新认识 Kubernetes 的核心组件

本篇我们开始介绍 Kubernetes 的核心组件,为了方便大家提前在脑中建立起完整的 Kubernetes 架构印象,笔者整理出核心组件的介绍如下:kube-apiserver,提供了 Kubernetes 各类资源对象(Pod、RC、Service 等)的增删改查及 watch 等 HTTP REST 接口,是整个系统的管理入口。kube-controller-manager,作为集群内...

2020-10-28 16:11:41 1082

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除