版本介绍

版本1:NGINX Ingress Controller(nginx公司的nginx-ingress)

NGINX Ingress Controller 由 F5 NGINX 开发和维护(docs.nginx.com),可在 GitHub的 nginxinc/kubernetes-ingress 代码库中找到

版本2:Ingress NGINX Controller(k8s社区的ingres-nginx)

以 NGINX 开源技术为基础(kubernetes.io),可在GitHub的 kubernetes/ingress-nginx 代码库中找到,由 Kubernetes 社区维护,并且 F5 NGINX 承诺帮助管理该项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装(Ingress NGINX Controller)

Ingress NGINX Controller 是 Kubernetes 的入口控制器,使用NGINX作为反向代理和负载均衡器

官网地址
在这里插入图片描述

方式1:通过YAML安装

# 在线安装,需要梯子,否则不会成功
kubectl apply -f 
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/cloud/deploy.yaml
# 下载文件到本地,并修改镜像地址,本地安装
curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/cloud/deploy.yaml -o /home/lixing/demo/ingress-nginx.yaml

注意:这个我们参考一个三方的个人博客:【https://github.com/anjia0532/gcr.io_mirror,DockerHub地址:https://hub.docker.com/u/anjia0532】,大体思路就是通过梯子拉取官方镜像,重新改名后上传到DockerHub上

编辑YAML文件

  • 指定三方镜像地址
修改 image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:xxxx 为 image: docker.io/anjia0532/google-containers.ingress-nginx.kube-webhook-certgen:v20230312-helm-chart-4.5.2-28-g66a760794
#
修改 image: registry.k8s.io/ingress-nginx/controller:v1.7.0@sha256:xxxx 为 image: docker.io/anjia0532/google-containers.ingress-nginx.controller:v1.7.0
  • 指定 Ingress Nginx Controller 到固定节点运行(指定node1为边缘节点)
# 给 Node1 节点打标签
kubectl label nodes node1 IngressController=IngressNginx --overwrite
# 
通过 nodeSelector 指定 ingress-nginx-admission-create 到 Node1 节点
通过 nodeSelector 指定 ingress-nginx-admission-patch 到 Node1 节点
通过 nodeSelector 指定 ingress-nginx-controller 到 Node1 节点

模式1、Deployment + NodePort 的 Service 模式

# Ingress NGINX Controller 本身也是一个Service 服务,这里设置该服务对外的暴露类型为NodePort
修改 Service.ingress-nginx-controller的type为NodePort,默认为LoadBalancer
# 自定义Service在node节点暴露的端口
Service.ingress-nginx-controller的ports下分别新增 nodePort: 32766 和  nodePort: 32767

模式2、Deployment + LoadBalancer 的 Service 模式

模式3、DaemonSet + HostNetwork + nodeSelector 的 Service 模式

修改 Service.ingress-nginx-controller的spec.type为ClusterIP
注释 Service.ingress-nginx-controller的spec.externalTrafficPolicy
Deployment.ingress-nginx-controller的spec.template.spec下新增hostNetwork: true
修改 Deployment.ingress-nginx-controller的kind为DaemonSet

本地YAML安装

kubectl apply -f IngressController-Nginx.yaml # 安装
kubectl delete -f IngressController-Nginx.yaml # 卸载

查询 ingress-nginx 命名空间下的资源

kubectl get deployment,replicaSet,pods,service,ingress -n ingress-nginx -o wide
kubectl describe pod -n ingress-nginx podName
kubectl logs -n ingress-nginx podName

检查相关Pod运行状态

kubectl wait --namespace ingress-nginx \
  --for=condition=ready pod \
  --selector=app.kubernetes.io/component=controller \
  --timeout=120s
  # 显示效果:pod/ingress-nginx-controller-5b955cb6c5-9bvcg condition met
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐