溫馨提示×

k8s在centos上的高可用配置

小樊
41
2025-07-02 20:56:51
欄目: 智能運維

在CentOS上部署Kubernetes(K8s)以實現高可用性是一個復雜但可行的過程,涉及到多個方面的配置和最佳實踐。以下是一個基本的步驟指南:

環境準備

  • 服務器配置要求:確保每臺服務器至少有2個CPU和2GB內存。
  • 網絡要求:所有節點之間可以互相通信。

安裝Docker和Kubernetes組件

在所有節點上安裝Docker和Kubernetes所需的軟件依賴:

yum install -y docker kubelet kubeadm kubectl
systemctl start docker
systemctl enable docker
systemctl enable kubelet
systemctl start kubelet

初始化Master節點

在Master節點上初始化Kubernetes集群:

kubeadm init --apiserver-advertise-address <MASTER_IP>:6443 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.0 --pod-network-cidr 10.244.0.0/16 --ignore-preflight-errors

配置網絡插件

安裝并配置網絡插件,例如Calico以允許Pod之間的通信:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

加入Worker節點

將Worker節點加入到Kubernetes集群中:

sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <HASH>

配置負載均衡器

為了實現Master節點的高可用訪問,可以使用HAProxy和Keepalived。

安裝HAProxy和Keepalived

在兩臺Master節點上安裝HAProxy和Keepalived:

yum install haproxy keepalived -y

配置HAProxy

編輯HAProxy配置文件:

vim /etc/haproxy/haproxy.cfg

添加以下內容:

frontend k8s
    bind *:16443
    mode tcp
    option tcplog
    tcp-request inspect-delay 5s
    default_backend k8s

backend k8s
    mode tcp
    option tcplog
    option tcp-checkbalance roundrobin
    server k8s-server1 <MASTER_IP>:6443 check
    server k8s-server2 <MASTER_IP>:6443 check

配置Keepalived

編輯Keepalived配置文件:

vim /etc/keepalived/keepalived.conf

添加以下內容:

vrrp_script check_server {
    script "/etc/keepalived/check.sh"
    interval 3
    weight -10
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens224
    mcast_src_ip <VIP>
    virtual_router_id 51
    priority 50
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 123
    }
    virtual_ipaddress {
        192.168.3.254/24
    }
    track_script {
        check_server
    }
}

驗證集群高可用性

完成以上步驟后,驗證集群中Master節點的高可用性以及負載均衡器的工作是否正常:

kubectl get nodes
kubectl get componentstatus

注意事項

  • etcd高可用:etcd是Kubernetes的核心組件,必須配置為高可用。通常使用3個或更多的etcd節點。
  • 防火墻和SELinux:確保防火墻和SELinux配置正確,以允許Kubernetes組件之間的通信。
  • 時間同步:配置時間同步,確保集群中的所有節點時間一致。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女