1/23

第十五章:了解 Ingress 与 Ingress Nginx 配置

在 Kubernetes 中,Ingress 暴露出 HTTP 和 HTTPS 路由,可以接受外部流量后转发内部服务,相当于一个入口。

课程中使用的 Ingress 实现是 Nginx Ingress,使用的是 ingress-nginx 这个由社区维护的项目,而不是 kubernetes-ingress 这个由 Nginx 公司维护的。

ingress-nginx 官网地址:https://kubernetes.github.io/ingress-nginx/

  • 安装

先应用配置:

wuxianmimi kubernetes-complex % kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/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-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 unchanged
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
wuxianmimi kubernetes-complex %

在视频中,接下来会使用 minikube addons enable ingress 命令,但是咪咪本地运行此命令会报错,网上找了很多解决办法试了试都无法解决问题。

而且经过测试,这条命令与上一条 kubectl apply 命令只要运行了其中一条,那剩下那条命令运行就会报错。

这里写继续往下走流程。

  • 配置

在 k8s 目录创建 ingress-service.yaml:

# 从 Kubernetes 1.19 起改名了
# Kubernetes 1.22 开始只支持 networking.k8s.io/v1
# apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
  kubernetes.io/ingress.class: nginx
   # /api/ 的请求转发后重写,删除 /api 部分
# 新的 apiVersion 需要使用这种写法来匹配 path 的正则
  nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
  - http:
      paths:
        - path: /(.*)
           # pathType 是必填字段
          pathType: Prefix
           # 由于 apiVersion 不同,格式变了
          backend:
             # serviceName: client-cluster-ip-service
             # servicePort: 3000
            service:
              name: client-cluster-ip-service
              port:
                number: 3000
        - path: /api/(.*)
          pathType: Prefix
          backend:
             # serviceName: server-cluster-ip-service
             # servicePort: 5000
            service:
              name: server-cluster-ip-service
              port:
                number: 5000

咪咪本地的 Kubernetes 版本是 v1.25.3,视频中使用的 apiVersion 已无法使用,所以配置格式有点不同。

在终端 kubectl apply 应用配置,随后通过 minikube ip 获取虚拟机IP地址,在浏览器访问该地址来访问我们的服务。

Mac 用户还是在终端输入 minikube service 命令来获取访问 URL:

wuxianmimi kubernetes-complex % minikube service ingress-nginx-controller --url -n ingress-nginx
http://127.0.0.1:62664
http://127.0.0.1:62665
❗ Because you are using a Docker driver on darwin, the terminal needs to be open to run it.

访问 http://127.0.0.1:62664

img启动成功,且可正常使用

尝试提交了几个值,可以正常运行。

  • minikube 控制台

在命令行输入 minikube dashboard 可以打开控制台:

wuxianmimi ~ % minikube dashboard
🔌 正在开启 dashboard ...
  ▪ Using image docker.io/kubernetesui/dashboard:v2.7.0
  ▪ Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
💡 Some dashboard features require the metrics-server addon. To enable all features please run:

minikube addons enable metrics-server


🤔 正在验证 dashboard 运行情况 ...
🚀 Launching proxy ...
🤔 正在验证 proxy 运行状况 ...
🎉 Opening http://127.0.0.1:59433/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

会自动打开页面:

imgminikube 控制台

posted @ 2025-01-23 17:13  Hbro  阅读(3)  评论(0)    收藏  举报