安裝負載均衡metalb
安裝metalb
kubectl create namespace metallb-system
配置metalb
#kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f config.yaml
#config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.215.100-192.168.215.199 #改成IP分配的範圍
3. 部署 MetalLB:使用以下命令將 MetalLB 部署到 Kubernetes 集羣中。
kubectl apply -f metallb.yaml
4. 驗證安裝
kubectl get pods -n metallb-system
安裝成功如下圖,我們可以看到LoadBalancer類型的service獲取到外部地址
安裝ingress-nginx
應用ingress,我們會發現沒有外部IP,因爲需要安裝ingress-nginx
部署ingress-nginx
kubectl apply -f deploy.yaml #deploy.yaml我把鏡像傳到阿里雲鏡像服務器,不然國外鏡像無法訪問
2. 驗證安裝:運行以下命令,確保 Ingress-Nginx 正常運行。
使用http域名訪問網站應用
#nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
ingressClassName: "nginx" #這個參數沒有的ingress將分配不到IP
rules:
- host: test.wxy.kim
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
使用https訪問網站應用
創建 Kubernetes Secret:將證書和私鑰存儲在 Kubernetes Secret 中。使用以下命令創建一個 Secret:
kubectl create secret tls wxy-secret --cert=/root/cert/fullchain.pem --key=/root/cert/privkey.pem
kubectl apply -f nginx-ingress.yaml
# nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
ingressClassName: "nginx" #這個參數沒有的ingress將分配不到IP
tls:
- hosts:
- test.wxy.kim
secretName: wxy-secret
rules:
- host: test.wxy.kim #你的域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80