- 博客(59)
- 收藏
- 关注
原创 使用k8e快速部署Kubernetes集群服务
简单的企业级Kubernetes。我想在一个轻量级的分布中采用更多的企业功能,一个二进制组件,k8e来提供所有的k8s组件。
2022-01-16 12:06:04
565
原创 31:抽丝剥茧理解kube-proxy的原理
很多时候在熟悉一套集群系统的同时,我们也在忽略一些重要组件的实现细节,比如kube-proxy。kube-proxy是解决Kubernetes 集群中南北向,东西向网络通信的核心组件,但是在梳理Kubernetes知识的时候,会对它有一种陌生的感觉。它到底是怎么运行的呢?所以,本篇的内容就是为了解密kube-proxy的运行原理和执行细节,让你更详细的了解到kube-proxy的今生后世。
2021-12-09 15:06:19
533
原创 应用流量的优雅无损切换实践
Kubernetes 的部署基本上都是默认滚动式的,并且保证零宕机,但是它是有一个前置条件的。正是这个前置条件让零宕机部署表现为一个恼人的问题。为了实现 Kubernetes 真正的零宕机部署,不中断或不丢失任何一个运行中的请求,我们需要深入应用部署的运行细节并找到根源进行深入的根源分析。本篇的实践内容继承之前的知识体系,将更深入的总结零宕机部署方法。刨根问底滚动更新我们首先来谈谈滚动更新的...
2020-10-28 16:11:48
119
原创 练习篇:应用流量无损切换技术测验
经过连续 5 篇相关应用流量引流相关的技术探讨,相信大家已经对 Kubernetes 的服务引流架构有了更深入的了解。常言道好记性不如烂笔头,笔者在反复练习这些参数的过程中,也是费劲了很大的一段时间才对 Kubernetes 的集群引流技术有了一些运用。以下的练习案例都是笔者认为可以加固自身知识体系的必要练习,还请大家跟随我的记录一起练习吧。练习 1:Deployment 下实现无损流量应用更新...
2020-10-28 16:11:48
86
原创 应用网关 OpenResty 对接 K8s 实践
当前云原生应用网关有很多选择,例如:Nginx/OpenResty、Traefik、Envoy 等,从部署流行度来看 OpenResty 毋容置疑是最流行的反向代理网关。本篇探讨的就是 Kubernetes 为了统一对外的入口网关而引入的 Ingress 对象是如何利用 OpenResty 来优化入口网关的能力的。为什么需要 OpenResty原生 Kubernetes Service 提供对...
2020-10-28 16:11:47
610
原创 Service 层引流技术实践
Kubernetes 引入的 Service 层给集群带来了两样特性:第一是 ClusterIP,通过集群 DNS 分配的服务别名,服务可以获得一个稳定的服务名字,例如:foo.bar.svc.cluster.local。第二是反向代理,通过 iptables/IPVS/eBPF 等各种网络数据转换技术把流量负载到上游的 Pod 容器组中。到这里,其实 Service 层的基本技术已经给大家介绍了...
2020-10-28 16:11:47
114
原创 Cilium 容器网络的落地实践
随着越来越多的企业采用 Kubernetes,围绕多云、安全、可见性和可扩展性等新要求,可编程数据平面的需求用例范围越来越广。此外,服务网格和无服务器等新技术对 Kubernetes 底层提出了更多的定制化要求。这些新需求都有一些共同点:它们需要一个更可编程的数据平面,能够在不牺牲性能的情况下执行 Kubernetes 感知的网络数据操作。Cilium 项目通过引入扩展的伯克利数据包过滤器(eB...
2020-10-28 16:11:47
311
原创 练习篇:K8s 集群配置测验
第二部分的内容围绕 Kubernetes 核心组件的安装配置一一给大家拆解了一遍,当前集群组件最主流的配置就是这些:containerd、kubeadm、IPVS、Calico、kube-dns。读者通过官方文档就可以独立配置一套集群,只是笔者发现,因为集群配置的过度复杂,能获得的环境也是千差万别,很难得到统一的认知。本篇测验的目的就是带着大家一起校验一遍我们学习到的经验,一起搭建一套集群的全过程...
2020-10-28 16:11:46
366
原创 理解对方暴露服务的对象 Ingress 和 Service
Kubernetes 中的服务(Service)可以理解为对外暴露服务的最小单元对象,这个和 Pod 对象还是有不同的。例如用户通过发布服务对象 Deployment 发布应用,当在容器集群中启动后,ReplicaSet 副本对象会帮我们维持 Pod 实例的副本数。Pod 使用的容器网络默认会选择构建在主机网络上的覆盖网络(Overlay),默认外网是无法直接访问这些 Pod 实例服务的。为了能有...
2020-10-28 16:11:46
112
原创 南北向流量组件 IPVS 的落地实践
我们知道 Kubernetes 工作节点的流量管理都是由 kube-proxy 来管理的。kube-proxy 利用了 iptables 的网络流量转换能力,在整个集群的数据层面创建了一层集群虚拟网络,也就是大家在 Service 对象中会看到的术语 ClusterIP,即集群网络 IP。既然 iptables 已经很完美的支持流量的负载均衡,并能实现南北向流量的反向代理功能,为什么我们还要让用户...
2020-10-28 16:11:45
139
原创 东西向流量组件 Calico 的落地实践
Kubernetes 网络并没有原生的方案,它从一开始就给我们送来了一个选择题。到底选哪种网络方案才是最佳的方案呢?网络问题一直让社区用户很困惑,以至于在早期,不同场景下的方案如雨后春笋般涌现出来。其中比较优秀的就是今天选择给大家介绍的网络组件 Calico。这里我们要强调的是,Calico 方案并不是唯一方案,我们在社区仍然能看到很多优秀的方案比如 Cilium、OvS、Contiv、Flann...
2020-10-28 16:11:45
298
原创 服务发现 DNS 的落地实践
DNS 服务是 Kubernetes 内置的服务发现组件,它方便容器服务可以通过发布的唯一 App 名字找到对方的端口服务,再也不需要维护服务对应的 IP 关系。这个对传统企业内部的运维习惯也是有一些变革的。一般传统企业内部都会维护一套 CMDB 系统,专门来维护服务器和 IP 地址的对应关系,方便规划管理好应用服务集群。当落地 K8s 集群之后,因为应用容器的 IP 生命周期短暂,通过 App ...
2020-10-28 16:11:45
104
原创 容器引擎 containerd 落地实践
Docker 公司从 2013 年发布容器引擎 Docker 后,就被全球开发者使用并不断改进它的功能。随着容器标准的建立,Docker 引擎架构也从单体走向微服务结构,剥离出 dontainerd 引擎。它在整个容器技术架构中的位置如下:图 6-1 containerd 架构图,版权源自 https://containerd.io/containerd 使用初体验从官方仓库可以下载最新的...
2020-10-28 16:11:44
354
原创 K8s 集群安装工具 kubeadm 的落地实践
kubeadm 是 Kubernetes 项目官方维护的支持一键部署安装 Kubernetes 集群的命令行工具。使用过它的读者肯定对它仅仅两步操作就能轻松组建集群的方式印象深刻:kubeadm init 以及 kubeadm join 这两个命令可以快速创建 Kubernetes 集群。当然这种便捷的操作并不能在生产环境中直接使用,我们要考虑组件的高可用布局,并且还需要考虑可持续的维护性。这些更...
2020-10-28 16:11:44
60
原创 解决 K8s 落地难题的方法论提炼
做过技术落地的读者应该有所体会,任何技术经过一段时间的积累都会形成一套约定成熟的方法论,包括 Kubernetes 也不例外。在这些落地实践中比较突出的问题,有构建集群的问题、CI/CD 如何构建的问题、资源租户管理的问题,还有安全问题最为突出。本文为了让使用 Kubernetes 的后来者能少走弯路,通过总结前人经验的方式给大家做一次深度提炼。构建弹性集群策略Kubernetes 集群架构是...
2020-10-28 16:11:43
98
原创 练习篇:K8s 核心实践知识掌握
经过前面章节的介绍,我们把 Kubernetes 的核心组件、应用编排落地 Kubernetes、DevOps 场景落地 Kubernetes、微服务场景落地 Kubernetes 等主要的知识点给大家讲解了一遍。考虑到读者从拿来知识的角度看总觉得浅,不如通过一篇实战讲解来熟练掌握 Kubernetes 的主要技术能力。很多读者在安装高可用的 Kubernetes 的集群开始的时候就会遇到很多挫...
2020-10-28 16:11:43
172
原创 DevOps 场景下落地 K8s 的困难分析
Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统,一般被 DevOps 团队用来解决在 CI/CD(也就是持续集成、持续发布)场景下遇到的工具链没法统一,构建过程没法标准化等痛点。DevOps 团队在落地 Kubernetes 的过程中发现,在安装、发布、网络、存储、业务滚动升级等多个环节都会遇到一些不可预期的问题,并且官方的参考资料并没有确定性的方案来解决。很多 DevO...
2020-10-28 16:11:42
215
原创 微服务应用场景下落地 K8s 的困难分析
近些年企业应用开发架构发生了细微的变化,根据康威定律,由于企业组织架构的变化,导致微服务应用体系开始在企业应用开发过程中流行起来。微服务是最近几年企业数字化转型过程中,在技术团队技术选型中比较常见的架构升级方案之一。在这个背景下,DevOps 团队为了应对企业架构的变化,迫切需要使用一套统一的基础设施来维护微服务应用的整个生命周期,这就给我们带来了新的挑战——如何应对微服务应用场景,平稳快速的落地...
2020-10-28 16:11:42
325
原创 重新认识 Kubernetes 的核心组件
本篇我们开始介绍 Kubernetes 的核心组件,为了方便大家提前在脑中建立起完整的 Kubernetes 架构印象,笔者整理出核心组件的介绍如下:kube-apiserver,提供了 Kubernetes 各类资源对象(Pod、RC、Service 等)的增删改查及 watch 等 HTTP REST 接口,是整个系统的管理入口。kube-controller-manager,作为集群内...
2020-10-28 16:11:41
765
原创 深入理解 Kubernets 的编排对象
Kubernetes 系统是一套分布式容器应用编排系统,当我们用它来承载业务负载时主要使用的编排对象有 Deployment、ReplicaSet、StatefulSet、DaemonSet 等。读者可能好奇的地方是 Kubernetes 管理的对象不是 Pod 吗?为什么不去讲讲如何灵活配置 Pod 参数。其实这些对象都是对 Pod 对象的扩展封装。并且这些对象作为核心工作负载 API 固化在 ...
2020-10-28 16:11:41
242
原创 开篇词:为什么我们要学习 Kubernetes 技术
Kubernetes 是谷歌开源的分布式容器编排和资源管理系统。因为它的英文术语字数太长,社区专门给它定义了一个缩写单词:K8s。从 2014 年发布至今,已经成为 GitHub 社区中最炙手可热的开源项目。因为以 K8s 为核心的云原生技术已经成为业界企业数字化转型的事实标准技术栈。国内企业纷纷效仿并开始计划落地 K8s 集群作为企业应用发布的默认基础设施,但是具体怎么落实这项云原生技术其实并没...
2020-10-28 16:11:40
1064
原创 第05课:Docker 日志机制与监控实践
概述日志和监控是容器云平台系统最常见的必备组件,形象一点形容其原理就是咖啡和伴侣一样必须配套使用,让你的应用运行的更贴合用户满意的服务运营目标(SLO)。当容器技术被大量行业采用之后,我们遇到了一个很自然的问题,容器化后应用日志怎么收集,监控报警怎么做。这些问题一直困扰着容器行业的从业者,直到以 Google Borgmon 为理论基础的 Prometheus 开源项目发布,EFK 日志系统的容...
2020-10-28 16:05:53
137
原创 第06课:自动化部署分布式容器云平台实践
概述当前云计算场景中部署一套 Kubernetes 集群系统是最常见的容器需求。在初期阶段,大量的部署经验都依赖于前人设计实现的自动化部署工具之上,比如 Ansible。但是为什么这样的自动化工具并不能彻底解决所有 Kubernetes 集群的安装问题呢,主要的矛盾在于版本的升级更新动作在分布式系统的部署过程中,由于步骤复杂,无法提供统一的自动化框架来支持。Ansible 需要撰写大量的有状态...
2020-10-28 16:05:53
292
原创 第03课:容器云平台的构建实践
容器云平台是 Gartner 近些年提出来的云管理平台(Cloud Management Platform,CMP)的企业架构转型衍生品,参考 Gartner 的定义如下: 云管理平台(CMP)是提供对公有云、私有云和混合云整合管理的产品。从容器化角度总结起来就是两块,第一是功能需求,管理容器运行引擎、容器编排、容器网络、容器存储、监控报警日志。第二是非功能需求,可用性,兼容性,安全和易...
2020-10-28 16:05:52
367
原创 第04课:容器网络机制和多主机网络实践
概述容器网络不是新技术,它是云计算虚拟化技术互联互通的基础核心技术。一般意义的网络都是主机与主机之间的通信,颗粒度局限在物理层面的网卡接口。随着虚拟化技术的发展,以应用为中心的新网络结构逐渐明朗清晰。容器技术就是让依赖环境可以跟着应用绑定打包,并随需启动并互联。容器技术的特点也对网络技术的发展起到了互推的作用,当网络不在持久化存在的时候,软件定义网络(SDN)技术的能力就会体现的更充分。容器主...
2020-10-28 16:05:52
174
原创 第01课:Docker 命令行实践
Docker 官方为了让用户快速上手,提供了一个交互式教程,旨在帮助用户掌握 Docker 命令行的使用方法。但是由于 Docker 技术的快速发展,此交互式教程已经无法满足用户的实际使用需求,所以让我们一起开始一次真正的命令行学习之旅。首先,Docker 的命令清单可以通过运行 docker ,或者 docker help 命令得到:$ sudo docker。在 Docker 容器技术...
2020-10-28 16:05:51
138
原创 第02课:基于 Docker 的 DevOps 实践
背景敏捷开发已经流行了很长时间,如今有越来越多的传统企业开始践行敏捷开发所提倡的以人为中心、迭代、循序渐进的开发理念。在这样的场景下引入 Docker 技术,首要目的就是使用 Docker 提供的虚拟化方式,给开发团队建立一套可以复用的开发环境,让开发环境可以通过 Image 的形式分享给项目的所有开发成员,以简化开发环境的搭建。但是,在没有 Docker 技术之前就已经有类如 Vagrant...
2020-10-28 16:05:51
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人