
Kubernetes 实践入门指南
文章平均质量分 83
本专栏从实践场景出发,按照使用者的角度来梳理技术细节,通过完整的知识体系为 K8s 用户提供使用依据,各章节切入点考虑普适性,让更多人能有理有据的选择适合自己的问题解决方案
xiaodeshi
I'm Xiao Deshi and I'm a splendid chap. OSS developer for k8e(https://getk8e.com/)
展开
-
conntrack如何限制您的k8s网关
对于那些不熟悉的人来说,conntrack简单来说是Linux内核的一个子系统,它跟踪所有进入、离开或通过系统的网络连接,允许它监控和管理每个连接的状态,这对于诸如NAT(网络地址转换)、防火墙和保持会话连续性等任务至关重要。问题的一个快速解释是,如果连接跟踪超过了conntrack_max值(通过sysctl net.netfilter.nf_conntrack_max找到)由长期存在的、陈旧的或大量请求所导致,你的CPU和内存空间看起来仍然充足,但请求将被丢弃。1.1 conntrack 介绍。原创 2024-06-07 11:23:04 · 253 阅读 · 0 评论 -
Kubectl 如何工作案例:编写自定义 Kubectl 命令
Kubernetes 工作起来就像魔法,但它并不是魔法。它本质上是基于 REST API 调用的简单性。这种直截了当的机制是其强大功能的关键。今天,我们将深入探讨 Kubernetes 的内部工作原理,特别是当我们执行 kubectl 命令时幕后发生了什么。原创 2024-06-05 16:30:43 · 106 阅读 · 0 评论 -
Kubernetes 加速启动秘籍:Kube Startup CPU Boost,让你的工作负载瞬间起飞!✨
尽管 Kubernetes 拥有许多自动化特性,运行容器化应用程序仍面临一些挑战。其中一个挑战是需要定义应用程序所需的资源。这些资源通常包括 CPU 和内存,但也可能包括本地存储。Kubernetes 提供了一种在 Pod 模板中配置应用程序资源的方式。但是,如果应用程序的资源需求随时间变化呢?一个选择是配置更大的请求以覆盖峰值资源需求。这不是一个最佳的方法,会导致资源未充分利用。同时,它还会产生不必要的成本,因为基础设施并非一直被使用。翻译 2024-05-22 21:13:42 · 103 阅读 · 0 评论 -
kubelet.crt 过期了,集群竟然还能正常运行?揭秘背后的秘密!
我们在搭建 Kubernetes 集群时,一般只声明用于集群 Master、Etcd等通信的证书 为 10年 或者 更久,但未声明集群 Kubelet 组件证书 ,Kubelet 组件证书 默认有效期为1年。集群运行1年以后就会导致报 certificate has expired or is not yet valid 错误,导致集群 Node不能和集群 Master正常通信。那么这个 kubelet.crt 是干啥的?它是 kubelet 本地端口需要的证书。原创 2024-05-18 14:06:39 · 197 阅读 · 0 评论 -
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 · 674 阅读 · 0 评论 -
27. Cgroups, 深入了解Kubernetes 的资源管理
首先是最重要的 - Cgroups 到底是什么?- Cgroups,或简称为 cgroups,是 Linux 内核的一个功能,负责资源分配(CPU 时间、内存、网络带宽、I/O)、优先级和计费(即容器使用了多少)。此外,除了是 Linux 的基本功能之外,Cgroups 还是容器的基础构建块,因此没有 Cgroups 就不会有容器。正如其名称所示 - Cgroups 是组,所以它们将进程分组在父-子层次结构中,形成一棵树。原创 2023-10-22 17:41:37 · 184 阅读 · 0 评论 -
26. 通过 cilium pwru了解网络包的来龙去脉
是一种基于eBPF的工具,可跟踪Linux内核中的网络数据包,并具有先进的过滤功能。它允许对内核状态进行细粒度检查,以便通过调试网络连接问题来解决传统工具(如iptables TRACE或tcpdump)难以解决甚至无法解决的问题。在本文中,我将介绍pwru如何在不必事先了解所有内容的情况下解决了一个网络谜团。原创 2023-10-22 17:36:51 · 823 阅读 · 0 评论 -
25. HA Kubernetes cluster的高可用不是LB
最近在给k8e引擎引入高可用方案,看了一些资料,也和同事交流,发现这里稍微不注意就会把HA高可用和LB 负载均衡搞一起了。加上这里面都有VIP的概念,就更让人稍不留意就混淆概念了。以下分解内容假设你对K8S有一定的了解,如果看不懂,那就别看了,这篇对你有点水,出门右转看看AI Chat也挺好的。原创 2023-10-22 17:36:02 · 182 阅读 · 0 评论 -
24. Kernel 4.19环境下,Cilium网络仍然需要使用iptables
通过学习我终于把cilium网络中使用iptables的细节做了一些梳理,也更新了k8e的安装部署文档,把cilium的 vxlan端口也更新到开放端口清单中,解决了跨主机不能访问端口的疑惑。我开始以为是cilium的安全要求呢。现在终于解决了。k8e在实践中不断优化,趋于问题,推荐大家在服务器环境中使用。getk8e.com有问题也方便在github上反馈交流,最后如果方便,也帮我star一下项目,给我维护项目的激励。原创 2023-10-22 17:35:06 · 360 阅读 · 0 评论 -
23. Docker image Digest你真的了解吗?
我们知道镜像的版本是通过tag来实现的。但是随时大量的实践,我们发现黑客可以篡改这个镜像,毕竟Docker是个集装箱,我们并不能天天解压文件来检查它有没有木马。执行结果显示,当你同时在拉去镜像的时候加上了tag和digest时,优先使用digest拉取,但是tag信息就丢掉了。今天遇到cilium拉取的问题才静下心看了这个问题,算是把它的原理搞清楚了。当然现在业界为了安全,用signing技术来保证digest的有效性。我今天测试过了,集群搭建很方便,如果你有空闲,可以去试试。原创 2023-10-21 22:38:24 · 391 阅读 · 0 评论 -
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 · 802 阅读 · 0 评论 -
21. Serverless虚拟化遇到的内核device-mapper driver是什么
我在打造k8e的 Serverless 引擎时,选择了AWS的 Firecracker-microvm,遇到一个技术问题,它要求一定要支持内核device-mapper驱动,这是个什么东西?和 overlayfs 对比有啥优缺点要讲一讲。原创 2022-12-31 15:51:33 · 755 阅读 · 2 评论 -
31:抽丝剥茧理解kube-proxy的原理
很多时候在熟悉一套集群系统的同时,我们也在忽略一些重要组件的实现细节,比如kube-proxy。kube-proxy是解决Kubernetes 集群中南北向,东西向网络通信的核心组件,但是在梳理Kubernetes知识的时候,会对它有一种陌生的感觉。它到底是怎么运行的呢?所以,本篇的内容就是为了解密kube-proxy的运行原理和执行细节,让你更详细的了解到kube-proxy的今生后世。原创 2021-12-09 15:06:19 · 762 阅读 · 0 评论 -
结语:日积硅步终将活用 K8s 编排集群技术
原创 2020-10-28 16:11:50 · 193 阅读 · 0 评论 -
练习篇:K8s 安全生产技术测验
原创 2020-10-28 16:11:50 · 163 阅读 · 0 评论 -
混沌工程技术在 K8s 生产安全中的应用
原创 2020-10-28 16:11:50 · 278 阅读 · 0 评论 -
镜像仓库的安全配置
原创 2020-10-28 16:11:50 · 256 阅读 · 0 评论 -
RBAC 管理实践
原创 2020-10-28 16:11:50 · 184 阅读 · 0 评论 -
Pod 中 securityContext 配置分析
原创 2020-10-28 16:11:50 · 868 阅读 · 0 评论 -
安全审计扫描工具的活学活用
原创 2020-10-28 16:11:50 · 185 阅读 · 0 评论 -
练习篇:有状态应用的部署技术测验
原创 2020-10-28 16:11:49 · 201 阅读 · 0 评论 -
K8s 集群中存储对象灾备的落地实践
原创 2020-10-28 16:11:49 · 177 阅读 · 0 评论 -
存储对象 PV、PVC、Storage Classes 的管理落地实践
原创 2020-10-28 16:11:49 · 236 阅读 · 0 评论 -
案例:分布式 MySQL 集群工具 Vitess 实践分析
原创 2020-10-28 16:11:49 · 428 阅读 · 0 评论 -
有状态应用的默认特性落地分析
原创 2020-10-28 16:11:49 · 107 阅读 · 0 评论 -
使用 Rook 构建生产可用存储环境实践
原创 2020-10-28 16:11:49 · 326 阅读 · 0 评论 -
练习篇:应用流量无损切换技术测验
经过连续 5 篇相关应用流量引流相关的技术探讨,相信大家已经对 Kubernetes 的服务引流架构有了更深入的了解。常言道好记性不如烂笔头,笔者在反复练习这些参数的过程中,也是费劲了很大的一段时间才对 Kubernetes 的集群引流技术有了一些运用。以下的练习案例都是笔者认为可以加固自身知识体系的必要练习,还请大家跟随我的记录一起练习吧。练习 1:Deployment 下实现无损流量应用更新...原创 2020-10-28 16:11:48 · 321 阅读 · 1 评论 -
应用流量的优雅无损切换实践
Kubernetes 的部署基本上都是默认滚动式的,并且保证零宕机,但是它是有一个前置条件的。正是这个前置条件让零宕机部署表现为一个恼人的问题。为了实现 Kubernetes 真正的零宕机部署,不中断或不丢失任何一个运行中的请求,我们需要深入应用部署的运行细节并找到根源进行深入的根源分析。本篇的实践内容继承之前的知识体系,将更深入的总结零宕机部署方法。刨根问底滚动更新我们首先来谈谈滚动更新的...原创 2020-10-28 16:11:48 · 329 阅读 · 0 评论 -
Cilium 容器网络的落地实践
随着越来越多的企业采用 Kubernetes,围绕多云、安全、可见性和可扩展性等新要求,可编程数据平面的需求用例范围越来越广。此外,服务网格和无服务器等新技术对 Kubernetes 底层提出了更多的定制化要求。这些新需求都有一些共同点:它们需要一个更可编程的数据平面,能够在不牺牲性能的情况下执行 Kubernetes 感知的网络数据操作。Cilium 项目通过引入扩展的伯克利数据包过滤器(eB...原创 2020-10-28 16:11:47 · 625 阅读 · 0 评论 -
Service 层引流技术实践
Kubernetes 引入的 Service 层给集群带来了两样特性:第一是 ClusterIP,通过集群 DNS 分配的服务别名,服务可以获得一个稳定的服务名字,例如:foo.bar.svc.cluster.local。第二是反向代理,通过 iptables/IPVS/eBPF 等各种网络数据转换技术把流量负载到上游的 Pod 容器组中。到这里,其实 Service 层的基本技术已经给大家介绍了...原创 2020-10-28 16:11:47 · 241 阅读 · 0 评论 -
应用网关 OpenResty 对接 K8s 实践
当前云原生应用网关有很多选择,例如:Nginx/OpenResty、Traefik、Envoy 等,从部署流行度来看 OpenResty 毋容置疑是最流行的反向代理网关。本篇探讨的就是 Kubernetes 为了统一对外的入口网关而引入的 Ingress 对象是如何利用 OpenResty 来优化入口网关的能力的。为什么需要 OpenResty原生 Kubernetes Service 提供对...原创 2020-10-28 16:11:47 · 1276 阅读 · 0 评论 -
理解对方暴露服务的对象 Ingress 和 Service
Kubernetes 中的服务(Service)可以理解为对外暴露服务的最小单元对象,这个和 Pod 对象还是有不同的。例如用户通过发布服务对象 Deployment 发布应用,当在容器集群中启动后,ReplicaSet 副本对象会帮我们维持 Pod 实例的副本数。Pod 使用的容器网络默认会选择构建在主机网络上的覆盖网络(Overlay),默认外网是无法直接访问这些 Pod 实例服务的。为了能有...原创 2020-10-28 16:11:46 · 318 阅读 · 1 评论 -
练习篇:K8s 集群配置测验
第二部分的内容围绕 Kubernetes 核心组件的安装配置一一给大家拆解了一遍,当前集群组件最主流的配置就是这些:containerd、kubeadm、IPVS、Calico、kube-dns。读者通过官方文档就可以独立配置一套集群,只是笔者发现,因为集群配置的过度复杂,能获得的环境也是千差万别,很难得到统一的认知。本篇测验的目的就是带着大家一起校验一遍我们学习到的经验,一起搭建一套集群的全过程...原创 2020-10-28 16:11:46 · 542 阅读 · 0 评论 -
服务发现 DNS 的落地实践
DNS 服务是 Kubernetes 内置的服务发现组件,它方便容器服务可以通过发布的唯一 App 名字找到对方的端口服务,再也不需要维护服务对应的 IP 关系。这个对传统企业内部的运维习惯也是有一些变革的。一般传统企业内部都会维护一套 CMDB 系统,专门来维护服务器和 IP 地址的对应关系,方便规划管理好应用服务集群。当落地 K8s 集群之后,因为应用容器的 IP 生命周期短暂,通过 App ...原创 2020-10-28 16:11:45 · 234 阅读 · 0 评论 -
东西向流量组件 Calico 的落地实践
Kubernetes 网络并没有原生的方案,它从一开始就给我们送来了一个选择题。到底选哪种网络方案才是最佳的方案呢?网络问题一直让社区用户很困惑,以至于在早期,不同场景下的方案如雨后春笋般涌现出来。其中比较优秀的就是今天选择给大家介绍的网络组件 Calico。这里我们要强调的是,Calico 方案并不是唯一方案,我们在社区仍然能看到很多优秀的方案比如 Cilium、OvS、Contiv、Flann...原创 2020-10-28 16:11:45 · 511 阅读 · 0 评论 -
南北向流量组件 IPVS 的落地实践
我们知道 Kubernetes 工作节点的流量管理都是由 kube-proxy 来管理的。kube-proxy 利用了 iptables 的网络流量转换能力,在整个集群的数据层面创建了一层集群虚拟网络,也就是大家在 Service 对象中会看到的术语 ClusterIP,即集群网络 IP。既然 iptables 已经很完美的支持流量的负载均衡,并能实现南北向流量的反向代理功能,为什么我们还要让用户...原创 2020-10-28 16:11:45 · 346 阅读 · 1 评论 -
K8s 集群安装工具 kubeadm 的落地实践
kubeadm 是 Kubernetes 项目官方维护的支持一键部署安装 Kubernetes 集群的命令行工具。使用过它的读者肯定对它仅仅两步操作就能轻松组建集群的方式印象深刻:kubeadm init 以及 kubeadm join 这两个命令可以快速创建 Kubernetes 集群。当然这种便捷的操作并不能在生产环境中直接使用,我们要考虑组件的高可用布局,并且还需要考虑可持续的维护性。这些更...原创 2020-10-28 16:11:44 · 169 阅读 · 2 评论 -
容器引擎 containerd 落地实践
Docker 公司从 2013 年发布容器引擎 Docker 后,就被全球开发者使用并不断改进它的功能。随着容器标准的建立,Docker 引擎架构也从单体走向微服务结构,剥离出 dontainerd 引擎。它在整个容器技术架构中的位置如下:图 6-1 containerd 架构图,版权源自 https://containerd.io/containerd 使用初体验从官方仓库可以下载最新的...原创 2020-10-28 16:11:44 · 734 阅读 · 0 评论 -
练习篇:K8s 核心实践知识掌握
经过前面章节的介绍,我们把 Kubernetes 的核心组件、应用编排落地 Kubernetes、DevOps 场景落地 Kubernetes、微服务场景落地 Kubernetes 等主要的知识点给大家讲解了一遍。考虑到读者从拿来知识的角度看总觉得浅,不如通过一篇实战讲解来熟练掌握 Kubernetes 的主要技术能力。很多读者在安装高可用的 Kubernetes 的集群开始的时候就会遇到很多挫...原创 2020-10-28 16:11:43 · 354 阅读 · 0 评论 -
解决 K8s 落地难题的方法论提炼
做过技术落地的读者应该有所体会,任何技术经过一段时间的积累都会形成一套约定成熟的方法论,包括 Kubernetes 也不例外。在这些落地实践中比较突出的问题,有构建集群的问题、CI/CD 如何构建的问题、资源租户管理的问题,还有安全问题最为突出。本文为了让使用 Kubernetes 的后来者能少走弯路,通过总结前人经验的方式给大家做一次深度提炼。构建弹性集群策略Kubernetes 集群架构是...原创 2020-10-28 16:11:43 · 227 阅读 · 1 评论