目錄
一、準備
1、在master節點部署ingress的資源清單文件
2、在node節點部署ingress-1.11.tar鏡像(根據部署環境選擇版本)
二、基于NodePort模式驗證
1、在master節點進入ingress的資源清單文件
2、修改deploy.yaml文件
3、生成deploy.yaml資源
4、在node節點中將ingress鏡像導入
5、現在修改NodPort
6、寫一個nginx資源清單
7、設置http代理,創建ingress-http.yaml
8、創建ingress-http.yaml資源
9、查看pod運行節點和端口號
10、在訪問主機的hosts文件中添加pod運行節點的ip和域名
11、通過域名訪問
三、基于LoadBalancer模式驗證
1、在master節點部署metallb負載均衡器
2、進入metallb配置文件
3、創建一個IP地址池
4、關聯IP地址池
5、加載metallb資源清單
6、加載IP池
7、加載地址池關聯規則
8、創建nginx資源清單
9、向http域名解析文件中添加新域名
10、更新域名解析文件
11、加載nginx資源清單
12、修改?LoadBalancer
13、訪問
一、準備
1、在master節點部署ingress的資源清單文件
2、在node節點部署ingress-1.11.tar鏡像(根據部署環境選擇版本)
二、基于NodePort模式驗證
1、在master節點進入ingress的資源清單文件
cd /ingress/ingress-nginx-controller-v1.11.3/deploy/static/provider/cloud
2、修改deploy.yaml文件
- type修改為NodePort(可以在文件中直接修改,也可以啟動后修改)
- 刪除文件內所有版本后的哈希算法
3、生成deploy.yaml資源
kubect create -fdeploy.yaml
會生成新的資源清單ingress-nginx
4、在node節點中將ingress鏡像導入
docker? load -i?ingress-1.11.tar?
5、現在修改NodPort
kubectl -n ingress-nginx edit svc ingress-nginx-controller?
6、寫一個nginx資源清單
apiVersion: apps/v1
kind: Deployment
metadata:
? labels:
? ? app: nginx-deploy
? name: nginx-deploy
spec:
? replicas: 3
? selector:
? ? matchLabels:
? ? ? app: nginx-deploy
? template:
? ? metadata:
? ? ? labels:
? ? ? ? app: nginx-deploy
? ? spec:
? ? ? containers:
? ? ? - image: nginx:latest
? ? ? ? imagePullPolicy: IfNotPresent
? ? ? ? name: nginx
? ? ? ? ports:
? ? ? ? - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
? labels:
? ? app: nginx-deploy
? name: nginx-svc
spec:
? ports:
? - port: 80
? ? protocol: TCP
? ? targetPort: 80
? selector:
? ? app: nginx-deploy
? type: ClusterIP
7、設置http代理,創建ingress-http.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress # 創建一個類型為Ingress的資源
metadata:
? name: nginx-ingress # 這個資源的名字為 nginx-ingress
spec:
? ingressClassName: nginx # 使用nginx
? rules:
? - host: nginx.jx.com # 訪問此內容的域名
? ? http:
? ? ? paths:
? ? ? - backend:
? ? ? ? ? service:
? ? ? ? ? ? name: nginx-svc # 對應nginx的服務名字,該規則的namespace必須與service的一致
? ? ? ? ? ? port:
? ? ? ? ? ? ? number: 80 # 訪問的端口
? ? ? ? path: / # 匹配規則
? ? ? ? pathType: Prefix # 匹配類型,這里為前綴
8、創建ingress-http.yaml資源
kubectl apply -f ingress-http.yaml
9、查看pod運行節點和端口號
node1節點
端口號31382
10、在訪問主機的hosts文件中添加pod運行節點的ip和域名
11、通過域名訪問
三、基于LoadBalancer模式驗證
1、在master節點部署metallb負載均衡器
2、進入metallb配置文件
cd?/metallb-0.14.8/config/manifests
3、創建一個IP地址池
cat >IPAddressPool.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
? name: planip-pool #這里與下面的L2Advertisement的ip池名稱需要一樣
? namespace: metallb-system
spec:
? addresses:
? - 192.168.158.135-192.168.158.150 #自定義ip段,不要與集群IP沖突
EOF
4、關聯IP地址池
cat >L2Advertisement.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
? name: planip-pool
? namespace: metallb-system
spec:
? ipAddressPools:
? - planip-pool #這里需要跟上面ip池的名稱保持一致
EOF
5、加載metallb資源清單
6、加載IP池
7、加載地址池關聯規則
8、創建nginx資源清單
apiVersion: apps/v1
kind: Deployment
metadata:
? labels:
? ? app: nginx-deploy1
? name: nginx-deploy1
spec:
? replicas: 3
? selector:
? ? matchLabels:
? ? ? app: nginx-deploy1
? template:
? ? metadata:
? ? ? labels:
? ? ? ? app: nginx-deploy1
? ? spec:
? ? ? containers:
? ? ? - image: nginx
? ? ? ? imagePullPolicy: IfNotPresent
? ? ? ? name: nginx1
? ? ? ? ports:
? ? ? ? - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
? labels:
? ? app: nginx-deploy1
? name: nginx-svc1
spec:
? ports:
? - port: 80
? ? protocol: TCP
? ? targetPort: 80
? selector:
? ? app: nginx-deploy1
? type: LoadBalancer
9、向http域名解析文件中添加新域名
10、更新域名解析文件
11、加載nginx資源清單
12、修改?LoadBalancer
kubectl -n ingress-nginx edit svc ingress-nginx-controller