【kubernetes】Minikube-使用NGINX-ingress控制器访问应用
Minikube-使用NGINX-ingress控制器访问应用
Ingress 不会公开任意端口或协议。 将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用 Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的服务。
启动Ingress
为了启用 NGINIX Ingress 控制器,可以运行下面的命令:
1 | minikube addons enable ingress |
检查验证 NGINX Ingress 控制器处于运行状态:
1 | # 老版本的minikube使用 |
请确保可以在输出中看到一个名称以nginx-ingress-controller-
为前缀的Pod
部署一个nginx应用
创建Deployment
1
kubectl create deployment web --image=nginx:1.21.6-alpine
暴露Deployment
1
kubectl expose deployment web --type=NodePort --port 80
使用节点端口访问服务
1
minikube service web --url
创建一个Ingress
- 通过运行下面的命令创建 Ingress 对象:
example-ingress.yaml
1 | apiVersion: networking.k8s.io/v1 |
1 | kubectl apply -f example-ingress.yaml |
验证 IP 地址已被设置
1
2
3$ kc get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress nginx hello-world.info 80 8s在
/etc/hosts
里面添加host注: minikube ip 获取外部ip地址配置在host中,Ingress中显示的回事内部ip地址
1
192.168.49.2 hello-world.info
验证通过Ingress控制器能够转发请求流量
1
curl hello-world.info
创建第二个Deployment
创建Deployment
1
kubectl create deployment web2 --image=nginx:1.21.6-alpine
暴露Deployment
1
kubectl expose deployment web2 --type=NodePort --port 80
修改现有Ingress.yaml
- 通过运行下面的命令创建 Ingress 对象:
example-ingress.yaml
1 | apiVersion: networking.k8s.io/v1 |
1 | kubectl apply -f example-ingress.yaml |
- 访问第一个第二个应用
1
2
3
4
5# 第一个
curl http://hello-world.info
# 第二个
curl http://hello-world.info/v2
参考
在 Minikube 环境中使用 NGINX Ingress 控制器配置 Ingress
How NGINX Ingress Controller Works