Administrator
Administrator
发布于 2025-07-25 / 24 阅读
0
0

Kubenetes安装ingress

ingres nginx controller 和 k8s版本 兼容性要求

官网建议:https://github.com/kubernetes/ingress-nginx/blob/main/README.md#supported-versions-table

使用helm安装

# 添加helm仓库
[root@k8s-master1-60 ~]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

# 进行仓库升级
[root@k8s-master1-60 ~]# helm repo update

# 查看可安装版本
[root@k8s-master1-60 ~]# helm search repo ingress-nginx -l
NAME                       	CHART VERSION	APP VERSION	DESCRIPTION                                       
ingress-nginx/ingress-nginx	4.13.0       	1.13.0     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.12.4       	1.12.4     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.12.3       	1.12.3     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.12.2       	1.12.2     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.12.1       	1.12.1     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.12.0       	1.12.0     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.8       	1.11.8     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.7       	1.11.7     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.6       	1.11.6     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.5       	1.11.5     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.4       	1.11.4     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.3       	1.11.3     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.2       	1.11.2     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.1       	1.11.1     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.11.0       	1.11.0     	Ingress controller for Kubernetes using NGINX a...
ingress-nginx/ingress-nginx	4.10.6       	1.10.6     	Ingress controller for Kubernetes using NGINX a...

# 下载指定安装
[root@k8s-master1-60 ~]# helm pull ingress-nginx/ingress-nginx --version 4.12.0
[root@k8s-master1-60 ~]# tar -zxvf ingress-nginx-4.12.0.tgz
[root@k8s-master1-60 ~]# cd ingress-nginx
[root@k8s-master1-60 ingress-nginx]# ls
changelog  Chart.yaml  ci  OWNERS  README.md  README.md.gotmpl  templates  tests  values.yaml

# 修改ingress-nginx-contorller的镜像配置,注释掉digest
[root@k8s-master1-60 ingress-nginx]# vim values.yaml
controller:
  name: controller
  enableAnnotationValidations: true
  image:
    ## Keep false as default for now!
    chroot: false
    # registry: registry.k8s.io
    image: ingress-nginx/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

[root@k8s-master1-60 ingress-nginx]# vim values.yaml
# 修改kube-webhook-certgen的镜像配置,注释掉digest
      image:
        # registry: registry.k8s.io
        image: ingress-nginx/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


# 修改 service 类型为 NodePort
[root@k8s-master1-60 ingress-nginx]# vim values.yaml
service:
    # -- Enable controller services or not. This does not influence the creation of either the admission webhook or the metrics service.
    enabled: true
    external:
      # -- Enable the external controller service or not. Useful for internal-only deployments.
      enabled: true
    # -- Annotations to be added to the external controller service. See `controller.service.internal.annotations` for annotations to be added to the internal 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
    # -- Pre-defined cluster internal IP address of the external controller service. Take care of collisions with existing services.
    # This value is immutable. Set once, it can not be changed without deleting and re-creating the service.
    # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
    clusterIP: ""

# 官方提供的registry.k8s.io/ingress-nginx/controller无法直接拉取,需要使用替代的镜像。以下操作需要在一个节点操作下载进行后,在把进行拷贝到其他节点
[root@k8s-master1-60 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.12.0
[root@k8s-master1-60 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.5.0
[root@k8s-master1-60 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.12.0 registry.k8s.io/ingress-nginx/controller:v1.12.0
[root@k8s-master1-60 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.5.0 registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.0

# 分发镜像到所有节点、防止调度到某个节点后没有镜像启动失败。
[root@k8s-master1-60 ~]# docker save -o webhook-certgen.tar registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.0
[root@k8s-master1-60 ~]# docker save -o controller.tar registry.k8s.io/ingress-nginx/controller:v1.12.0
[root@k8s-master1-60 ~]# for i in 172.30.42.61 172.30.42.62 172.30.42.63 172.30.42.64; do scp controller.tar webhook-certgen.tar $i:/root; done

# 各个节点加压镜像、其它节点一样的解压操作
[root@k8s-master2-61 ~]# docker load -i webhook-certgen.tar
[root@k8s-master2-61 ~]# docker load -i controller.tar

# 创建命名空间
[root@k8s-master1-60 ~]# kubectl create ns ingress-nginx

# 执行helm install进行安装
[root@k8s-master1-60 ~]# cd ~
[root@k8s-master1-60 ~]# cd ingress-nginx
[root@k8s-master1-60 ingress-nginx]# helm install ingress-nginx -n ingress-nginx .

# 查看安装结果
[root@k8s-master1-60 ingress-nginx]# kubectl get pod -n ingress-nginx -owide
NAME                                       READY   STATUS    RESTARTS   AGE     IP               NODE             NOMINATED NODE   READINESS GATES
ingress-nginx-controller-b55b667bd-l82zx   1/1     Running   0          6m10s   192.164.89.178   k8s-master2-61   <none>           <none>
ingress-nginx-controller-b55b667bd-ms7bc   1/1     Running   0          6m10s   192.172.81.41    k8s-work2-64     <none>           <none>


评论