- 先參考這篇文章安裝好 MetalLB,進行到步驟4
k8s 使用MetalLB
- 接著安裝 nginx ingress,有以下兩種不同差別
# 如果你的k8s是雲端的,或者是有使用MetalLB,有支援LoadBalancer,那麼就可以使用以下yaml檔案,ingress controller會用LoadBalancer方式對外曝露,會配發一個EXTERNAL-IP
kubectl apply -f <https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/cloud/deploy.yaml>
# 如果是自架的k8s通常沒有支援LoadBalancer,那麼 ingress controller就建議用NodePort
kubectl apply -f <https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/baremetal/deploy.yaml>
# 可以用以下指令檢查 controller 的分配到的 EXTERNAL-IP
kubectl get svc -n ingress-nginx
- 接著就可以部屬一組deployment+service
# 先部屬1個deployment,然後把它暴露出來
kubectl create deployment my-ingress-web --image=nginx --port=80 --replicas=3
kubectl expose deployment/my-ingress-web --name=my-ingress-web --port=80 --target-port=80
- 接著就可以建立一個ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: my-ingress-web
port:
number: 80
- 接著就可以用以下指令測試
curl <nginx_controller_EXTERNAL-IP>/test
參考文章 https://kubernetes.github.io/ingress-nginx/deploy/