前言

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

结语

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

DaemonSet方式部署nginx-ingress的更多相关文章

  1. ingress高可用--使用DaemonSet方式部署ingress-nginx

    前言 为了配置kubernetes中的ingress的高可用,对于kubernetes集群以外只暴露一个访问入口,需要使用keepalived排除单点问题.需要使用daemonset方式将ingres ...

  2. 见异思迁:K8s 部署 Nginx Ingress Controller 之 kubernetes/ingress-nginx

    前天才发现,区区一个 nginx ingress controller 竟然2个不同的实现.一个叫 kubernetes/ingress-nginx ,是由 kubernetes 社区维护的,对应的容 ...

  3. Kubernetes 部署 Nginx Ingress Controller 之 nginxinc/kubernetes-ingress

    更新:这里用的是 nginxinc/kubernetes-ingress ,还有个 kubernetes/ingress-nginx ,它们的区别见 Differences Between nginx ...

  4. Nginx Ingress on TKE 部署最佳实践

    概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...

  5. 手把手教你使用 Nginx Ingress 实现金丝雀发布

    概述 本文将介绍如何使用 Nginx Ingress 实现金丝雀发布,从使用场景分析,到用法详解,再到上手实践. 前提条件 集群中需要部署 Nginx Ingress 作为 Ingress Contr ...

  6. kubernetes nginx ingress controller部署

    Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...

  7. Kubernetes 服务入口管理与 Nginx Ingress Controller

    Kubernetes 具有强大的副本,动态扩容等特性,每一次 Pod 的变化 IP 地址都会发生变化,所以 Kubernetes 引进了 Service 的概念.Kubernetes 中使用 Serv ...

  8. 实操教程丨如何在K8S集群中部署Traefik Ingress Controller

    注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...

  9. [经验交流] Kubernetes Nginx Ingress 安装与使用

    Ingress 介绍 Kubernetes 上部署的微服务运行在它的私有网络中, 通过Pod实例的hostPort或Service实例的NodePort可以暴露到主机端口上,便于用户访问.但这样的方法 ...

  10. kubernetes nginx ingress 使用记录

    前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所 ...

随机推荐

  1. 【第5篇】AI语音简介

    1.3  AI语音简介 AI语音既人工智能语音技术,以语音识别技术为开端,实现人机语言的通信,包括语音识别技术(ASR).自然语言处理技术(NLP)和语音合成技术(TTS).通俗点说就是通过语音这个媒 ...

  2. 华为云 MRS 基于 Apache Hudi 极致查询优化的探索实践

    背景 湖仓一体(LakeHouse)是一种新的开放式架构,它结合了数据湖和数据仓库的最佳元素,是当下大数据领域的重要发展方向. 华为云早在2020年就开始着手相关技术的预研,并落地在华为云 Fusio ...

  3. Vue3组件间传值

    12种方式 1. 父组件 ./father.vue 点击查看代码 <template> <h1>father:</h1> <h3>子组件传过来的:{{ ...

  4. Perl语言中一些内置变量等,$x、qw、cmp、eq、ne等

    转载 Perl语言中一些内置变量等,$x.qw.cmp.eq.ne等 字母 符号 释义 eq  = = equal(等于) ne != not equal(不等于) cmp 比较 qq  " ...

  5. Go语言核心36讲51

    你好,我是郝林,今天我们继续分享程序性能分析基础的内容. 在上一篇文章中,我们围绕着"怎样让程序对CPU概要信息进行采样"这一问题进行了探讨,今天,我们再来一起看看它的拓展问题. ...

  6. 8、将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数。如果s1 = s2,输出零。如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是比较两字符串相应字符的ascii码的差值。

    /* 将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数.如果s1 = s2,输出零.如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是 ...

  7. 6、将两个字符串连接起来,不使用strcat函数

    /* 将两个字符串连接起来,不使用strcat函数 */ #include <stdio.h> #include <stdlib.h> void strCat(char *pS ...

  8. 还在手撸TCP/UDP/COM通信?一个仅16K的库搞定!

    摘要 在一些项目中,可能会用到串口(COM)通信,也可能会使用TCP-Server,TCP-Client,UDP等等,这种实现起来都大差不差,所以我封装了一个无任何依赖小而美的通信框架,通用性强,安全 ...

  9. DevExpress中GridControl控件焦点改变时触发事件

    FocusedRowObjectChanged 事件.可以在焦点改变一行的时候触发对应的事件. 做一个记录 大家如果有问题可以 Console.WriteLine("加群"+&qu ...

  10. uniCloud云开发入门以及对传统开发方式的思考

    事情缘由 作为选修了移动互联网应用的一员,老师讲的什么JS基础,还有ES6和uniapp,当然是没怎么听,因为是之前大二的时候都大概看过. 但是快到期末,老师讲了云开发,并且布置了与此相关的大作业,自 ...