通过Ingress公开Nginx容器
首先
Ingress是一个用于管理Kubernetes集群内服务的外部访问的对象。它可以基于URI将多个服务分配到一起,非常方便。
实施的概要图
按照这篇文章,可以使用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了!
请参阅