<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      H__D  

      k8s高可用(Keepalived + HAProxy)集群部署 

      一、架構圖

      1.1、核心組件工作原理

      組件作用關鍵機制
      Keepalived 管理VIP漂移,監控節點健康 VRRP協議(虛擬路由冗余協議)
      HAProxy 提供API Server的負載均衡和健康檢查 TCP模式轉發+HTTP層健康檢查
      VIP 對外提供唯一入口地址 ARP廣播宣告IP所有權
      • 3個LB節點:相比傳統2節點方案,避免"腦裂"同時提升吞吐量

      • VIP漂移優先級:建議設置優先級差(如100/95/90),確保快速收斂

      二、高可用部署

        參考:k8s高可用集群安裝-CSDN博客

        官方參考:kubeadm/docs/ha-considerations.md at main · kubernetes/kubeadm

        本例測試,直接將LB組件(Keepalived + HAProxy)安裝在k8s上的master節點上了

            節點規劃

      節點名稱IP規格部署組件
      k8s-master1 192.168.1.181 2C4G Keepalived + HAProxy + ETCD + kube-apiserver等控制平面組件
      k8s-master2 192.168.1.182 2C4G Keepalived + HAProxy +  ETCD + kube-apiserver等控制平面組件
      k8s-master3 192.168.1.183 2C4G Keepalived + HAProxy +  ETCD + kube-apiserver等控制平面組件
      k8s-node1 192.168.1.184 按需 kubelet + 工作負載

       

      2.1 階段1:基礎環境準備(所有節點)

        參考:【K8S】k8s安裝 步驟中的 環境準備

        寫入hosts文件

      cat >> /etc/hosts << EOF
      192.168.1.181 k8s-master1
      192.168.1.182 k8s-master2
      192.168.1.183 k8s-master3
      192.168.1.184 k8s-node1
      EOF

      2.2 階段2:安裝容器運行時(containerd)(所有節點)

        參考:【K8S】k8s安裝 步驟中的 安裝容器運行時(containerd)

      2.3 階段3:安裝kubeadm/kubelet/kubectl

        參考:【K8S】k8s安裝 步驟中的 安裝 Kubernetes 組件

      2.4 階段4:安裝 Keepalived + VIP 配置(所有Master節點)

         本例中 VIP(虛擬IP)是:192.168.1.180

      1. 安裝Keepalived
      yum install -y keepalived 
      2. 配置Keepalived(以k8s-master1為主節點)
      # k8s-master1(priority 100)
      cat > /etc/keepalived/keepalived.conf <<EOF
      ! Configuration File for keepalived 全局定義部分 - 適用于所有實例的配置
      global_defs {
          router_id LVS_DEVEL  # 定義當前節點的路由ID,用于標識節點,在集群中應唯一
      }
      
      ! VRRP健康檢查腳本定義 用于檢查HAProxy服務是否正常運行
      vrrp_script chk_haproxy {
          script "killall -0 haproxy"  # 檢查haproxy進程是否存在的命令,killall -0只是檢查不實際殺死進程
          interval 2                   # 檢查間隔時間,單位為秒,每2秒執行一次檢查
          weight 50                    # 權重值,如果檢查失敗優先級將減少該值,如果檢查失敗,優先級將減少50(可能導致主備切換)
      }
      
      ! 定義虛擬路由器實例
      vrrp_instance VI_1 {
          state MASTER                 # 初始狀態為MASTER(在備份節點上應改為BACKUP)
          interface ens33              # 使用eth0網卡進行VRRP通信,使用ifconfig確認名稱
          
          virtual_router_id 51         # 虛擬路由ID,集群中所有節點必須相同,范圍1-255
          priority 80                  # 初始優先級(備份節點設為90和80)
          advert_int 1                 # 廣告間隔時間(秒)
          
          # 認證配置
          authentication {
              auth_type PASS           # 認證類型為密碼認證
              auth_pass MySecretPass   # 認證密碼,集群中所有節點必須相同
          }
          
          # 虛擬IP地址配置(VIP)
          virtual_ipaddress {
              192.168.1.180/24         # 定義的虛擬IP地址和子網掩碼
          }# 跟蹤腳本配置
      track_script { chk_haproxy # 關聯之前定義的haproxy檢查腳本 } # 可選的高級配置(示例中被注釋掉) # notify_master "/path/to/script.sh master" # notify_backup "/path/to/script.sh backup" # notify_fault "/path/to/script.sh fault" # 這些腳本會在狀態改變時執行 } EOF # k8s-master2(priority 90)和k8s-master3(priority 80)需修改: # state BACKUP # priority 90/80

        注意:網卡名稱可以使用ipconfig查看

      3. 啟動服務
      systemctl enable --now keepalived

        驗證

      # 檢查VIP是否綁定到正確的節點
      ip addr show ens33
      
      # 查看實時日志
      journalctl -u keepalived -f 

        

         

      2.5 階段5:安裝 HAProxy配置(所有Master節點)

      1. 安裝HAProxy
      yum install -y haproxy
      2. 配置HAProxy
      cat > /etc/haproxy/haproxy.cfg <<EOF
      # HAProxy 負載均衡配置 for Kubernetes API Server
      # ================================================
      
      # 全局配置 (影響整個HAProxy進程)
      global
          log /dev/log local0           # 定義日志輸出到/dev/log,使用local0設備
          maxconn 20000                 # 每個進程的最大連接數
          nbproc 4                      # 啟動4個工作進程(建議與CPU核心數匹配)
      
      # 默認參數配置 (所有frontend/backend繼承這些設置)
      defaults
          mode tcp                      # 默認使用TCP模式(第4層負載均衡)
          timeout connect 5s            # 連接后端服務器的超時時間
          timeout client 50s           # 客戶端不活動超時時間
          timeout server 50s           # 服務器端不活動超時時間
      
      # 前端配置 - Kubernetes API服務入口
      frontend k8s-api
          bind *:6443                   # 監聽所有IP的6443端口(K8s API默認端口)
          default_backend k8s-masters   # 默認轉發到名為k8s-masters的后端組
      
      # 后端配置 - Kubernetes Master節點集群
      backend k8s-masters
          balance roundrobin            # 使用輪詢負載均衡算法
          option tcp-check              # 啟用TCP健康檢查
          
          # Master節點服務器配置
          # 格式:server <名稱> <IP:端口> [參數]
          server k8s-master1 192.168.1.181:16443 check inter 3s fall 3 rise 2
          # check        - 啟用健康檢查
          # inter 3s     - 每3秒檢查一次,默認2s
          # fall 3       - 連續3次失敗標記為不可用,默認3
          # rise 2       - 連續2次成功恢復為可用,默認2
          
          server k8s-master2 192.168.1.182:16443 check inter 3s fall 3 rise 2
          server k8s-master3 192.168.1.183:16443 check inter 3s fall 3 rise 2
      
      # HAProxy統計頁面配置
      listen stats
          bind *:8404                   # 監控頁面監聽端口
          mode http                     # 使用HTTP模式
          stats enable                  # 啟用統計頁面
          stats uri /admin?stats        # 統計頁面訪問路徑
          stats auth admin:SecurePass123 # 登錄認證(用戶名:密碼)
          # 訪問方式:http://<HAProxy-IP>:8404/admin?stats
      EOF

        驗證:

          查看監聽端口:netstat -lntup|grep haproxy

        

          在k8s-master1上關閉haproxy服務,查看虛擬ip是否轉移k8s-master2

          在k8s-master1上開啟haproxy服務,查看虛擬ip是否回到k8s-master1

      # 關閉 haproxy 服務
      systemctl stop haproxy
      ip addr show ens33
      
      # 開啟 haproxy 服務
      systemctl start haproxy
      ip addr show ens33

        

      2.6 階段6:初始化第一個Master節點(k8s-master1)

      1. 創建kubeadm配置文件

        由于HAProxy與K8S的apiServer部署在同一個節點,對外想暴露默認端口6443,所有由HAProxy監聽對外保留端口6443

        apiServer監聽端口16443,由HAProxy將6443端口流量反向代理到apiServer的16443端口

      cat > kubeadm-config.yaml <<'EOF'
      apiVersion: kubeadm.k8s.io/v1beta3
      kind: ClusterConfiguration
      kubernetesVersion: 1.28.0
      controlPlaneEndpoint: "192.168.1.180:6443"  # VIP + HAProxy端口
      apiServer:
        extraArgs:
          secure-port: "16443"  # 指定API Server監聽端口
      imageRepository: registry.aliyuncs.com/google_containers  # 添加鏡像倉庫
      networking:
        podSubnet: "10.244.0.0/16"
      etcd:
        local:
          dataDir: /var/lib/etcd
      EOF
      2. 初始化第一個Master節點
      kubeadm init --config=kubeadm-config.yaml --upload-certs --ignore-preflight-errors=Port-6443

        

      3. 配置kubectl
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config
      4. 安裝網絡插件
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

      2.7 階段7:加入其他Master節點(k8s-master2、k8s-master3)

      1. 加入其他Master節點

        由于本例修改了端口,命令中需要增加參數 --ignore-preflight-errors=Port-6443 ,用來忽略端口錯誤

      # 使用初始化時輸出的命令(包含--control-plane)
      kubeadm join 192.168.1.180:6443 \
        --token <token> \
        --discovery-token-ca-cert-hash sha256:<hash> \
        --control-plane \
        --certificate-key <cert-key>
      kubeadm join 192.168.1.180:6443 --token g9jkd7.2fe2yz08kmf0idib \
      --discovery-token-ca-cert-hash sha256:46509bfe894f14bfd414a9308451d91d18edbf1e68fabd3b05053664f7c64003 \
      --control-plane --certificate-key c608c8d508553a7ec593b92357413c4b6267357c240ffbc1a483e9fc358b32a5 \
      --ignore-preflight-errors=Port-6443
         
      2. 配置kubectl
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config

      2.8 階段8:加入Worker節點(k8s-node1)

      1. 加入Worker節點

        由于本例修改了端口,命令中需要增加參數 --ignore-preflight-errors=Port-6443 ,用來忽略端口錯誤

      # 使用初始化時輸出的命令
      kubeadm join 192.168.1.180:6443 \
        --token <token> \
        --discovery-token-ca-cert-hash sha256:<hash>
      kubeadm join 192.168.1.180:6443 --token g9jkd7.2fe2yz08kmf0idib \
          --discovery-token-ca-cert-hash sha256:46509bfe894f14bfd414a9308451d91d18edbf1e68fabd3b05053664f7c64003 \
          --ignore-preflight-errors=Port-6443

      二、測試高可kubernetes集群

            在Kubernetes集群中創建一個pod,驗證是否正常運行:

          在主節點執行命令

      kubectl create deployment nginx --image=nginx
      
      kubectl expose deployment nginx --port=80 --type=NodePort
      
      kubectl get pod,svc  

        

         瀏覽器訪問地址:http://NodeIP:Port  =》 http://192.168.1.181-193:31505  

        

       

       

       

       

       

        

       

      posted on 2025-05-24 00:00  H__D  閱讀(1282)  評論(0)    收藏  舉報
       
      主站蜘蛛池模板: 亚洲精品电影院| 亚洲日韩精品无码一区二区三区| 边添小泬边狠狠躁视频| 久久精品国产国产精品四凭| 又大又粗又爽的少妇免费视频 | 亚洲综合一区二区三区不卡| 国产精品白浆在线观看免费| 香港日本三级亚洲三级| 国产精品第一二三区久久| 亚洲永久精品免费在线看| 欧美xxxxx在线观看| 久久99久久99精品免视看国产成人 | 欧美激情 亚洲 在线| 狠狠躁夜夜躁人人爽天天5| 欧美精品高清在线观看| 国产精品中出一区二区三区| 国产线播放免费人成视频播放| 泽普县| 国产极品美女高潮无套| 少妇人妻偷人精品视蜜桃| 亚洲国产精品综合久久20| 人妻无码∧V一区二区| 国产精品无码mv在线观看| 亚洲a人片在线观看网址| 自拍偷在线精品自拍偷免费| 在线观看美女网站大全免费| av永久免费网站在线观看| 啊轻点灬大JI巴太粗太长了在线| 非会员区试看120秒6次| 加勒比中文字幕无码一区| 亚洲精品毛片一区二区| 成人天堂资源www在线| 日本东京热不卡一区二区| 亚洲高清国产拍精品5G| 亚洲成人av在线高清| 丁香五月亚洲综合深深爱| 国产爆乳乱码女大生Av| 国产精品久久无码不卡黑寡妇| 老司机午夜精品视频资源| 丁香五香天堂网| 少妇被粗大的猛烈进出69影院一 |