K8S LoadBalance 私有環境解決方案 == metallb 工具安裝和使用介紹


     接着上文,排除故障后,我重新配置了metallb組件到k8s環境。

metallb為k8s service 的loadbalance負載方式提供免費的解決方案。

external-ip的收費方案,可以選擇GRE或Azure,或其他國內雲商LB方案。

以下是詳細安裝和配置步驟:

 

step 1:
root >> kubectl apply -f \
root >> kubectl get all -n metallb-system

 

step 2:
# 生成一個configmap,
# 注意:這里的 IP 地址范圍需要跟集群實際情況相對應。
root >> kubectl apply -f - << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    peers:
    # Cosmetic edit to make MetalLB notice that this is a new config.
    - my-asn: 64512
      peer-asn: 64512
      peer-address: 10.4.0.100
    - my-asn: 64512
      peer-asn: 64512
      peer-address: 10.4.0.101
    - my-asn: 64512
      peer-asn: 64512
      peer-address: 10.4.0.102
    address-pools:
    - name: my-ip-space
      protocol: bgp
      avoid-buggy-ips: true
      addresses:
      - 10.5.0.0/24

# 或者限制IP池的范圍,如下

kubectl apply -f - << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: my-ip-space
      protocol: bgp
      avoid-buggy-ips: true
      addresses:
      - 10.5.0.10-10.5.10.250

# 執行完畢如下圖

# 然后,我們在k8s物理機器的外網(比如我這里一台客戶機192.168.3.XX),訪問上面configmap的四個IP
<1> IP_1 = 10.4.0.100 / 10.4.0.101 / 10.4.0.101
<2> IP_2 = 10.5.0.0/24 ==> 10.5.0.1 (也可以通過查詢k8s service得到, kubectl get service --all-namespaces -o wide。)
root >> ping 10.4.0.100 -c 3
root >> ping 10.4.0.101 -c 3
root >> ping 10.4.0.102 -c 3
root >> ping 10.5.0.1 -c 3

 

step 3:
# 查看配置過程
# pod名稱,來自step 1查詢pod結果
root >> kubectl get all -n metallb-system
root >> kubectl logs -f controller-5f898b44f4-4pkk6 -n metallb-system
 
step 4:
# 創建一個私有loadbalance provider的nginx服務和部署,如下
root >> kubectl apply -f - << EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-lb
  namespace: app
spec:
  selector:
    matchLabels:
      app: nginx-lb
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-lb
    spec:
      containers:
      - name: nginx-lb
        image: nginx:1.7.9
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-lb
  namespace: app
spec:
  type: LoadBalancer
  ports:
  - port: 8090
    targetPort: 80
  selector:
    app: nginx-lb

 

step 5
# 查看創建后的結果,如下圖
root >> kubectl get all -n app -o wide
# 測試一下nginx-lb的service,通過如下兩個地址
<1> cluster_ip : service_port
root >> curl http://10.3.48.227:8090 
 
<2> external_ip : service_port
root >> curl http://10.5.0.10:8090
# 集群外部,設置一下網卡可以訪問網關10.5.0.1,則就可以打開nginx-lb服務如下
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM