前言

nginx-ingress是k8s官方维护的一个Ingress Controller,具体使用,官方有详细的文档:https://kubernetes.github.io/ingress-nginx/deploy/

直接按照官方文档进行安装,一般都会失败,本文将帮助你成功安装他。

官方的安装方式

官方文档提供了两种安装方式,下面是直接拷贝过来的脚本

  1. Helm
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
  1. YAML Manifest
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml

如果不FQ,这两种方式均会失败,又或许你个人电脑可以各种方式FQ,但公司的k8s集群环境可不允许你使用FQ工具。

解决镜像拉取失败

  1. 使用别人上传好的镜像替换

    可以从dockerhub仓库先拉取别人上传的镜像,下载官方的YAML Manifest文件,修改对应的镜像。当然这种不安全。
  2. FQ拉取镜像

  3. 拉取镜像至私有仓库

    将镜像上传到私有仓库,然后进行方式1的操作,如果你没有FQ的环境,推荐使用这个开源项目拉取镜像

    https://github.com/anjia0532/gcr.io_mirror

DaemonSet 方式部署

通过上面的方式,虽然麻烦,但是一定可以解决你的问题,但官方的YAML Manifest默认是以Deployment方式部署nginx-controller,然后通过Loadbalancer类型的Service暴露出去,它将一直处于Pendding状态,这时需要借助开源的MetalLB来直接可用的EXTERNAL-IP,这里不再继续折腾了,有兴趣的可以按照官方的文档去解决:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/

网上搜到的

在网上找了一些如果以DaemonSet方式部署nginx-ingress的文字,有能用的,但是很不官方,也不优雅,基本就是下载YAML Manifest文件,进行手动修改,然后kubectl apply -f deploy.yaml

我推荐的

其实是官方推荐的,官方文档中关于YAML Manifest方式部署方式下面有段提示:

The YAML manifest in the command above was generated with helm template,
so you will end up with almost the same resources as if you had used Helm to install the controller. 上述命令中的 YAML 清单是使用 helm template 生成的,因此您最终将获得与使用 Helm 安装控制器几乎相同的资源。

因为我的集群环境中是不能FQ的,直接通过helm安装是不行了,一般来说ingress很多是采用DaemonSet方式部署,官方的helm chatrs想必可以通过参数控制。

  1. 本地安装helm安装Helm

  2. 如果你本地环境可以FQ,则本地添加helm库

本文为Gui.H原创文章,喜欢请关注公众号 dotnet之美

helm repo add https://kubernetes.github.io/ingress-nginx
  1. 如果你不能FQ

想办法将这个下载这个charts

[ingress-nginx/charts/ingress-nginx at main · kubernetes/ingress-nginx (github.com)](https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx)

  1. 通过helm template生成Manifest清单
helm template --set controller.kind=DaemonSet --set controller.hostPort.enabled=true --set controller.service.enabled=false --namespace ingress-nginx ingress ingress-nginx/ingress-nginx > ./deploy.yaml
  1. 更换deploy.yaml清单中的镜像

    在集群中执行
kubectl apply -f deploy.yaml

结语

创作不易,如果本文对您有帮助,请动动手点个赞吧。

最新文章

  1. C#进阶系列——WebApi 跨域问题解决方案:CORS
  2. 信鸽推送 10004,os文件配置出错,解决办法
  3. 安装JBOSS
  4. Android课程---关于下拉列表与状态栏提示的学习
  5. Array(数组)--map方法
  6. NGUI 粒子显示在上级
  7. asp.net解决数据转换为DBNULL的问题
  8. bat批处理延迟运行脚本(zz)
  9. Context Switch Definition
  10. Android 新一代多渠道打包神器
  11. Web项目发布后字体文件找不到
  12. 莫烦theano学习自修第五天【定义神经层】
  13. 图灵机器人API接口
  14. PAT A1076 Forwards on Weibo (30 分)——图的bfs
  15. HDU 1846 Brave Game (巴什博弈)
  16. ASP.Net MVC OA项目笔记<四>
  17. D01-R语言基础学习
  18. WPF——RenderTransform特效
  19. Django 代码初体验
  20. JavaScript 核心

热门文章

  1. C#接口设计
  2. zk系列二:zookeeper实战之分布式统一配置获取
  3. mybatis的映射
  4. redis五种数据结构详解
  5. 正则表达式之前戏、字符组、量词、特殊符号、贪婪与非贪婪匹配等,python正则模块之re
  6. Vue2基本组件间通信
  7. Js前端导出csv
  8. day32 6 请求转发与重定向的区别、session会话对象 & cookie & 8 应用程序上下文对象ServletContext & 5 请求转发与jsp页面内置对象
  9. instanceof和Class.isAssignableFrom的区别
  10. Selenium4+Python3系列(十二) - 测试框架的设计与开发