当前位置: 首页 > wzjs >正文

用vps刷网站流量要怎么做苏州优化平台

用vps刷网站流量要怎么做,苏州优化平台,建设自己网站软件下载,500强网站设计要提供对 Amazon EKS 集群中多个 Kubernetes 服务的外部访问,您可以使用 Ingress NGINX 控制器或适用于 Kubernetes 的 AWS 负载均衡器控制器。 配置公共和私有负载均衡器:我将向您展示如何使用 Ingress 控制器设置公共和私有负载均衡器。这样&#xff…

要提供对 Amazon EKS 集群中多个 Kubernetes 服务的外部访问,您可以使用 Ingress NGINX 控制器或适用于 Kubernetes 的 AWS 负载均衡器控制器。

  • 配置公共和私有负载均衡器:我将向您展示如何使用 Ingress 控制器设置公共和私有负载均衡器。这样,您可以将私有负载均衡器用于网络内的内部流量,将公共负载均衡器用于来自外部的流量。
  • 使用多个 Ingress 文件路由流量:我将解释如何使用不同的 Ingress 文件将流量定向到不同的 Kubernetes 服务。如果您对不同类型的流量设置了不同的规则,这将非常有用。
  • 使用单个 Ingress 文件路由流量:我还将介绍如何使用单个 Ingress 文件管理流向各种 Kubernetes 服务的流量。此方法可帮助您将路由规则整合到单个配置中。


在深入探讨这些场景之前,让我们先了解一下什么是 Ingress NGINX 控制器以及如何设置它。

Ingress NGINX 控制器


Ingress NGINX 控制器充当 Kubernetes 服务的网关。它管理进入 Kubernetes 集群的流量,并根据您定义的规则将其定向到正确的服务。您可以将其视为流量引导器,确保请求顺利到达正确的目的地。

“Ingress”和“Ingress 控制器”之间存在差异:

Ingress 是一种 Kubernetes 资源,用于管理从集群外部到集群内部服务的 HTTP 和 HTTPS 流量。
Ingress 控制器是实现此功能的工具,通常使用负载均衡器。没有 Ingress 控制器,您就无法使用 Ingress。
IngressClass 可以帮助您选择要使用的 Ingress 控制器。


如何安装 Ingress NGINX 控制器


有几种简单的方法可以安装 Ingress NGINX。以下是每种方法的简单指南:

1. 使用 Helm:

a) 添加 Ingress NGINX Helm 仓库:这就像从专门的商店获取所需的工具一样。

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

 b) 为 Ingress NGINX 创建一个命名空间:这将设置一个 Ingress NGINX 可以工作的空间。

$ kubectl create namespace ingress-nginx

c) 安装 Ingress NGINX:这将把 Ingress NGINX 放入您的 Kubernetes 环境中。

helm install my-ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx

2. 使用 YAML 文件:

下载 deploy.yaml 文件并应用。

这将使用预定义文件设置 Ingress NGINX。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.1/deploy/static/provider/cloud/deploy.yaml

这将安装 Ingress NGINX 。

注意:这将在 AWS 中创建经典负载均衡器,我们可以使用不同类型的 Kubernetes 服务(ClusterIP、NodePort 或 LoadBalancer)来公开 Ingress Nginx Controller 服务。

使用 Ingress NGINX 控制器配置公有和私有网络负载均衡器


先决条件:安装 AWS 负载均衡器控制器。最佳实践是使用 AWS 负载均衡器控制器为 Amazon EKS 中的 LoadBalancer 类型服务对象创建和管理网络负载均衡器。

在 EKS 集群中配置 AWS 负载均衡器控制器后,您可以验证其状态。

$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
aws-load-balancer-controller-b59f12345-j9cw 1/1 Running 0 1d
aws-load-balancer-controller-b59f77777-xdh2 1/1 Running 0 1d

在 AWS 中,我们使用网络负载均衡器 (NLB) 将 Ingress-Nginx 控制器暴露在 Type=LoadBalancer 的服务后面。

要使用 Ingress NGINX 控制器设置私有和公共负载均衡器,请先下载 deploy.yaml 文件。然后,您可以根据需要自定义此文件来配置负载均衡器。

ninjamac@ninjamacdeMacBook-Air eks % curl -O https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.1/deploy/static/provider/aws/deploy.yaml     % Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100 16407  100 16407    0     0  18449      0 --:--:-- --:--:-- --:--:-- 18434

 注释掉 NLB 的当前服务详情,添加提供的新行,然后应用更新后的文件。

注意:请务必更新 VPC 子网的标签。

---
apiVersion: v1
kind: Service
metadata:annotations:# Create External NLBservice.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"service.beta.kubernetes.io/aws-load-balancer-type: nlbservice.beta.kubernetes.io/aws-load-balancer-manage-backend-security-group-rules: "true"service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-XXXXXX"service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:ap-south-1:XXXXXX:certificate/XXXXXXXservice.beta.kubernetes.io/aws-load-balancer-backend-protocol: "ssl"service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600'service.beta.kubernetes.io/aws-load-balancer-name: "ingress-nginx-external-nlb"labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.11.1name: ingress-nginx-controllernamespace: ingress-nginx
spec:externalTrafficPolicy: Localports:- appProtocol: httpname: httpport: 80protocol: TCPtargetPort: http- appProtocol: httpsname: httpsport: 443protocol: TCPtargetPort: httpsselector:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxtype: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:annotations:# Create internal NLBservice.beta.kubernetes.io/aws-load-balancer-scheme: "internal"service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"service.beta.kubernetes.io/aws-load-balancer-type: nlbservice.beta.kubernetes.io/aws-load-balancer-manage-backend-security-group-rules: "true"service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-XXXXXXXX"service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:ap-south-1:XXXXXX:certificate/XXXXXXXXXservice.beta.kubernetes.io/aws-load-balancer-backend-protocol: "ssl"service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600'service.beta.kubernetes.io/aws-load-balancer-name: "ingress-nginx-internal-nlb"labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.11.1name: ingress-nginx-controller-internalnamespace: ingress-nginx
spec:externalTrafficPolicy: Localports:- appProtocol: httpname: httpport: 80protocol: TCPtargetPort: http- appProtocol: httpsname: httpsport: 443protocol: TCPtargetPort: httpsselector:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxtype: LoadBalancer
---

 

$ kubectl apply -f deploy.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
configmap/ingress-nginx-controller created
service/ingress-nginx-controller created
service/ingress-nginx-controller-internal created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
$

使用上述命令为公共和私有 NLB 创建入口,让我们使用以下命令进行验证:

$ kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer XXX.XXX.XXX.XXX ingress-nginx-external-nlb-XXXXX.elb.ap-south-1.amazonaws.com 80:31070/TCP,443:32588/TCP 41s
ingress-nginx-controller-admission ClusterIP XXX.XXX.XXX.XXX <none> 443/TCP 41s
ingress-nginx-controller-internal LoadBalancer XXX.XXX.XXX.XXX ingress-nginx-internal-nlb-XXXXX.elb.ap-south-1.amazonaws.com 80:31690/TCP,443:31672/TCP 41s
$

使用 DNS 提供商为负载均衡器添加域名记录,以便正确路由流量。在本博客中,我使用了 Route53,并使用相同的域名 ingress.example.com 为外部负载均衡器创建了一个公共主机记录,为内部负载均衡器创建了一个私有主机记录。您也可以为外部和内部负载均衡器使用不同的域名。

测试 Ingress NGINX 控制器


使用多个 Ingress 文件路由流量


让我们在不同的命名空间中部署两个应用程序,并为每个命名空间创建单独的 Ingress 文件。

使用多个 Ingress 文件路由流量
创建两个命名空间来部署应用程序

$kubectl create namespace apache-app-ns
$kubectl create namespace nginx-app-ns

验证状态
$ kubectl get ns
设置两个部署或微服务。例如:使用以下 yaml 文件创建 nginx-app 和 apache-app。

## nginx-app.yaml ##
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-appname: nginx-appnamespace: nginx-app-ns
spec:replicas: 1selector:matchLabels:app: nginx-apptemplate:metadata:labels:app: nginx-appspec:containers:- image: nginxname: nginx
---
apiVersion: v1
kind: Service
metadata:namespace: nginx-app-nsname: nginx-svclabels:app: nginx-app
spec:type: ClusterIPselector:app: nginx-appports:- protocol: TCPport: 80targetPort: 80
## apache-app.yaml ###
apiVersion: apps/v1 
kind: Deployment 
metadata:name: apache-appnamespace: apache-app-ns
spec:replicas: 1selector:matchLabels:app: apache-apptemplate:metadata:labels:app: apache-appspec:containers:- name: apache-appimage: httpd:latestports:- containerPort: 80 --- 
apiVersion: v1 
kind: Service 
metadata:name: apache-svcnamespace: apache-app-nslabels: 
spec:ports:- port: 80targetPort: 80protocol: TCPselector:app: apache-app

 

$ kubectl apply -f apache-app-svc.yaml
$ kubectl apply -f nginx-app.yaml

 先部署nginx 应用

### nginx-ingress.yml ##
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/add-base-url: "true"nginx.ingress.kubernetes.io/rewrite-target: /$1name: nginx-ingressnamespace: nginx-app-nslabels:app: nginx
spec:ingressClassName: nginxrules:- host: ingress.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80
$ kubectl apply -f nginx-ingress.yml      
ingress.networking.k8s.io/nginx-ingress configured

 此 Ingress 配置确保路径包含 / 的请求会被转发到 nginx-app-ns 命名空间内的 nginx-svc 服务,并由 Ingress NGINX 控制器进行相应的 URL 重写。

ingressClassName: nginx:指定此 Ingress 使用的 Ingress 类。此处设置为 nginx,表示 Ingress NGINX 控制器应该处理此 Ingress。

# host: "your-domain.com"

请将其替换为您的域名或子域名

现在为 Apache 应用程序部署 Ingress:

### apache-app-ingress.yaml ###
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/add-base-url: "true"nginx.ingress.kubernetes.io/rewrite-target: /$1name: apache-ingressnamespace: apache-app-nslabels:app: apache-app
spec:ingressClassName: nginxrules:- host: ingress.example.comhttp:paths:- path: /apachepathType: Prefixbackend:service:name: apache-svcport:number: 80

$ kubectl apply -f apache-app-ingress.yaml                                  
ingress.networking.k8s.io/apache-ingress configured

通过使用上述命令为 apache 应用程序创建入口,并确保带有 /apache 路径的请求转发到 apache-app-ns 命名空间内的 apache-svc 服务,让我们使用以下命令验证是否创建了资源:

$ kubectl get svc -A |egrep "apache-svc|nginx-svc"
apache-app-ns apache-svc ClusterIP XX.XXX.XXX.XXX <none> 80/TCP 45m
nginx-app-ns nginx-svc ClusterIP XX.XXX.XXX.XXX <none> 80/TCP 36m
$ kubectl get ing -A |egrep "apache|nginx"     
apache-app-ns   apache-ingress                            nginx   ingress.example.com   ingress-nginx-external-nlb-XXXXX.elb.ap-south-1.amazonaws.com   80      23m
nginx-app-ns    nginx-ingress                             nginx   ingress.example.com   ingress-nginx-external-nlb-XXXXXX.elb.ap-south-1.amazonaws.com   80      26m
$

使用以下 URL 访问 nginx 和 apache 应用程序

apache-app: http://ingress.example.com/apache

 注意:内部负载均衡器可在 VPC 内部或使用 VPN 设置访问。

使用单个 Ingress 文件路由流量


让我们在不同的命名空间中部署两个应用程序,并创建单个 Ingress 文件,使用“ExternalName”服务将流量路由到后端服务。

ExternalName 服务是一种特殊的服务,它没有选择器,而是使用 DNS。

使用单个 Ingress 文件路由流量

Routing Traffic with a Single Ingress File
### app-external-service.yaml ###
apiVersion: v1
kind: Service
metadata:name: nginx-externalnamespace: default
spec:type: ExternalNameexternalName: nginx-svc.nginx-app-ns
---
apiVersion: v1
kind: Service
metadata:name: apache-externalnamespace: default
spec:type: ExternalNameexternalName: apache-svc.apache-app-ns
$ kubectl apply -f app-external-service.yaml 
service/nginx-external created
service/apache-external created
$ 
$ kubectl get svc |egrep "apache|nginx"
apache-external                   ExternalName   <none>          apache-svc.stream-app-ns   <none>         3m41s
nginx-external                    ExternalName   <none>          nginx-svc.blog-app-ns      <none>         3m41s
$

 

此处,默认命名空间中名为 nginx-external 和 apache-external 的 Kubernetes 服务被设置为将请求重定向到 DNS 名称分别为 nginx-svc.nginx-app-ns 和 apache-svc.apache-app-ns 的外部服务。

接下来,我们将创建一个 Ingress 文件,将流量路由到这些 ExternalName 服务,确保流量被定向到正确的后端服务。

注意:我们的 Ingress 和 ExternalName 服务应部署在同一命名空间中。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/add-base-url: "true"nginx.ingress.kubernetes.io/rewrite-target: /$1name: nginx-ingressnamespace: defaultlabels:app: nginx
spec:ingressClassName: nginxrules:- host: ingress.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-externalport:number: 80- path:  /apachepathType: Prefixbackend:service:name: apache-externalport:number: 80

$kubectl apply -f nginx-ingress.yml
ingress.networking.k8s.io/nginx-ingress created
$ 

使用以下命令测试 nginx 和 apache 应用,您也可以通过浏览器进行测试

$ curl -Ilk ingress.example.com               
HTTP/1.1 200 OK
Date: Sun, 04 May 2025 20:38:20 GMT
Content-Type: text/html
Content-Length: 615
Connection: keep-alive
Last-Modified: Sun, 04 May 2025 13:22:30 GMT
ETag: "6655da96-267"
Accept-Ranges: bytes

$ curl -Ilk ingress.example.com/apache
HTTP/1.1 200 OK
Date: Sun, 04 May 2025 20:38:25 GMT
Content-Type: text/html
Content-Length: 45
Connection: keep-alive
Last-Modified: Sun, 04 May 2025 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes

两个应用程序都返回 200 响应,表示它们运行正常。

 

总结:


在本篇博文中,我们探讨了如何使用 Ingress NGINX 控制器和 AWS 负载均衡器有效地管理和路由 Kubernetes 中的流量。

通过理解和实施这些技术,您可以确保您的 Kubernetes 环境井然有序,并且您的服务能够按需访问。无论您是管理内部工作流还是处理外部请求,这些工具和配置都能提供灵活性和控制力。


文章转载自:

http://Q6fszcsh.jzkqg.cn
http://CQv3MY5d.jzkqg.cn
http://xVkXR4Mt.jzkqg.cn
http://woY29qf2.jzkqg.cn
http://JXUJpUdH.jzkqg.cn
http://hJNjDNtH.jzkqg.cn
http://RpDMEoMb.jzkqg.cn
http://IR6Sevo5.jzkqg.cn
http://vmTUprb3.jzkqg.cn
http://yDHzw8Rg.jzkqg.cn
http://PeMplina.jzkqg.cn
http://XYI4FLhw.jzkqg.cn
http://Tag3jKTQ.jzkqg.cn
http://jqe6Gi1E.jzkqg.cn
http://fmY6VoRM.jzkqg.cn
http://oK8cFlmv.jzkqg.cn
http://ZrOAKMw5.jzkqg.cn
http://RiJEGyL3.jzkqg.cn
http://1H9eiIlb.jzkqg.cn
http://kx2SV6Ok.jzkqg.cn
http://5RW6cWkJ.jzkqg.cn
http://6QS3PEO4.jzkqg.cn
http://yx2cCunO.jzkqg.cn
http://LYkilUA0.jzkqg.cn
http://GLP6friM.jzkqg.cn
http://i0CtdC3d.jzkqg.cn
http://rcfF44ne.jzkqg.cn
http://wVfhUSZE.jzkqg.cn
http://N0zQFixo.jzkqg.cn
http://38zVESfZ.jzkqg.cn
http://www.dtcms.com/wzjs/703619.html

相关文章:

  • 网站开发淄博明朝传奇网页游戏
  • 免费的行情网站推荐大全枣庄定制网站建设制作
  • 平面设计官方网站西安市建设工程信息网诚信信息平台诚信承诺书在哪儿下载
  • wordpress 作品集网站北京优化生育
  • 企业网站管理系统 asp推广网址
  • 生物医药基地网站建设网站建设难吗
  • 做网站一定要域名嘛网站后台打打开空白
  • 毕设做网站 方面的论文百度识图搜索
  • 4s店网站建设c .net网站开发实例
  • 北京网站开发哪家专业平阳住房和城乡规划建设局网站
  • 网站开发建设费用wordpress 插件站
  • 简洁大方网站建设网站建设高级 上海
  • 建设中网站医院网站建设 利法拉网络
  • 网站建设 设计方案 百度文库win7 iis 默认网站
  • 电子商务网站建设初学视频教程seo推广薪资
  • 江苏建站速度忿设计网站大全免费
  • 北京网站制作一般多少钱单产品网站建设
  • 东莞证券官方网站陕西网站建设方案优化
  • 直播视频软件免费优化
  • 建设一个网站需要哪些人员参与网站建设项目实践报告书
  • 上海网站建设方案服务工地用的木模板是什么板
  • 什么网站可以做字体效果好nike diy定制网站
  • 大型网站开发语言框架工具条形码生成器在线制作二维码
  • 重庆公司网站设计制作什么样的公司开做网站
  • dw做网站需要数据库么建设银行网站背景图片
  • 重庆教育建设有限公司网站做外贸网站哪家的好
  • 网站策划案怎么写范文wordpress设置菜单
  • 1 建设网站目的学电子商务有前途吗
  • 华夏业务员做单的网站莱芜可信赖的网站建设
  • 国内知名的网站建设公司个人购物网站怎么做