关于k8s nginx外网访问负载均衡的yaml配置文件,使用nodePort

在Kubernetes (k8s) 中,使用Nginx作为反向代理并通过NodePort方式暴露服务到外网是一种常见的做法。NodePort 允许你将服务暴露在每个节点的特定端口上,这样外部流量就可以通过任何节点的IP地址加上这个端口来访问服务。

以下是一个示例的YAML配置文件,它定义了一个Nginx Deployment和一个Service,该Service使用NodePort来暴露Nginx服务。

  1. Nginx Deployment YAML

首先,我们定义一个Nginx Deployment,它负责运行Nginx容器。

yaml 复制代码
vim nginx-deployment.yaml 

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: nginx-deployment  
  labels:  
    app: nginx  
spec:  
  replicas: 3  
  selector:  
    matchLabels:  
      app: nginx  
  template:  
    metadata:  
      labels:  
        app: nginx  
    spec:  
      containers:  
      - name: nginx  
        image: nginx:latest  
        ports:  
        - containerPort: 80

这个Deployment会创建3个Nginx容器的副本,每个容器都监听80端口。

  1. Nginx Service YAML

接下来,我们定义一个Service,它将Nginx Deployment暴露给外部网络。

yaml 复制代码
vim nginx-service.yaml

apiVersion: v1  
kind: Service  
metadata:  
  name: nginx-service  
  labels:  
    app: nginx  
spec:  
  type: NodePort  
  ports:  
    - port: 80  
      targetPort: 80  
      nodePort: 30007  
      protocol: TCP  
  selector:  
    app: nginx

在这个Service配置中:

type: NodePort 指定了Service的类型为NodePort,这意呀着服务将被暴露在每个节点的指定端口上。
port: 80 是Service的端口,即集群内部访问这个Service时使用的端口。
targetPort: 80 指定了流量应该被转发到的容器端口。
nodePort: 30007 是NodePort的端口,即外部访问这个Service时使用的端口。这个端口号需要在Kubernetes集群的节点上可用,并且范围通常是30000-32767。
protocol: TCP 指定了协议类型。
selector 定义了Service如何选择Pods,这里它选择了所有带有app: nginx标签的Pods。

部署

你可以使用kubectl命令行工具来部署这些YAML文件:

bash 复制代码
kubectl apply -f nginx-deployment.yaml  
kubectl apply -f nginx-service.yaml

访问

部署完成后,你可以通过任何Kubernetes节点的IP地址加上nodePort端口(在这个例子中是30007)来访问Nginx服务。例如,如果你的一个节点IP是192.168.1.100,那么你可以通过http://192.168.1.100:30007来访问Nginx服务。

请注意,由于Kubernetes的负载均衡和路由机制,即使你通过某个特定节点的IP和端口访问服务,流量也可能被转发到集群中的其他节点上的Pod上。

相关推荐
Karoku0662 小时前
【CI/CD】CI/CD环境搭建流程和持续集成环境配置
运维·ci/cd·docker·容器·kubernetes·prometheus
Bright16687 小时前
centos9安装k8s集群
云原生·容器·kubernetes
xidianjiapei00110 小时前
Kubernetes的Ingress 资源是什么?
云原生·容器·kubernetes
土豆沒加13 小时前
K8S的Dashboard登录及验证
云原生·容器·kubernetes
终端行者14 小时前
kubernetes1.28部署mysql5.7主从同步,使用Nfs制作持久卷存储,适用于centos7/9操作系统,
数据库·容器·kubernetes
寂夜了无痕19 小时前
k8s容器运行时环境选型指南
云原生·kubernetes·k8s运行时环境选择
fajianchen20 小时前
什么是HTTP/2协议?NGINX如何支持HTTP/2并提升网站性能?
nginx·http
m0_748248771 天前
在 Ubuntu 上安装 Nginx 的详细指南
nginx·ubuntu·postgresql
奔跑吧邓邓子1 天前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
东风微鸣1 天前
TTRSS 迁移实战
docker·云原生·kubernetes·可观察性