1.Helm安装,可参考:Helm安装

2.下载 Ingress Nginx Controller 安装包

添加一个新的仓库,并且将其命名为ingress-nginx

[root@k8s-master01 ~]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

查看仓库列表,观察到新的仓库已添加

[root@k8s-master01 ~]# helm repo list
NAME            URL
ingress-nginx   https://kubernetes.github.io/ingress-nginx

更新仓库信息

[root@k8s-master01 ~]# helm repo update

下载ingress-nginx版本之前,我们需要先打开ingress-nginx的Github官网确认自身集群版本,这里k8s集群版本为1.23.17,选择ingress-nginx版本是4.3.0

Ingress Controller安装-1

[root@k8s-master01 ~]# helm pull ingress-nginx/ingress-nginx --version 4.3.0

3.修改values.yaml

[root@k8s-master01 ~]# tar xf ingress-nginx-4.3.0.tgz
[root@k8s-master01 ~]# cd ingress-nginx
[root@k8s-master01 ingress-nginx]# vim values.yaml

修改Controller 和 admissionWebhook 的镜像地址,需要将公网镜像同步到国有镜像

#Controller镜像地址
  image:
    registry: registry.cn-hangzhou.aliyuncs.com
    image: abroad_images/controller
    tag: "v1.4.0"
#admissionWebhook镜像地址
  image:
    registry:  registry.cn-hangzhou.aliyuncs.com
    image: abroad_images/kube-webhook-certgen
    tag: v20220916-gd32f8c343
#defaultbackend镜像地址
  image:
    registry: registry.cn-hangzhou.aliyuncs.com
    image: abroad_images/defaultbackend-amd64
    tag: "1.5"

Ingress Controller安装-2

Ingress Controller安装-3

Ingress Controller安装-4

将镜像的所有 digest 值注释

#digest: sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10f
#digest: sha256:34ee929b111ffc7aa426ffd409af44da48e5a0eea1eb2207994d9e0c0882d143
#digestChroot: sha256:b67e889f1db8692de7e41d4d9aef8de56645bf048261f31fa7f8bfc6ea2222a0

Ingress Controller安装-5

Ingress Controller安装-6

hostNetwork 由false设置为 true

  hostNetwork: true

Ingress Controller安装-7

dnsPolicy 由ClusterFirst设置为 ClusterFirstWithHostNet

  dnsPolicy: ClusterFirstWithHostNet

Ingress Controller安装-8

NodeSelector 处在原来的基础上添加 ingress: "true"部署至指定节点

  nodeSelector:
    kubernetes.io/os: linux
    ingress: "true"

Ingress Controller安装-9

类型由Deployment更改为 DaemonSet,用于确保在Kubernetes集群的每个节点上都部署一个ingress-nginx的副本

  kind: DaemonSet

Ingress Controller安装-10

将ingress nginx 设置为默认的 ingressClass,即将default由false设置为true

  ingressClassResource:
    name: nginx
    enabled: true
    default: true
    controllerValue: "k8s.io/ingress-nginx"

Ingress Controller安装-11

4.给node02节点打上ingress=true的标签

[root@k8s-master01 ingress-nginx]# kubectl label node k8s-node02 ingress=true

5.部署 ingress

[root@k8s-master01 ingress-nginx]# kubectl create ns ingress-nginx
[root@k8s-master01 ingress-nginx]# helm install ingress-nginx -n ingress-nginx .

6.查看pod节点情况

[root@k8s-master01 ingress-nginx]# kubectl get po -n ingress-nginx
NAME                             READY   STATUS    RESTARTS   AGE
ingress-nginx-controller-n8nxd   1/1     Running   0          2m10s

7.登录node02节点,查看是否开放80端口以及nginx服务

[root@k8s-master01 ingress-nginx]# ssh k8s-node02
[root@k8s-node02 ~]# netstat -lntp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      124330/nginx: maste
tcp6       0      0 :::80                   :::*                    LISTEN      124330/nginx: maste

[root@k8s-node02 ~]# ps -aux | grep nginx
101      124298  0.0  0.0    208     4 ?        Ss   15:45   0:00 /usr/bin/dumb-init -- /nginx-ingress-controller --publish-service=ingress-nginx/ingress-nginx-controller --election-id=ingress-controller-leader --controller-class=k8s.io/ingress-nginx --configmap=ingress-nginx/ingress-nginx-controller --validating-webhook=:8443 --validating-webhook-certificate=/usr/local/certificates/cert --validating-webhook-key=/usr/local/certificates/key
101      124309  1.0  1.1 743088 47508 ?        Ssl  15:45   0:02 /nginx-ingress-controller --publish-service=ingress-nginx/ingress-nginx-controller --election-id=ingress-controller-leader --controller-class=k8s.io/ingress-nginx --configmap=ingress-nginx/ingress-nginx-controller --validating-webhook=:8443 --validating-webhook-certificate=/usr/local/certificates/cert --validating-webhook-key=/usr/local/certificates/key
101      124330  0.1  0.9 145116 36388 ?        S    15:45   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
101      124335  0.0  1.0 156760 40432 ?        Sl   15:45   0:00 nginx: worker process
101      124336  0.1  1.0 156760 40432 ?        Sl   15:45   0:00 nginx: worker process
101      124337  0.1  1.0 156760 40432 ?        Sl   15:45   0:00 nginx: worker process
101      124338  0.1  1.0 156760 40676 ?        Sl   15:45   0:00 nginx: worker process
101      124339  0.0  0.7 143092 29116 ?        S    15:45   0:00 nginx: cache manager process
root     126580  0.0  0.0 112836  2328 pts/0    S+   15:49   0:00 grep --color=auto nginx