成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

揭秘高效部署:用KubeKey輕松搭建K8s v1.29.3高可用集群

云計算 云原生
高可用 Kubernetes 集群能夠確保應用程序在運行時不會出現服務中斷,本文演示了如何配置 Keepalived 和 HAproxy 使負載均衡、實現高可用。

高可用 Kubernetes 集群能夠確保應用程序在運行時不會出現服務中斷,這也是生產的需求之一。為此,有很多方法可供選擇以實現高可用。本教程演示了如何配置 Keepalived 和 HAproxy 使負載均衡、實現高可用。步驟如下:

  • 準備主機。
  • 配置 Keepalived 和 HAproxy。
  • 使用 KubeKey 創建 Kubernetes 集群。

集群架構

示例集群有三個主節點,三個工作節點,兩個用于負載均衡的節點,以及一個虛擬 IP 地址。本示例中的虛擬 IP 地址也可稱為“浮動 IP 地址”。這意味著在節點故障的情況下,該 IP 地址可在節點之間漂移,從而實現高可用。

集群架構

請注意,在本示例中,Keepalived 和 HAproxy 沒有安裝在任何主節點上。但您也可以這樣做,并同時實現高可用。然而,配置兩個用于負載均衡的特定節點(您可以按需增加更多此類節點)會更加安全。這兩個節點上只安裝 Keepalived 和 HAproxy,以避免與任何 Kubernetes 組件和服務的潛在沖突。

準備主機

IP 地址

主機名

角色

192.168.1.241

lb1

Keepalived & HAproxy

192.168.1.242

lb2

Keepalived & HAproxy

192.168.1.243

master1

master, etcd,worker

192.168.1.244

master2

master, etcd,worker

192.168.1.245

master3

master, etcd,worker

192.168.250


虛擬 IP 地址

操作系統基礎配置

(1) 配置主機名:

hostnamectl hostname master1

(2) 配置服務器時區

timedatectl set-timezone Asia/Shanghai

(3) 配置時間同步

安裝 chrony 作為時間同步軟件:

apt install chrony -y

編輯配置文件 /etc/chrony.conf,修改 ntp 服務器配置:

sed -i 's/pool.*/pool cn.pool.ntp.org iburst/g' /etc/chrony/chrony.conf

重啟并設置 chrony 服務開機自啟動:

systemctl enable chronyd

(4) 安裝系統依賴

apt install curl socat conntrack ebtables ipset ipvsadm -y

配置負載均衡

Keepalived[1] 提供 VRRP 實現,并允許您配置 Linux 機器使負載均衡,預防單點故障。HAProxy[2] 提供可靠、高性能的負載均衡,能與 Keepalived 完美配合。由于 lb1 和 lb2 上安裝了 Keepalived 和 HAproxy,如果其中一個節點故障,虛擬 IP 地址(即浮動 IP 地址)將自動與另一個節點關聯,使集群仍然可以正常運行,從而實現高可用。若有需要,也可以此為目的,添加更多安裝 Keepalived 和 HAproxy 的節點。先運行以下命令安裝 Keepalived 和 HAproxy。

apt install keepalived haproxy psmisc -y

1.HAproxy

(1) 在兩臺用于負載均衡的機器上運行以下命令以配置 Proxy(兩臺機器的 Proxy 配置相同):

vi /etc/haproxy/haproxy.cfg

(2) 以下是示例配置,供您參考:

global
    log /dev/log  local0 warning
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
   stats socket /var/lib/haproxy/stats
defaults
  log global
  option  httplog
  option  dontlognull
        timeout connect 5000
        timeout client 50000
        timeout server 50000
frontend kube-apiserver
  bind *:6443
  mode tcp
  option tcplog
  default_backend kube-apiserver
backend kube-apiserver
    mode tcp
    option tcp-check
    balance roundrobin
    default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
    server kube-apiserver-1 192.168.1.243:6443 check # Replace the IP address with your own.
    server kube-apiserver-2 192.168.1.244:6443 check # Replace the IP address with your own.
    server kube-apiserver-3 192.168.1.245:6443 check # Replace the IP address with your own.

(3) 保存文件并運行以下命令以重啟 HAproxy。

systemctl restart haproxy

(4) 使 HAproxy 在開機后自動運行

systemctl enable haproxy

(5) 確保您在另一臺機器 (master2) 上也配置了 HAproxy。

2.Keepalived

兩臺機器上必須都安裝 Keepalived,但在配置上略有不同。

(1) 運行以下命令以配置 Keepalived

vi /etc/keepalived/keepalived.conf

(2) 以下是示例配置,供您參考(請注意 server 字段。請記住 6443 是 apiserver 端口):

global_defs{
  notification_email{
  }
  script_userroot
  enable_script_security
  router_idLVS_DEVEL
  vrrp_skip_check_adv_addr
  vrrp_garp_interval1
  vrrp_gna_interval1
}
vrrp_scriptchk_haproxy{
  script"/usr/bin/killall -0 haproxy"
  weight-50
  fall3
  rise5
  timeout2
}
vrrp_instancehaproxy-vip{
  stateMASTER
  priority100
  interfaceeth0# Network card
  virtual_router_id60
  advert_int1
  authentication{
    auth_typePASS
    auth_pass1111
  }
  unicast_src_ip192.168.1.243# The IP address of this machine
  unicast_peer{
    192.168.1.244# The IP address of peer machines
  }
  virtual_ipaddress{
    192.168.1.210/24# The VIP address
  }
  track_script{
    chk_haproxy# 這個對應上面的vrrp_script
  }
}
  • 對于 interface 字段,您必須提供自己的網卡信息。您可以在機器上運行 ifconfig 以獲取該值。
  • 為 unicast_src_ip 提供的 IP 地址是您當前機器的 IP 地址。對于也安裝了 HAproxy 和 Keepalived 進行負載均衡的其他機器,必須在字段 unicast_peer 中輸入其 IP 地址。

(3) 保存文件并運行以下命令以重啟 Keepalived。

systemctl restart keepalived

(4) 使 Keepalived 在開機后自動運行:

systemctl enable keepalived

確保您在另一臺機器 (lb2) 上也配置了 Keepalived。

驗證高可用

在開始創建 Kubernetes 集群之前,請確保已經測試了高可用。

(1) 在機器lb1上,運行以下命令:

(2) 如上圖所示,虛擬 IP 地址已經成功添加。模擬此節點上的故障:

systemctl stop haproxy

(3) 再次檢查浮動 IP 地址,您可以看到該地址在lb1上消失了。

(4) 理論上講,若配置成功,該虛擬 IP 會漂移到另一臺機器K8s-master2上。在K8s-master2 上運行以下命令,這是預期的輸出:

(5) 如上所示,高可用已經配置成功。

使用 KubeKey 創建 Kubernetes 集群

KubeKey[3] 是一款用來創建 Kubernetes 集群的工具,高效而便捷。請按照以下步驟下載 KubeKey。

(1) 首先運行以下命令,以確保您從正確的區域下載 KubeKey。

export KKZONE=cn

(2) 運行以下命令來下載 KubeKey:

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.1 sh -

下載 KubeKey 之后,如果您將其轉移到訪問 Googleapis 受限的新機器上,請務必再次運行 export KKZONE=cn,然后繼續執行以下步驟:

(1) 執行完上述命令后,輸出結果如下圖:

(2) 不清楚KK的具體用法可以使用幫助,執行如下命令查看幫助:

(3) 使用默認配置創建一個示例配置文件。此處以 Kubernetes v1.29.3 作為示例。

kk create config --with-kubernetes v1.29.3

可以通過kk version --show-supported-k8s查看支持安裝那些k8s版本,案例中kk采用的是最新的版本。所以,可以安裝k8s最新的版本。

運行上述命令后,將在當前目錄創建配置文件config-sample.yaml。根據自己的實際情況修改機器信息、配置負載均衡器等。

apiVersion:kubekey.kubesphere.io/v1alpha2
kind:Cluster
metadata:
  name:sample
spec:
  hosts:
  -{name:master1,address:192.168.1.103,internalAddress:192.168.1.103,user:root,password:"123456"}
  -{name:master2,address:192.168.1.104,internalAddress:192.168.1.104,user:root,password:"123456"}
  -{name:master3,address:192.168.1.106,internalAddress:192.168.1.106,user:root,password:"123456"}
  roleGroups:
    etcd:
    -master1
    -master2
    -master3
    control-plane:
    -master1
    -master2
    -master3
    worker:
    -master1
    -master2
    -master3
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    # internalLoadbalancer: haproxy

    domain:lb.kubesphere.local
    address:"192.168.1.210"
    port:9443
  kubernetes:
    version:v1.29.3
    clusterName:cluster.local
    autoRenewCerts:true
    containerManager:containerd
  etcd:
    type:kubekey
  network:
    plugin:calico
    kubePodsCIDR:10.233.64.0/18
    kubeServiceCIDR:10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled:false
  registry:
    privateRegistry:""
    namespaceOverride:""
    registryMirrors:[]
    insecureRegistries:[]
  addons:[]
  • hosts:指定節點的 IP、ssh 用戶、ssh 密碼、ssh 端口
  • roleGroups:指定 3 個 etcd、control-plane 節點,復用相同的機器作為 3 個 worker 節點
  • internalLoadbalancer:啟用內置的 HAProxy 負載均衡器
  • domain:自定義域名,沒特殊需求可使用默認值 lb.kubesphere.local
  • clusterName:沒特殊需求可使用默認值 cluster.local
  • autoRenewCerts:該參數可以實現證書到期自動續期,默認為 true
  • containerManager:使用 containerd

(4) 完成配置之后,可以執行以下命令開始安裝:

kk create cluster -f config-sample.yaml

上面的命令執行后,首先 KubeKey 會檢查部署 K8s 的依賴及其他詳細要求。通過檢查后,系統將提示您確認安裝。輸入 yes 并按 ENTER 繼續部署。

  • nfs client、ceph client、glusterfs client 3 個與存儲有關的 client 顯示沒有安裝,這個我們后期會在對接存儲的實戰中單獨安裝。
  • docker、containerd 會根據配置文件選擇的 containerManager 類型自動安裝。

部署完成需要大約 10-20 分鐘左右,具體看網速和機器配置,本次部署完成耗時 25 分鐘。部署完成后,您應該會在終端上看到類似于下面的輸出。

驗證K8S集群

1.查看集群節點信息

在 master-1 節點運行 kubectl 命令獲取 K8s 集群上的可用節點列表。

kubectl get nodes -o wide

在輸出結果中可以看到,當前的 K8s 集群有三個可用節點、節點的內部 IP、節點角色、節點的 K8s 版本號、容器運行時及版本號、操作系統類型及內核版本等信息。

2.查看 Pod 列表

輸入以下命令獲取在 K8s 集群上運行的 Pod 列表。

kubectl get pods -o wide -A

在輸出結果中可以看到, 所有 pod 都在運行。

部署測試資源

本示例使用命令行工具在 K8s 集群上部署一個 Nginx Web 服務器。

1.創建 Nginx Deployment

運行以下命令創建一個部署 Nginx Web 服務器的 Deployment。此示例中,我們將創建具有兩個副本基于 nginx:alpine 鏡像的 Pod。

root@master1:~# kubectl create deployment nginx --image nginx:alpine --replicas=2
deployment.apps/nginx created

2.創建 Nginx Service

創建一個新的 K8s 服務,服務名稱 nginx,服務類型 Nodeport,對外的服務端口 80。

kubectl create service nodeport nginx --tcp=80:80

3.驗證 Nginx Deployment 和 Pod

運行以下命令查看創建的 Deployment 和 Pod 資源。

kubectl get deployment -o wide
kubectl get pods -o wide

查看結果如下:

4.驗證 Nginx Service

運行以下命令查看可用的服務列表,在列表中我們可以看到 nginx 服務類型 為 Nodeport,并在 Kubernetes 主機上開放了 32373 端口。

kubectl get svc -o wide

查看結果如下:

5.驗證服務

運行以下命令訪問部署的 Nginx 服務,驗證服務是否成功部署。

驗證直接訪問 Pod:

問題與解決方案

查看三個節點分別出現如下報錯信息:

通過執行如下名,加載下面兩個模塊

modprobe ip_vs
modprobe ip_vs_wrr

Reference:

  • [1]Keepalived:https://www.keepalived.org/
  • [2]HAProxy:http://www.haproxy.org/
  • [3]KubeKey:https://github.com/kubesphere/kubekey
責任編輯:趙寧寧 來源: 攻城獅成長日記
相關推薦

2019-09-09 09:53:52

K8s集群架構

2021-01-11 16:10:28

K8Sapollo代碼

2021-11-04 07:49:58

K8SStatefulSetMySQL

2023-12-01 15:46:01

Kubernetes容器

2023-11-07 07:30:18

Hadoop高可用

2023-09-06 08:12:04

k8s云原生

2023-05-25 21:38:30

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2024-06-26 14:00:00

集群管理工具

2013-07-11 13:39:23

Hadoop

2022-12-06 07:30:12

K8s云原生生態系統

2021-04-22 09:46:35

K8SCluster Aut集群

2014-10-09 10:04:23

CentOS集群

2022-04-22 13:32:01

K8s容器引擎架構

2022-04-29 10:40:38

技術服務端K8s

2022-12-28 10:52:34

Etcd備份

2024-05-27 00:00:10

KubernetesK8s云原生

2023-09-07 08:58:36

K8s多集群

2023-11-03 08:43:00

云原生TLS 證書
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人小视频在线免费观看 | 99精品国产一区二区青青牛奶 | 在线成人福利 | 日韩精品在线视频 | 精品综合久久久 | 欧美一区中文字幕 | 国产精品一区在线观看 | 免费高潮视频95在线观看网站 | 日韩在线免费视频 | 国产欧美一区二区三区在线看蜜臀 | 伊人性伊人情综合网 | 欧美一区视频 | 国产成人高清 | а天堂中文最新一区二区三区 | 羞羞视频免费在线 | 久久国产精品99久久久久 | 亚洲精品中文在线观看 | 欧美日韩激情 | 久久亚洲欧美日韩精品专区 | 99爱国产| 在线观看视频中文字幕 | 天堂网中文字幕在线观看 | 国产精品区一区二区三区 | 成人在线视频观看 | 国产精品一区二区av | 国产精品久久久久久久久久久久冷 | 婷婷99 | 亚洲视频免费在线观看 | 久久久久亚洲精品 | 日韩精品一区二区三区视频播放 | 亚洲日本一区二区 | 在线观看亚洲精品视频 | 欧美一区二区三区在线播放 | jizz亚洲人 | 一区中文字幕 | 成人一区二区三区在线观看 | 日韩中文字幕一区 | 亚洲欧美日韩在线 | 久久精品一区二区 | 中文在线日韩 | 一区二区三区电影在线观看 |