首页 web前端 js教程 使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署聊天应用程序

使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署聊天应用程序

Jan 02, 2025 pm 07:39 PM

本指南提供了使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署全栈聊天应用程序的分步说明。它旨在帮助开发人员建立强大的 Kubernetes 集群,以便在虚拟专用服务器 (VPS) 上托管容器化应用程序。

部署包括设置基本的 Kubernetes 工具、配置负载均衡器、集成 SSL 以实现安全通信以及部署前端和后端服务。此外,可选部分涵盖使用 Prometheus 和 Grafana 监控应用程序,以增强可观察性和性能跟踪。

无论您是部署用于生产的聊天应用程序还是探索 Kubernetes 功能,本指南都将作为一个全面的路线图,帮助您的应用程序高效启动和运行。

? k8s 入门

下表可帮助您快速导航到特定的工具安装部分。

Tech stack Installation
Docker Install and configure Docker
Kind & Kubectl Install and configure Kind & Kubectl
Metallb Install Metallb
Ingress Install and configure Ingress
Helm Helm Install and configure
SSL Certificate Install and configure Cert Manager
Project Deploy Project Deploy and Others
Monitoring Namespace Create for Groping Prometheus and grafana and Other
Prometheus Install and configure Prometheus
Grafana Install and configure Grafana

?实施该项目的先决条件:

[!注意]
vps 最低需求

  • 内存 - 4GB
  • CPU - 2 核
  • 存储 - 20 GB
  • 一个域

Docker安装和配置

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

登录后复制
登录后复制
登录后复制

Kind 和 Kubectl 安装和配置

使用提供的脚本安装 KIND 和 kubectl。创建 kind_kubectl_config.yaml 文件:

#!/bin/bash

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind

VERSION="v1.31.0"
URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
INSTALL_DIR="/usr/local/bin"

curl -LO "$URL"
chmod +x kubectl
sudo mv kubectl $INSTALL_DIR/
kubectl version --client

rm -f kubectl
rm -rf kind

echo "kind & kubectl installation complete."
登录后复制
登录后复制
登录后复制
./kind_kubectl_config.yaml
登录后复制
登录后复制
登录后复制

[!注意]
如果您的 Vps ARM64 则使用此 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
运行这个脚本,它会创建 kubectl 和友善的环境。
请安装更多信息

?️ 设置 KIND 集群

创建 kind-cluster-config.yaml 文件:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
登录后复制
登录后复制
登录后复制

使用配置文件创建集群:

kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
登录后复制
登录后复制
登录后复制

验证集群:

kubectl get nodes
kubectl cluster-info
登录后复制
登录后复制
登录后复制

[!注意]
这里我添加了额外的PortMappings来运行Ingress

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Metallb 安装

[!注意]
我正在使用 Metallb 来使用 LoadBalance。假设您使用的是 Aws/Azure/DigitalOcean 等,它们提供 kubernates loadBalance 设施,然后不需要 Metallb。这里我从一家本地公司购买VPS。他们提供一个 IP 地址来访问 VPS。

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

登录后复制
登录后复制
登录后复制

检查 Metallb 配置

kubectl get all -n metallb-system
登录后复制
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?️ 创建 Metallb_config.yaml 文件:

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 160.191.163.33-160.191.163.33
登录后复制
登录后复制

应用 metallb_config.yaml 文件

kubectl apply -f metallb_config.yaml
登录后复制
登录后复制

[!注意]
我的 VPS IP 地址是 160.191.163.33。根据您的要求更改此 IP

♻️ Ingress 安装和配置

kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!注意]
这里 service/ingress-nginx-controller 显示 EXTERNAL-IP 是您的 VPS IP。我的VPS IP是160.191.163.33。它确保我们的 Metallb LoadBalance 正常工作。

Helm 安装和配置

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh

./get_helm.sh
登录后复制

检查 Helm 版本

helm version
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?? 安装和配置证书管理器 || SSL 证书

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

登录后复制
登录后复制
登录后复制

安装证书管理器 CRD

#!/bin/bash

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind

VERSION="v1.31.0"
URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
INSTALL_DIR="/usr/local/bin"

curl -LO "$URL"
chmod +x kubectl
sudo mv kubectl $INSTALL_DIR/
kubectl version --client

rm -f kubectl
rm -rf kind

echo "kind & kubectl installation complete."
登录后复制
登录后复制
登录后复制

https://artifacthub.io/packages/helm/cert-manager/cert-manager

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

项目部署及其他

第一步

在您的 VPS 中克隆以下项目

./kind_kubectl_config.yaml
登录后复制
登录后复制
登录后复制

第二步

进入k8s文件夹,可以看到这个文件

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

第三步

创建 Nampe 空间

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
登录后复制
登录后复制
登录后复制

第四步

应用所有秘密文件

kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
登录后复制
登录后复制
登录后复制

第五步

清除 Mongodb 卷和其他

kubectl get nodes
kubectl cluster-info
登录后复制
登录后复制
登录后复制

第六步

应用其他文件的其余部分

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

登录后复制
登录后复制
登录后复制

第七步

配置SSL证书域。打开 ssl_certificate.yaml 并编辑您想要的域名

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

应用 ssl_certificate.yaml 文件

kubectl get all -n metallb-system
登录后复制
登录后复制

第八步

配置 Ingress 文件。 打开 ingress.yaml 并添加您所需的域名。

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

应用 ingress.yaml 文件

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 160.191.163.33-160.191.163.33
登录后复制
登录后复制

检查证书

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

检查命名空间

kubectl apply -f metallb_config.yaml
登录后复制
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?浏览器视图

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?结论

恭喜!您已成功部署 全栈聊天应用程序 。您现在可以访问您的聊天应用程序。

监控及其他[可选]

现在我们正在做额外的功能,比如监控。它可以帮助您了解服务器和应用程序。

创建命名空间

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

登录后复制
登录后复制
登录后复制

检查命名空间

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!注意]
这个命名空间有助于控制所有监控应用程序,例如 Prometheus、Grafana、Loki 等

Prometheus 和 Grafana 安装和配置

安装

#!/bin/bash

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind

VERSION="v1.31.0"
URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
INSTALL_DIR="/usr/local/bin"

curl -LO "$URL"
chmod +x kubectl
sudo mv kubectl $INSTALL_DIR/
kubectl version --client

rm -f kubectl
rm -rf kind

echo "kind & kubectl installation complete."
登录后复制
登录后复制
登录后复制

通过端口运行 Prometheus

./kind_kubectl_config.yaml
登录后复制
登录后复制
登录后复制

现在您可以使用此端口访问 Prometheus。喜欢

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
登录后复制
登录后复制
登录后复制

[!注意]
更改IP地址

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Grafana 安装和配置
通过端口运行 Grafana

kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
登录后复制
登录后复制
登录后复制

获取 Grafana 用户名和密码

用户名

kubectl get nodes
kubectl cluster-info
登录后复制
登录后复制
登录后复制

密码

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

登录后复制
登录后复制
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!注意]
您可以更改密码

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Grafana 仪表板。

在这里您可以选择不同类型的算法仪表板

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

仅此而已。快乐学习:) .
[如果有帮助,给存储库一个星星?]

项目 Github 链接
https://github.com/kamruzzamanripon/k8-node-react-mongodb-app

以上是使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署聊天应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1671
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C到JavaScript:所有工作方式 从C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在行动中:现实世界中的示例和项目 JavaScript在行动中:现实世界中的示例和项目 Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

了解JavaScript引擎:实施详细信息 了解JavaScript引擎:实施详细信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python vs. JavaScript:社区,图书馆和资源 Python vs. JavaScript:社区,图书馆和资源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python vs. JavaScript:开发环境和工具 Python vs. JavaScript:开发环境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C/C在JavaScript口译员和编译器中的作用 C/C在JavaScript口译员和编译器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

See all articles