首页 > 其他分享 >Kubernetes学习指南:保姆级实操手册05——配置集群HA负载均衡

Kubernetes学习指南:保姆级实操手册05——配置集群HA负载均衡

时间:2024-09-04 18:23:50浏览次数:15  
标签:学习指南 stats Kubernetes 05 keepalived tcp etc 16443 k8s

五、Kubernetes学习指南:保姆级实操手册05——配置集群HA负载均衡

简介Keepalived 提供 VRRP 实现,并允许您配置 Linux 机器使负载均衡,预防单点故障。HAProxy 提供可靠、高性能的负载均衡,能与 Keepalived 完美配合

1、配置Keepalive

官方文档提供了两种运行方式(此案例使用选项1):

  • 选项1:在操作系统上运行服务
  • 选项2:将服务作为静态pod运行

参考文档:[https://github.com/kubernetes/kubeadm/blob/main/docs/ha-considerations.md#options-for-software-load-balancing]

1.1、安装keepalived组件

:三台master节点上安装

yum install -y keepalived
1.2、配置keepalived
### 在k8s-master01上设置:
[root@k8s-m01 ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back
[root@k8s-master01 keepalived]# 

cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
    router_id k8s-master01
}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 51
    priority 100
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        10.255.210.99
    }
    track_script {
        check_apiserver
    }
}

EOF

### 在k8s-master02上设置:
$ mkdir /etc/keepalived 

[root@k8s-master02 keepalived]# cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
    router_id k8s-master02
}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 51
    priority 99
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        10.255.210.99
    }
    track_script {
        check_apiserver
    }
}

EOF


### 在k8s-master03上设置:
$ mkdir /etc/keepalived

[root@k8s-master03 keepalived]# cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
    router_id k8s-master03
}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 51
    priority 98
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        10.255.210.99
    }
    track_script {
        check_apiserver
    }
}

EOF

扩展:参数说明

参数说明:
    router_id:
        节点ip,master每个节点配置自己的IP
    mcast_src_ip:
        节点IP,master每个节点配置自己的IP
    virtual_ipaddress:
        虚拟IP,即VIP。
    interface:
        指定接口的名称。
    virtual_router_id:
        有效值为0-255,可以理解为一个组ID,只有相同的ID才被确认为一个组。
        如果每个keepalived实例修改的ID不一致,则会出现各自有一个VIP的现象。
1.3、编写健康检查脚本
[root@k8s-master01 keepalived]# cat > /etc/keepalived/check_apiserver.sh   <<EOF
#!/bin/sh  

errorExit() {  
    echo "*** $*" 1>&2  
    exit 1  
}  

curl --silent --max-time 2 --insecure https://localhost:16443/ -o /dev/null || errorExit "Error GET https://localhost:16443/"  
if ip addr | grep -q 10.255.210.99; then  
curl --silent --max-time 2 --insecure https://10.255.210.99:16443/ -o /dev/null || errorExit "Error GET https://10.255.210.99:16443/"  
fi  

EOF

chmod +x  /etc/keepalived/check_apiserver.sh

scp /etc/keepalived/check_apiserver.sh root@k8s-master02:/etc/keepalived/
scp /etc/keepalived/check_apiserver.sh root@k8s-master03:/etc/keepalived/
1.4、启动Keepalived
systemctl enable keepalived --now; systemctl restart keepalived.service ;systemctl status keepalived.service
1.5、测试keepalived
ip a   
#查看VIP在那个节点   

systemctl stop keepalived.service   
#VIP所在节点停止服务,观察是否飘移VIP  

 systemctl restart keepalived.service   
#重启服务后,VIP将迁回

2、配置Haproxy

2.1、安装Haproxy
yum install -y haproxy
2.2、配置haproxy.cfg
global
  maxconn  2000
  ulimit-n  16384
  log  127.0.0.1 local0 err
  stats timeout 30s

defaults
  log global
  mode  http
  option  httplog
  timeout connect 5s
  timeout client  50s
  timeout server  50s
  timeout http-request 15s
  timeout http-keep-alive 15s

frontend monitor-in
  bind *:33305
  mode http
  option httplog
  monitor-uri /monitor

listen stats
  bind    *:8006
  mode    http
  stats   enable
  stats   hide-version
  stats   uri       /stats
  stats   refresh   30s
  stats   realm     Haproxy\ Statistics
  stats   auth      admin:admin

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

backend k8s-master
  mode tcp
  option tcplog
  option tcp-check
  balance roundrobin
  default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
  server k8s-master01 10.255.210.1:6443  check
  server k8s-master02 10.255.210.2:6443  check
  server k8s-master03 10.255.210.3:6443  check
2.3、启动haproxy
systemctl restart haproxy.service;systemctl status haproxy.service
2.4、查看端口
ss -alnupt |grep 16443
tcp    LISTEN     0      2000      *:16443                 *:*                   users:(("haproxy",pid=53056,fd=6))
tcp    LISTEN     0      2000   127.0.0.1:16443                 *:*                   users:(("haproxy",pid=53056,fd=7))
[root@k8s-master02 ~]# ss -alnupt |grep 6443
tcp    LISTEN     0      2000      *:16443                 *:*                   users:(("haproxy",pid=53056,fd=6))
tcp    LISTEN     0      2000   127.0.0.1:16443                 *:*                   users:(("haproxy",pid=53056,fd=7))

标签:学习指南,stats,Kubernetes,05,keepalived,tcp,etc,16443,k8s
From: https://blog.51cto.com/u_4068847/11919539

相关文章

  • JSP金融产品销售系统的设计与实现7057n--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、研究背景与意义随着金融市场的......
  • Kubernetes从零到精通(03-资源对象)
    资源对象的种类今天我们开始研究Kubernetes中的资源对象,资源对象是Kubernetes这个软件定义的抽象逻辑概念,这些资源对象及其对应的属性(如资源对象之间的对应关系),都会保存到ectd数据库中并通过Kubernetes各控制组件实时更新,下面我们先看一下资源对象的分类和用途,然后再根据一个......
  • 自我认知及软件工程学习指南
    目前我已经具备的专业知识:数据库、数据挖掘、机器学习、c、python、matlab等,会使用pytorch、tensorflow基础功能,了解深度学习的基础算法。会使用神经网络、森林灭火等数学建模常用算法我感兴趣的技术方向:联邦学习、大数据架构、跨学科领域交叉数据融合分析、大数据治理等我缺少......
  • (5-4-05)基于Stable Diffusion的文生图系统:(5)概率分布+编码和嵌入
    5.概率分布文件distributions.py定义了与概率分布相关的抽象类和具体实现,包括抽象分布类AbstractDistribution、狄拉克分布DiracDistribution和对角高斯分布DiagonalGaussianDistribution。这些类提供了样本生成、模式计算和KL散度等功能,支持概率模型中的采样和分布计......
  • 20240907_051745 python 正则表达式 常见元字符
    •.:匹配任意单个字符•\d:匹配数字(等价于[0-9])•\w:匹配字母、数字、下划线(等价于[a-zA-Z0-9_])•\s:匹配空格、制表符、换行符等空白字符•^:匹配开头•$:匹配结尾•*:匹配前面的字符零次或多次•+:匹配前面的字符一次或多次•?:匹配前面的字符零次或一次•[]:匹配方括......
  • kubernetes初始化集群时报错
    报错:kubernetes初始化端口占用及文件存在(本人是之前初始化过一次)[root@master~]#kubeadminit--apiserver-advertise-address=192.168.20.200--image-repository=registry.aliyuncs.com/google_containers--kubernetes-version=v1.28.0--pod-network-cidr=10.244.0.0/16--......
  • 09--kubernetes持久化存储和StatefulSet控制器
    前言:本章是k8s持久化存储的详细笔记,由持久化引申出来的statefulset控制器和无头svc都会在本章有详细记录。1、K8s持久化存储PV和PVC在前面文章已经使用卷挂载的方式将pod文件持久化保存在宿主机中,但实际工作中pod往往会以多副本形式存在,此时需要每一个宿主机上都有对应的挂载......
  • D13 kubernetes 容器资源配额
    1、资源请求与资源限制 默认情况下,容器可以无限制的使用节点上所有的资源(如内存、cpu)。 假设在一个节点上运行多个pod,其中一个pod的访问量突然增加,该pod将不断请求节点资源。最终该pod占用大量资源,导致其他的资源缺乏足够的资源可用,从而引发访问速度非常慢,甚至无法正常提供服务......
  • Oracle最佳学习指南书籍推荐(oracle什么书比较好)
    Oracle:最佳学习指南书籍推荐 Oracle是世界上使用最广泛的关系数据库管理系统之一,因其可扩展性、可靠性和安全性而备受众多行业的欢迎。如果你想成为一名Oracle数据库管理员或开发人员,那么需要掌握数据库设计、安装、维护和优化等技能。这篇文章将向你推荐一些最佳的Oracle学习......
  • How to perform Lot Translate Transactions using Transaction Open Interface (MTI)
        HowtoperformLotTranslateTransactionsusingTransactionOpenInterface(MTI)(DocID838305.1)ToBottomInthisDocument Goal Solution......