自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

云計(jì)算 云原生
高可用 Kubernetes 集群能夠確保應(yīng)用程序在運(yùn)行時(shí)不會(huì)出現(xiàn)服務(wù)中斷,本文演示了如何配置 Keepalived 和 HAproxy 使負(fù)載均衡、實(shí)現(xiàn)高可用。

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

  • 準(zhǔn)備主機(jī)。
  • 配置 Keepalived 和 HAproxy。
  • 使用 KubeKey 創(chuàng)建 Kubernetes 集群。

集群架構(gòu)

示例集群有三個(gè)主節(jié)點(diǎn),三個(gè)工作節(jié)點(diǎn),兩個(gè)用于負(fù)載均衡的節(jié)點(diǎn),以及一個(gè)虛擬 IP 地址。本示例中的虛擬 IP 地址也可稱為“浮動(dòng) IP 地址”。這意味著在節(jié)點(diǎn)故障的情況下,該 IP 地址可在節(jié)點(diǎn)之間漂移,從而實(shí)現(xiàn)高可用。

集群架構(gòu)

請(qǐng)注意,在本示例中,Keepalived 和 HAproxy 沒(méi)有安裝在任何主節(jié)點(diǎn)上。但您也可以這樣做,并同時(shí)實(shí)現(xiàn)高可用。然而,配置兩個(gè)用于負(fù)載均衡的特定節(jié)點(diǎn)(您可以按需增加更多此類節(jié)點(diǎn))會(huì)更加安全。這兩個(gè)節(jié)點(diǎn)上只安裝 Keepalived 和 HAproxy,以避免與任何 Kubernetes 組件和服務(wù)的潛在沖突。

準(zhǔn)備主機(jī)

IP 地址

主機(jī)名

角色

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 地址

操作系統(tǒng)基礎(chǔ)配置

(1) 配置主機(jī)名:

hostnamectl hostname master1

(2) 配置服務(wù)器時(shí)區(qū)

timedatectl set-timezone Asia/Shanghai

(3) 配置時(shí)間同步

安裝 chrony 作為時(shí)間同步軟件:

apt install chrony -y

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

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

重啟并設(shè)置 chrony 服務(wù)開(kāi)機(jī)自啟動(dòng):

systemctl enable chronyd

(4) 安裝系統(tǒng)依賴

apt install curl socat conntrack ebtables ipset ipvsadm -y

配置負(fù)載均衡

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

apt install keepalived haproxy psmisc -y

1.HAproxy

(1) 在兩臺(tái)用于負(fù)載均衡的機(jī)器上運(yùn)行以下命令以配置 Proxy(兩臺(tái)機(jī)器的 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) 保存文件并運(yùn)行以下命令以重啟 HAproxy。

systemctl restart haproxy

(4) 使 HAproxy 在開(kāi)機(jī)后自動(dòng)運(yùn)行

systemctl enable haproxy

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

2.Keepalived

兩臺(tái)機(jī)器上必須都安裝 Keepalived,但在配置上略有不同。

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

vi /etc/keepalived/keepalived.conf

(2) 以下是示例配置,供您參考(請(qǐng)注意 server 字段。請(qǐng)記住 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# 這個(gè)對(duì)應(yīng)上面的vrrp_script
  }
}
  • 對(duì)于 interface 字段,您必須提供自己的網(wǎng)卡信息。您可以在機(jī)器上運(yùn)行 ifconfig 以獲取該值。
  • 為 unicast_src_ip 提供的 IP 地址是您當(dāng)前機(jī)器的 IP 地址。對(duì)于也安裝了 HAproxy 和 Keepalived 進(jìn)行負(fù)載均衡的其他機(jī)器,必須在字段 unicast_peer 中輸入其 IP 地址。

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

systemctl restart keepalived

(4) 使 Keepalived 在開(kāi)機(jī)后自動(dòng)運(yùn)行:

systemctl enable keepalived

確保您在另一臺(tái)機(jī)器 (lb2) 上也配置了 Keepalived。

驗(yàn)證高可用

在開(kāi)始創(chuàng)建 Kubernetes 集群之前,請(qǐng)確保已經(jīng)測(cè)試了高可用。

(1) 在機(jī)器lb1上,運(yùn)行以下命令:

(2) 如上圖所示,虛擬 IP 地址已經(jīng)成功添加。模擬此節(jié)點(diǎn)上的故障:

systemctl stop haproxy

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

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

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

使用 KubeKey 創(chuàng)建 Kubernetes 集群

KubeKey[3] 是一款用來(lái)創(chuàng)建 Kubernetes 集群的工具,高效而便捷。請(qǐng)按照以下步驟下載 KubeKey。

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

export KKZONE=cn

(2) 運(yùn)行以下命令來(lái)下載 KubeKey:

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

下載 KubeKey 之后,如果您將其轉(zhuǎn)移到訪問(wèn) Googleapis 受限的新機(jī)器上,請(qǐng)務(wù)必再次運(yùn)行 export KKZONE=cn,然后繼續(xù)執(zhí)行以下步驟:

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

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

(3) 使用默認(rèn)配置創(chuàng)建一個(gè)示例配置文件。此處以 Kubernetes v1.29.3 作為示例。

kk create config --with-kubernetes v1.29.3

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

運(yùn)行上述命令后,將在當(dāng)前目錄創(chuàng)建配置文件config-sample.yaml。根據(jù)自己的實(shí)際情況修改機(jī)器信息、配置負(fù)載均衡器等。

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:指定節(jié)點(diǎn)的 IP、ssh 用戶、ssh 密碼、ssh 端口
  • roleGroups:指定 3 個(gè) etcd、control-plane 節(jié)點(diǎn),復(fù)用相同的機(jī)器作為 3 個(gè) worker 節(jié)點(diǎn)
  • internalLoadbalancer:?jiǎn)⒂脙?nèi)置的 HAProxy 負(fù)載均衡器
  • domain:自定義域名,沒(méi)特殊需求可使用默認(rèn)值 lb.kubesphere.local
  • clusterName:沒(méi)特殊需求可使用默認(rèn)值 cluster.local
  • autoRenewCerts:該參數(shù)可以實(shí)現(xiàn)證書到期自動(dòng)續(xù)期,默認(rèn)為 true
  • containerManager:使用 containerd

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

kk create cluster -f config-sample.yaml

上面的命令執(zhí)行后,首先 KubeKey 會(huì)檢查部署 K8s 的依賴及其他詳細(xì)要求。通過(guò)檢查后,系統(tǒng)將提示您確認(rèn)安裝。輸入 yes 并按 ENTER 繼續(xù)部署。

  • nfs client、ceph client、glusterfs client 3 個(gè)與存儲(chǔ)有關(guān)的 client 顯示沒(méi)有安裝,這個(gè)我們后期會(huì)在對(duì)接存儲(chǔ)的實(shí)戰(zhàn)中單獨(dú)安裝。
  • docker、containerd 會(huì)根據(jù)配置文件選擇的 containerManager 類型自動(dòng)安裝。

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

驗(yàn)證K8S集群

1.查看集群節(jié)點(diǎn)信息

在 master-1 節(jié)點(diǎn)運(yùn)行 kubectl 命令獲取 K8s 集群上的可用節(jié)點(diǎn)列表。

kubectl get nodes -o wide

在輸出結(jié)果中可以看到,當(dāng)前的 K8s 集群有三個(gè)可用節(jié)點(diǎn)、節(jié)點(diǎn)的內(nèi)部 IP、節(jié)點(diǎn)角色、節(jié)點(diǎn)的 K8s 版本號(hào)、容器運(yùn)行時(shí)及版本號(hào)、操作系統(tǒng)類型及內(nèi)核版本等信息。

2.查看 Pod 列表

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

kubectl get pods -o wide -A

在輸出結(jié)果中可以看到, 所有 pod 都在運(yùn)行。

部署測(cè)試資源

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

1.創(chuàng)建 Nginx Deployment

運(yùn)行以下命令創(chuàng)建一個(gè)部署 Nginx Web 服務(wù)器的 Deployment。此示例中,我們將創(chuàng)建具有兩個(gè)副本基于 nginx:alpine 鏡像的 Pod。

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

2.創(chuàng)建 Nginx Service

創(chuàng)建一個(gè)新的 K8s 服務(wù),服務(wù)名稱 nginx,服務(wù)類型 Nodeport,對(duì)外的服務(wù)端口 80。

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

3.驗(yàn)證 Nginx Deployment 和 Pod

運(yùn)行以下命令查看創(chuàng)建的 Deployment 和 Pod 資源。

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

查看結(jié)果如下:

4.驗(yàn)證 Nginx Service

運(yùn)行以下命令查看可用的服務(wù)列表,在列表中我們可以看到 nginx 服務(wù)類型 為 Nodeport,并在 Kubernetes 主機(jī)上開(kāi)放了 32373 端口。

kubectl get svc -o wide

查看結(jié)果如下:

5.驗(yàn)證服務(wù)

運(yùn)行以下命令訪問(wèn)部署的 Nginx 服務(wù),驗(yàn)證服務(wù)是否成功部署。

驗(yàn)證直接訪問(wèn) Pod:

問(wèn)題與解決方案

查看三個(gè)節(jié)點(diǎn)分別出現(xiàn)如下報(bào)錯(cuò)信息:

通過(guò)執(zhí)行如下名,加載下面兩個(gè)模塊

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
責(zé)任編輯:趙寧寧 來(lái)源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

2019-09-09 09:53:52

K8s集群架構(gòu)

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-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2023-05-25 21:38:30

2024-06-26 14:00:00

集群管理工具

2022-12-06 07:30:12

K8s云原生生態(tài)系統(tǒng)

2021-04-22 09:46:35

K8SCluster Aut集群

2013-07-11 13:39:23

Hadoop

2014-10-09 10:04:23

CentOS集群

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2022-04-29 10:40:38

技術(shù)服務(wù)端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 證書
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)