黑狐家游戏

k8s 高可用部署方案,深入解析,基于kubeadm的Kubernetes高可用集群部署方案

欧气 0 0

本文目录导读:

  1. kubeadm简介
  2. Kubernetes高可用集群架构

随着云计算和大数据技术的飞速发展,Kubernetes作为容器编排技术的佼佼者,已成为现代企业构建分布式系统的首选,kubeadm作为Kubernetes官方推荐的安装工具,极大简化了Kubernetes集群的部署过程,本文将基于kubeadm,深入解析Kubernetes高可用集群的部署方案,帮助读者构建稳定可靠的Kubernetes集群。

kubeadm简介

kubeadm是Kubernetes官方提供的命令行工具,用于简化Kubernetes集群的部署过程,通过kubeadm,用户可以快速安装Kubernetes集群,无需关心底层基础设施的搭建,kubeadm支持多种部署模式,包括单机模式、集群模式和自动化部署模式等。

Kubernetes高可用集群架构

Kubernetes高可用集群主要采用主从架构,包括以下几个组件:

k8s 高可用部署方案,深入解析,基于kubeadm的Kubernetes高可用集群部署方案

图片来源于网络,如有侵权联系删除

1、Master节点:负责集群的管理和调度,包括API服务器、控制器管理器、调度器和etcd集群等。

2、Node节点:负责运行容器,处理工作负载,包括工作节点和计算节点。

3、etcd集群:存储集群配置信息,如Pod、Service、Node等资源的状态。

4、高可用组件:如Keepalived、HAProxy等,保证Master节点的故障转移和负载均衡。

四、基于kubeadm的Kubernetes高可用集群部署方案

1、环境准备

(1)硬件要求:至少3台服务器,分别作为Master节点、Node节点和etcd集群节点。

(2)操作系统:CentOS 7.6、Ubuntu 18.04等。

k8s 高可用部署方案,深入解析,基于kubeadm的Kubernetes高可用集群部署方案

图片来源于网络,如有侵权联系删除

(3)软件要求:Docker、kubeadm、kubelet、kubectl等。

2、部署步骤

(1)初始化Master节点

在Master节点上执行以下命令:

安装Docker
sudo yum install -y docker
安装kubeadm、kubelet、kubectl
sudo yum install -y kubeadm kubelet kubectl --disableexcludes=kubelet
启动Docker和kubelet服务
sudo systemctl start docker kubelet
设置kubelet服务开机自启
sudo systemctl enable docker kubelet
初始化Master节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

(2)部署etcd集群

在etcd集群节点上执行以下命令:

安装Docker
sudo yum install -y docker
安装etcd
sudo yum install -y etcd
配置etcd服务
sudo cat <<EOF | sudo tee /etc/systemd/system/etcd.service
[Unit]
Description=etcd
Documentation=https://github.com/coreos
[Service]
Type=notify
ExecStart=/usr/local/bin/etcd 
  --name=${NODE_NAME} 
  --data-dir=/var/lib/etcd/data.etcd 
  --listen-client-urls https://${NODE_IP}:2379 
  --listen-peer-urls https://${NODE_IP}:2380 
  --initial-advertise-peer-urls https://${NODE_IP}:2380 
  --advertise-client-urls https://${NODE_IP}:2379 
  --initial-cluster-token=etcd-cluster-0 
  --initial-cluster=${NODE_NAME}=${NODE_IP}:2380 
  --initial-cluster-state=new 
  --cert-file=/etc/etcd/etcd.crt 
  --key-file=/etc/etcd/etcd.key 
  --peer-cert-file=/etc/etcd/etcd.crt 
  --peer-key-file=/etc/etcd/etcd.key 
  --peer-client-cert-file=/etc/etcd/etcd.crt 
  --peer-client-key-file=/etc/etcd/etcd.key
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
启动etcd服务
sudo systemctl start etcd
设置etcd服务开机自启
sudo systemctl enable etcd

(3)部署Node节点

在Node节点上执行以下命令:

k8s 高可用部署方案,深入解析,基于kubeadm的Kubernetes高可用集群部署方案

图片来源于网络,如有侵权联系删除

安装Docker
sudo yum install -y docker
安装kubeadm、kubelet、kubectl
sudo yum install -y kubeadm kubelet kubectl --disableexcludes=kubelet
启动Docker和kubelet服务
sudo systemctl start docker kubelet
设置kubelet服务开机自启
sudo systemctl enable docker kubelet
将Master节点的配置文件复制到Node节点
sudo scp root@master:/etc/kubernetes/admin.conf /etc/kubernetes/admin.conf
将当前节点标记为工作节点
sudo kubectl taint nodes ${NODE_NAME} node-role.kubernetes.io/master-
将当前节点加入集群
sudo kubeadm join ${MASTER_IP}:6443 --token ${TOKEN} --discovery-token-ca-cert-hash sha256:${CERT_HASH}

(4)部署高可用组件

在Master节点上部署Keepalived和HAProxy,实现故障转移和负载均衡。

安装Keepalived和HAProxy
sudo yum install -y keepalived haproxy
配置Keepalived
sudo cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
global_defs {
   router_id LVS_DEVS
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.100/24 dev eth0 label eth0:100
    }
}
virtual_server 192.168.1.100 80 {
    weight 1
    retries 2
    timeout 10s
    connect_timeout 10s
    ha_proxy frontend {
        bind *:80
        default_backend kube-api
    }
}
virtual_server backend kube-api {
    balance roundrobin
    server 192.168.1.100:6443 check
}
EOF
启动Keepalived服务
sudo systemctl start keepalived
设置Keepalived服务开机自启
sudo systemctl enable keepalived
配置HAProxy
sudo cat <<EOF | sudo tee /etc/haproxy/haproxy.cfg
frontend kube-api
    bind *:6443
    stats uri /haproxy?stats
    stats realm HAProxy Statistics <br>
    stats auth admin:admin
backend kube-api
    balance roundrobin
    server master1 192.168.1.100:6443 check inter 5s
EOF
启动HAProxy服务
sudo systemctl start haproxy
设置HAProxy服务开机自启
sudo systemctl enable haproxy

3、验证集群状态

在任意节点上执行以下命令,验证集群状态:

查看集群状态
sudo kubectl get nodes
查看Pod状态
sudo kubectl get pods --all-namespaces

本文基于kubeadm,详细介绍了Kubernetes高可用集群的部署方案,通过部署高可用组件,实现Master节点的故障转移和负载均衡,确保集群的稳定性和可靠性,在实际部署过程中,可根据实际情况调整部署方案,以满足不同的业务需求。

标签: #kubeadm部署k8s高可用集群

黑狐家游戏
  • 评论列表

留言评论