通过Ingress公开Nginx容器

首先

Ingress是一个用于管理Kubernetes集群内服务的外部访问的对象。它可以基于URI将多个服务分配到一起,非常方便。

实施的概要图

image.png

按照这篇文章,可以使用rke2实现Kubernetes集群。

以下的项目将被放置在集群中。

    • Ingress

 

    • Nginx Service (Cluster IP)

 

    Nginx Pod

执行

我将分别展示在使用rke2组建的Kubernetes集群中实施的YAML文件。

第一步:
创建一个名为”test”的NameSpace。

$ kubectl create namespace test

第二步
进行NginX的构建。

创建工作目录

$ mkdir nginx

创建部署

$ vi nginx/nginx-deployment.yaml

以下是Nginx的部署。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    component: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      component: nginx
  template:
    metadata:
      labels:
        component: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.20

搬家

$ cd nginx

在test的NameSpace中创建

$ kubectl apply -f nginx-deployment.yaml -n test

下一步是创建服务。将Nginx服务在群集IP上公开,具体配置如下:

$ vi nginx/nginx-service.yaml

文件服务的名称设为my-first-service。

apiVersion: v1
kind: Service
metadata:
  name: my-first-service
spec:
  selector:
    component: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP

搬家

$ cd nginx

创建服务

$ kubectl apply -f nginx-service.yaml -n test

第三步
创建工作目录

$ mkdir ingress

搬家

$ cd ingress

创建文件

$ vi ingress.yaml

metadate/namespace中创建了一个名为test的Nginx。
service/name将被命名为之前创建的my-first-service。
Ingress的设置如下所示。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-first-service
            port:
              number: 80

在创建Nginx的命名空间中创建入口。

$ kubectl apply -f ingress.yaml -n test

我会确认 Ingress 是否已经创建。

因为在 ADDRESS 上分配了 192.168.150.1、192.168.150.2 和 192.168.150.3 的 IP 地址,所以它已经可以使用了。

$ kubectl get ingress -n test
NAME               CLASS   HOSTS   ADDRESS                                         PORTS   AGE
test-ingress   nginx   *       192.168.150.1,192.168.150.2,192.168.150.3   80      8h

第四步
确认是否能够访问。
在浏览器中输入http://IP地址:80!如果出现以下界面,那就表示OK了!

请参阅

 

广告
将在 10 秒后关闭
bannerAds