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,为我们的数据驱动应用提供坚实的存储基础。

阅读更多
RockyLinux 镜像源替换实战指南
掌握 ssh-keygen:揭秘公钥与私钥的工作原理与生成实践

掌握 ssh-keygen:揭秘公钥与私钥的工作原理与生成实践

在日常的软件开发和系统管理中,我们经常需要安全地连接到远程服务器、执行 Git 操作,或者进行其他需要身份认证的网络通信。传统的密码认证方式往往存在暴力破解和中间人攻击的风险,而基于SSH密钥认证的机制,则提供了一种更强大、更安全的解决方案。

SSH(Secure Shell)密钥对由公钥私钥组成。公钥可以公开,放置在远程服务器上;私钥则必须严格保密,存放在本地。当尝试连接时,SSH客户端会用私钥加密一段数据,服务器用对应的公钥解密验证,从而完成身份认证,无需传输敏感的密码。

本文将深入解析生成SSH密钥对的核心命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com",并指导你如何在实践中正确使用它。

阅读更多
Hyper-V虚拟机新增虚拟硬盘

Hyper-V虚拟机新增虚拟硬盘

笔者在使用Hyper-V虚拟机进行日常运维和环境搭建时,经常会遇到存储空间不足或需要独立数据盘的情况。近期,在为某个Kubernetes集群部署Rook-Ceph分布式存储解决方案时,就遇到了需要为虚拟机动态新增多个虚拟硬盘的需求。这个过程虽然看似简单,但对于初次接触或不熟悉Hyper-V操作的用户来说,每一步的细节都值得仔细推敲。因此,本文旨在详细记录从零开始为Hyper-V虚拟机添加虚拟硬盘的整个过程,并附上详细的图文步骤,希望能为遇到类似需求的朋友提供清晰直观的指引,帮助他们高效地扩展虚拟机存储能力。

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

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

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

阅读更多
Docker重启策略restart参数值的对比与选择

Docker重启策略restart参数值的对比与选择

在现代后端应用部署中,容器化技术已成为标配。Docker 作为其中的佼佼者,提供了强大的容器管理功能。其中,容器的重启策略(Restart Policy)是确保应用高可用性和自我修复能力的关键一环。当容器因错误、资源问题或其他原因意外退出时,一个配置得当的重启策略能够自动尝试恢复服务,减少人工干预,提升系统韧性。

本文将深入探讨 Docker 支持的几种主要重启策略:no (默认)、alwaysunless-stoppedon-failure,并通过实例演示它们的行为差异,帮助您在不同场景下做出最佳选择。

阅读更多
轻松访问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。

阅读更多