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中定義的網址。
在瀏覽器輸入網址就能訪問你的服務了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章