Kubernetes:Ingress-Nginx-Controller配置

1、下载YML配置文件

本文编写时github上nginx-ingress最新版本是0.26.1

github上的配置文件地址:https://github.com/kubernetes/ingress-nginx/tree/nginx-0.26.1/deploy/static(0.20.0版本之前的文件在上一级deploy目录里)
在这里插入图片描述
下载红圈标注的文件,或者直接创建yml文件点进去复制就行。
再或者系统直接执行命令:

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

在这里插入图片描述

2、部署配置文件

不需要修改yml,一般正常执行之后运行起来了,但是里面有一个镜像,一般没法pull下来。

image:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1

(0.20.0版本之前还有一个镜像)

image: gcr.io/google_containers/defaultbackend:1.4

所以提前在Node节点使用阿里云的谷歌镜像上pull下来。

image:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1

打上tag。

docker tag registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1

或者直接修改mandatory.yml文件把image那行镜像地址替换成上面阿里云的镜像地址。

执行命令:kubectl apply -f mandatory.yaml

kubectl get all -n ingress-nginx查看一下运行情况,正常执行ingress-nginx-controller就部署完成了。

在这里插入图片描述

3、部署ingress-nginx service对外提供服务(NodePort方式)

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml

获取部署文件。

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
      nodePort: 80
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
      nodePort: 443
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    
---

发现需要占用80和443端口,k8s的NodePort默认只允许30000-40000的端口范围,需要去去apiserver中修改端口范围。因为k8s安装方式不一样,修改apiserver的配置方式也不一样,网上有修改教程,这里不做赘述。

执行命令:kubectl apply -f service-nodeport.yaml

服务就启动了。
在这里插入图片描述
EP:之前想用hostNetwork方式部署的但是在mandatory.yaml的deployment中配置了

hostNetwork: true

之后pod老是crashloopbackoff启动不起来,所以只好用nodeport方式部署。

4、配置igress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: 起个名字
spec:
  rules:
  - host: 你的网址.com
    http:
      paths: /总的路径前缀
      - path:  /服务的路径前缀
        backend:
          serviceName: k8s中Service服务的名字
          servicePort: k8s中Service服务的暴露的端口

kubectl apply -f 执行一下。
在这里插入图片描述
host文件中添加:

192.X.X.X www.xxx.com

前面为你的kubernetes中随便一个node的ip,后面为你ingress中定义的网址。
在浏览器输入网址就能访问你的服务了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值