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