K8s采用Helm部署redis-standalone

K8s采用Helm部署redis-standalone

在现代微服务架构中,Redis 扮演着至关重要的角色,无论是作为高速缓存、分布式会话存储,还是消息队列,其高性能的读写能力都是后端系统不可或缺的组件。将 Redis 部署在 Kubernetes (K8s) 上,可以充分利用 K8s 的弹性伸缩、自愈和自动化管理能力。而 Helm,作为 K8s 的包管理器,则能将复杂的部署流程标准化、模板化,实现一键式部署与管理。

本文将提供一个生产级的实践指南,详细阐述如何使用 Helm 快速、可靠地在 Kubernetes 集群上部署一个带持久化存储和监控能力的 Redis Standalone(单机模式)实例。

阅读更多
K8s采用Helm部署mysql-replication

K8s采用Helm部署mysql-replication

在构建高可用、数据驱动的后端系统中,数据库的稳定性和可扩展性是基石。传统的MySQL主从复制(Replication)是保障数据冗余和读写分离的经典方案。当我们将应用迁移到云原生环境时,如何在Kubernetes上高效、可靠地部署和管理MySQL主从集群,就成了一个重要课题。

本文将以一个后端架构师的视角,分享如何利用Helm这一强大的Kubernetes包管理工具,快速部署一套带监控的MySQL主从复制集群。我们将通过一个标准化的项目结构,实现配置、安装、验证和生命周期管理的全流程自动化。

阅读更多
K8s采用Helm部署mysql-standalone

K8s采用Helm部署mysql-standalone

在云原生时代,将有状态应用(如MySQL)部署到Kubernetes集群已成为标准实践。借助Helm这一强大的包管理工具,我们可以极大地简化部署和生命周期管理的复杂性。本文将详细阐述如何利用Bitnami社区维护的Helm Chart,在Kubernetes上部署一个带监控、配置灵活的MySQL单机实例(Standalone)。

我们将采用一种工程化的方式,通过配置文件(.env)和脚本(install.sh)来分离配置与执行逻辑,实现可重复、可维护的自动化部署。

阅读更多
K8s采用Helm部署kube-prometheus-stack

K8s采用Helm部署kube-prometheus-stack

在云原生时代,对Kubernetes集群进行全面、实时的监控是确保系统稳定性和性能的关键。Prometheus凭借其强大的数据模型和查询语言,已成为监控领域的标准。kube-prometheus-stack项目将Prometheus、Grafana、Alertmanager以及一系列Exporter和CRD(自定义资源定义)打包在一起,提供了一套开箱即用的、与Kubernetes深度集成的监控解决方案。

本文将以一名后端系统架构师的视角,介绍如何利用Helm这一Kubernetes包管理器,实现kube-prometheus-stack的自动化、可配置化和可重复部署。我们将通过一套精心设计的脚本和配置文件,快速在任何K8s集群上构建起强大的监控体系。

阅读更多
K8s采用Helm部署ingress-nginx

K8s采用Helm部署ingress-nginx

在Kubernetes(K8s)生态中,Ingress是管理集群外部访问HTTP/S路由的核心资源。而ingress-nginx作为官方维护的实现,凭借其高性能和稳定性,成为了事实上的标准。本文将介绍一种生产级的、可重复的部署方式——使用Helm结合脚本,将ingress-nginxDaemonSet的形式部署在指定节点上,并利用hostNetwork模式实现高效的网络通信。

阅读更多
K8s采用Helm部署nfs-subdir-external-provisioner

K8s采用Helm部署nfs-subdir-external-provisioner

在Kubernetes(K8s)集群中,为应用提供持久化存储是一个核心需求。虽然K8s本身提供了多种存储卷类型,但对于需要多节点读写(ReadWriteMany)的场景,或者希望在私有化环境中快速搭建一个可靠共享存储的场景,hostPath或K3s默认的local-path-provisioner便显得力不从心。它们的存储与特定节点绑定,一旦节点故障,数据访问便会中断,甚至有丢失风险。

为了解决这个问题,NFS(Network File System)提供了一个经典且高效的解决方案。它允许我们在网络中共享一个目录,让集群中的所有节点都能访问,从而为Pod提供真正的共享持久化存储。

然而,手动为每个应用创建NFS对应的PersistentVolume(PV)既繁琐又容易出错。这时,nfs-subdir-external-provisioner就派上了用场。它是一个动态存储制备器(Dynamic Provisioner),可以监听PersistentVolumeClaim(PVC)的创建请求,并自动在NFS服务器上创建一个子目录,然后将其注册为PV,最后与PVC进行绑定。整个过程无需人工干预。

本文将以一个后端系统专家的视角,详细介绍如何通过Helm这一强大的K8s包管理器,结合自动化脚本,快速、可靠地在K8s集群中部署nfs-subdir-external-provisioner,为我们的数据驱动应用提供坚实的存储基础。

阅读更多
非root用户执行K3s集群的kubectl命令

非root用户执行K3s集群的kubectl命令

在部署 K3s 轻量级 Kubernetes 集群后,默认生成的集群配置文件(kubeconfig)通常位于 /etc/rancher/k3s/k3s.yaml,且其所有者和权限设定通常只允许 root 用户访问。为了遵循安全最佳实践并在日常管理中使用普通用户执行 kubectl 命令与集群进行交互,我们需要进行一些配置。本文将详细介绍如何让非 root 用户安全、便捷地使用 kubectl 管理 K3s 集群。

阅读更多
轻松访问K8s集群内部:Windows开发机直连Pod网络实战

轻松访问K8s集群内部:Windows开发机直连Pod网络实战

作为后端开发者,我们经常需要在本地开发环境中与Kubernetes集群进行交互,特别是在调试或本地测试时,能够直接访问集群内部的Pod和服务网络会极大提高效率。本文将详细介绍如何在同一个局域网环境下,通过配置静态路由和DNS,使您的Windows开发机能够直接访问运行在Linux机器上K3s集群中的Pod网络(以访问redis-operator部署的redis-cluster为例)。

这种方法利用了网络第三层(网络层)的静态路由原理,直接告诉您的Windows系统或网络网关,发往特定IP段(K8s Pod/Service CIDR)的流量应该导向哪个K8s节点。

阅读更多
打通本地开发环境与 K8s 集群内部网络的利器 Telepresence

打通本地开发环境与 K8s 集群内部网络的利器 Telepresence

作为后端开发人员,我们经常面临这样的挑战:如何在与生产环境高度一致的环境中测试和调试我们的应用程序。Kubernetes 虽然功能强大,但在尝试从本地开发机器与集群内部运行的服务进行交互时,可能会引入复杂性。为每个开发迭代都通过 NodePort 或 Ingress 暴露服务不仅繁琐,而且并非总是安全的。

Telepresence 应运而生:这是一个 CNCF(云原生计算基金会)的项目,它能将您的本地开发环境“传送”到您的 Kubernetes 集群中。它在您的本地机器和集群之间代理网络流量,使您本地运行的代码能够像直接在 Pod内部运行一样访问集群服务(如数据库、消息队列或其他微服务)。同样,它也可以将发往集群中某个服务的流量重定向到您的本地机器。

本指南将引导您在 Windows 计算机上设置 Telepresence,以连接到您的 Kubernetes 集群,从而使您能够(例如)使用本地工具直接访问内部的 Redis 集群。

目标读者: 希望简化其 Kubernetes 开发工作流程的 Windows 用户。
技术栈重点: Kubernetes (任何发行版,如原生 K8s、K3s、EKS、GKE、AKS)、Windows、PowerShell。

阅读更多
K8s 网络揭秘:ClusterIP, Headless, NodePort, LoadBalancer 与 Ingress 全解析

K8s 网络揭秘:ClusterIP, Headless, NodePort, LoadBalancer 与 Ingress 全解析

在 Kubernetes (K8s) 的世界中,Pod 是最基本的调度单元,但它们是短暂的,IP 地址会随着 Pod 的销毁和重建而改变。为了给应用提供一个稳定的访问入口,Kubernetes 引入了 Service 的概念。Service 为一组功能相同的 Pod 提供了一个统一的抽象,并赋予它们一个虚拟 IP (VIP)。然而,Service 的类型多种多样,每种都有其特定的适用场景。作为后端开发人员,理解 ClusterIP, Headless Service, NodePort, LoadBalancer 以及 Ingress 之间的区别至关重要,这能帮助我们更高效地设计和部署可扩展的应用。

接下来,让我们深入探讨这些核心概念。

阅读更多