当前位置: 首页 > article >正文

ingress-nginx-controller安装

ingress-nginx-controller安装

ingress-nginx-controller是配置ingress发布的基础。以下主要采用Helm安装。地址:

GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for Kubernetes

1 Helm安装

安装不难,需要找到合适的压缩包就行。我自己的安装过程忘了,以下为其他人的安装过程。高版本更加适配高版本。

# 下载
wget https://get.helm.sh/helm-v3.10.0-linux-amd64.tar.gz
 
# 解压
tar -zxvf  helm-v3.10.0-linux-amd64.tar.gz

# 将解压目录下的 helm 程序移动到 usr/local/bin/helm,先进入到解压目录后拷贝
cp helm /usr/local/bin/

# 查看版本 验证是否成功
helm version
# version.BuildInfo{Version:"v3.10.0", ........}

2 下载ingress-nginx

# 安装对应的helm仓库(注意:以下灵感为国内仓库,但是根据失败经验而谈,还是github上的版本更加合适。如下:)
helm repo add azure http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun http://mirror.kaiyuanshe.cn/kubernetes/charts/

# 以下添加的为ingress-nginx的仓库。通常,每个项目都会有自己的 Helm 仓库 URL。
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# 查看版本
[root@k8s-master ingress-nginx]# helm  repo list
NAME         	URL                                       
stable       	http://mirror.azure.cn/kubernetes/charts  
bitnami      	https://charts.bitnami.com/bitnami        
ingress-nginx	https://kubernetes.github.io/ingress-nginx

# 在仓库搜索到自己想要的版本。helm search repo ingress-nginx。但是我比较懒,直接下载了最新的。
# 下载
helm fetch ingress-nginx/ingress-nginx
#解压缩
tar -zxvf ingress-nginx-4.12.0.tgz
cd ingress-nginx
[root@k8s-master ingress-nginx]# ls
changelog  Chart.yaml  ci  OWNERS  README.md  README.md.gotmpl  templates  tests  values.yaml

3 修改配置文件(最重要的)

[root@k8s-master ingress-nginx]# vim values.yaml 

# 具体修改的地方全部列出来了。

#第一处,修改仓库名称和镜像名称,经过测试,registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.12.0可以成功使用。
#这里特别注意有一个前提,如果是在集群中部署项目使用ingress-nginx,需要提前在工作节点下载docker或者containerd,手动拉取从而测试该仓库和镜像是否可用,手动拉取的命令是[root@k8s-node1 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.12.0
。一定要记住。
#继续修改,对以下这段还需要注释digest

controller:
  name: controller
  enableAnnotationValidations: true
  image:
    ## Keep false as default for now!
    chroot: false
    registry: registry.cn-hangzhou.aliyuncs.com
    image: google_containers/nginx-ingress-controller
    ## for backwards compatibility consider setting the full image url via the repository value below
    ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
    ## repository:
    tag: "v1.12.0"
    #digest: sha256:e6b8de175acda6ca913891f0f727bca4527e797d52688cbe9fec9040d6f6b6fa
    #digestChroot: sha256:87c88e1c38a6c8d4483c8f70b69e2cca49853bb3ec3124b9b1be648edf139af3
    pullPolicy: IfNotPresent
    runAsNonRoot: true


# 第二处修改:同样修改仓库和镜像名称,以及注释digest
        readOnlyRootFilesystem: true
      resources: {}
    patch:
      enabled: true
      image:
        registry: registry.cn-hangzhou.aliyuncs.com
        image: google_containers/kube-webhook-certgen
        ## for backwards compatibility consider setting the full image url via the repository value below
        ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
        ## repository:
        tag: v1.5.0
        #digest: sha256:aaafd456bda110628b2d4ca6296f38731a3aaf0bf7581efae824a41c770a8fc4
        pullPolicy: IfNotPresent
      # -- Provide a priority class name to the webhook patching job
      ##
      priorityClassName: ""

# 第三处都是一些小的修改:
 # false 改成 true
  hostNetwork: true
  
# 第四处
 # ClusterFirst 改成 
  dnsPolicy: ClusterFirstWithHostNet
  
# 第5处添加标签。记得在节点上打上标签。kubectl label node k8s-node1 ingress=true
 nodeSelector:
    kubernetes.io/os: linux
	# 增加
    ingress: "true"
    
# 第6处
  # -- Use a `DaemonSet` or `Deployment`
  # Deployment 改成 DaemonSet
  kind: DaemonSet

# 第7处,enabled要改为false

  admissionWebhooks:
    name: admission
    annotations: {}
    # ignore-check.kube-linter.io/no-read-only-rootfs: "This deployment needs write access to root filesystem".

    ## Additional annotations to the admission webhooks.
    ## These annotations will be added to the ValidatingWebhookConfiguration and
    ## the Jobs Spec of the admission webhooks.
    enabled: false

# 第8处,找到controller.service.type,修改为NodePort,这是由于要向外部暴露服务。该type的缩进在controller.service下,一定要找到正确的进行修改。
controller service.
    annotations: {}
    # -- Labels to be added to both controller services.
    labels: {}
    # -- Type of the external controller service.
    # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
    type: NodePort

# 第9处。修改registry为自己的设置,而不是官方的k8s,否则会出现拉取镜像时,镜像拉取仓库改不过来的情况。
## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/index.md
##

global:
  image:
    # -- Registry host to pull images from.
    registry: registry.cn-hangzhou.aliyuncs.com
## Overrides for generated resource names
# See templates/_helpers.tpl

4 安装

# 给ingress-nginx 创建独有的命名空间
kubectl create ns ingress-nginx

# 给master节点,添加标签ingress=true
kubectl label node k8s-master ingress=true

# 安装ingress-nginx,后面的“.”,表示从当前目录开始安装,查找配置文件
helm install ingress-nginx -n ingress-nginx .

如果安装成功的话,会出现一串信息。也可以执行以下命令,出现以下状态,才是安装成功。

[root@k8s-master java-web-demo]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-ddz9m 1/1 Running 0 16m
ingress-nginx-controller-wrh4l 1/1 Running 0 16m

5 注意

1、如果安装成功,出现一串信息,但是kubectl get pods -n ingress-nginx该命令下状态有异常的话。

执行kubectl describe pod 有异常的ingress-nginx名称 -n ingress-nginx

查看日志,一般都是镜像拉取失败和健康检查不过关的问题。

镜像拉取失败分两种

  • 拉取仓库没有改变,还是官方仓库。这一处的问题一般是关于kube-webhook-certgen拉取不到。

    这种在修改配置文件的时候提到,需要更改第9处。

  • 镜像拉取不到

    这种可以尝试手动拉取在节点上和更换仓库。

    手动拉取的命令:

    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.4.1

健康检查不过关需要增加时间,官方健康检查太过于严格了。

2、真的出现上述异常但是按照上述方式修改了之后,可以执行以下命令更新。

helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
>   --namespace ingress-nginx \
>   --values ./values.yaml

3、不过我的建议是卸载重装,避免有缓存。

helm uninstall ingress-nginx -n ingress-nginx

helm install ingress-nginx -n ingress-nginx .

http://www.kler.cn/a/472971.html

相关文章:

  • Meilisearch ASP.Net Core API 功能demo
  • mysql -> 达梦数据迁移(mbp大小写问题兼容)
  • 基于YOLO11的无人机视角下羊群检测系统
  • Unity的四种数据持久化方式
  • PHP语言的数据库编程
  • 海陵HLK-TX510人脸识别模块 stm32使用
  • jenkins入门7 --发送邮件1
  • 基于Qt/C++二维码生成器(附工程源码链接)
  • ClickHouse Cloud Backup 带宽控制问题诊断以及原理分析
  • 常用命令2-netstat
  • 5G学习笔记之SNPN系列之网络选择
  • 离线录制激光雷达数据进行建图
  • 学习threejs,导入wrl格式的模型
  • ip属地功能有什么作用?自己的ip属地哪里看
  • git 创建tag, 并推送到远程仓库,启动actions构建release自动发布
  • Golang的并发编程异常处理
  • 通过Android Studio修改第三方jar包并重新生成jar包
  • 1-Transformer算法解读
  • 汇编实现函数调用
  • 08-1_队列的理论讲解
  • 【Uniapp-Vue3】使用ref定义响应式数据变量
  • C# 中await和async的用法(二)
  • y7000p2023AX211ubuntu20无线网卡驱动
  • 【人工智能计算机视觉】——深入详解人工智能计算机视觉之图像处理之基础图像处理技术
  • UE 5.3 C++ 管理POI 如何对WidgetComponent 屏幕模式进行点击
  • 详述 VScode wkhtmltopdf 实现 markdown 转带目录标签(导航栏)的 PDF