K8S 安装 Ingress Controller
以 NGINX 开源技术为基础(kubernetes.io),可在GitHub的代码库中找到,由 Kubernetes 社区维护,并且 F5 NGINX 承诺帮助管理该项目。
·
版本介绍
版本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
更多推荐
已为社区贡献3条内容
所有评论(0)