PVE 上 Debian 12 虚拟机部署 Kubernetes 1.31 简要记录
✨ 文章记录了在 PVE 虚拟机上部署 Kubernetes 1.31 集群的操作过程,包括环境准备,安装并配置 containerd 作为容器运行时,使用 kubeadm 初始化 Kubernetes 集群,并部署 Cilium 。最后,文章验证了集群功能并展示了如何删除集群。
✨ 文章记录了在 PVE 虚拟机上部署 Kubernetes 1.31 集群的操作过程,包括环境准备,安装并配置 containerd 作为容器运行时,使用 kubeadm 初始化 Kubernetes 集群,并部署 Cilium 。最后,文章验证了集群功能并展示了如何删除集群。
✨ Helm 是一个 Kubernetes 的包管理工具,通过使用 Charts 描述 Kubernetes 资源的集合来管理和部署应用程序。Helm 3 相对于 Helm 2 提供了更好的安全性、稳定性和易用性。一个典型的 Chart 包含了部署一个应用所需的所有配置、依赖关系和相关资源。我们可以通过修改 Chart 中的配置文件和模板文件来自定义部署应用程序的方式。使用 Helm,我们可以轻松地管理和部署复杂的应用程序,并减少人工操作的错误和遗漏。我们可以通过编写脚本,从现有的 Kubernetes Deployment 配置中提取相应配置,并将其转换为 Helm Values 文件,从而实现自动化管理和部署。
✨ Kubernetes是一个用于自动部署、扩展和管理容器化应用程序的开源系统。它提供了许多命令行工具和图形用户界面,用于管理和监控Kubernetes集群。其中一些常用的工具包括OpenLens(用于集群概览和资源监控)、K9s(用于实时监控和资源编辑)、kubecm(用于KubeConfig管理)、krew(用于插件管理)等。 这些工具提供了集群状态、资源监控、配置管理、事件和日志显示、可扩展性、集群拓扑、资源编辑、实时监控、快速导航、详细信息查看、KubeConfig管理、插件管理、节点调试、Pod监控、资源关系展示、状态显示、资源分配查看、镜像管理、命令执行、服务访问、Secret管理、网络流量捕获、Ingress管理、YAML文件格式化、日志跟踪等功能。 因此,Kubernetes集群的管理工具和命令行工具提供了丰富的功能,可帮助用户更轻松地管理和监控其Kubernetes环境。
✨ 本文介绍了在 Kubernetes 中实现 Spring Cloud 微服务的优雅滚动更新。通过配置 Eureka 和 Ribbon 的参数来缩短服务注册信息的刷新间隔,并让网关在请求异常时重试一次。另外,通过设置 Pod 的 terminationGracePeriod 和 PreStop 钩子来主动下线旧版本的微服务,保证服务的平滑终止。最后,建议集成 Spring Cloud Kubernetes 来代替 Eureka,进一步提升服务升级的平滑度,实现无感知更新。
✨ 在 Kubernetes (K8s) 的 Pod 中运行的应用,想要获取客户端的真实 IP 地址信息,可以通过检查 "X-Original-Forwarded-For" 请求头来获取。在 K8s 集群中,请求经过 Ingress Controller 处理后,会将真实的客户端 IP 地址添加到该请求头中。因此,应用需要通过提取该请求头来获取客户端 IP 信息。需要注意的是,在 Ingress 资源中配置 "nginx.ingress.kubernetes.io/proxy-real-ip-cidr" 注解来启用对该请求头的支持。通过这种方式,应用可以准确获取到客户端的 IP 地址信息。
✨ 为 K8s Nginx Ingress Controller 配置 HTTP Basic Auth,增强安全。首先使用 htpasswd 或 openssl 命令创建认证文件,然后创建 Secret,并将认证文件作为其值。最后,通过在 Ingress 中设置相应的注解来启用基本认证。成功应用后,访问 Ingress 对应的 URL 将需要输入用户名和密码。扩展:在 Nginx 配置文件中增加 auth_basic 和 auth_basic_user_file 指令以配置 Basic 认证。