首页 > 其他分享 >k8s多master节点配置高可用

k8s多master节点配置高可用

时间:2024-10-17 20:22:20浏览次数:5  
标签:负载 nginx Nginx master 均衡器 Master k8s 节点

你们集群的master是单master还是多master

多master是如何建立高可用的?

  1. 负载均衡器(Load Balancer)
    • 通过使用负载均衡器,如Nginx或HAProxy,可以实现对kube-apiserver的负载均衡和反向代理。这确保了客户端请求可以均匀地分配到多个Master节点上。
  2. Keepalived
    • 使用Keepalived软件可以实现虚拟IP(VIP)的高可用性。Keepalived会监控Master节点的状态,并在主节点故障时自动将VIP转移到备用节点上,从而实现故障转移。

要使用Nginx实现Kubernetes多Master节点的高可用负载均衡,可以按照以下步骤进行配置:

  1. 准备负载均衡器

    • 确保你有足够的机器来部署Nginx负载均衡器。这些机器将不参与Kubernetes集群的其他角色,专门用于负载均衡。
  2. 安装Nginx

    • 在负载均衡器上安装Nginx。可以使用包管理器安装,例如在CentOS上可以使用yum install nginx命令。
  3. 配置Nginx

    • 配置Nginx以使用流(stream)模块,该模块用于四层负载均衡。以下是一个基本的配置示例,它监听16443端口(kube-apiserver默认端口为6443,但负载均衡器应使用不同的端口以避免冲突),并将流量转发到多个Master节点的kube-apiserver:

      user nginx;
      worker_processes auto;
      error_log /var/log/nginx/error.log;
      pid /run/nginx.pid;
      include /usr/share/nginx/modules/*.conf;
      events {
          worker_connections  1024;
      }
      stream {
          log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
          access_log  /var/log/nginx/k8s-access.log  main;
          upstream k8s-apiserver {
              server 192.168.116.141:6443 weight=5 max_fails=3 fail_timeout=30s;
              server 192.168.116.142:6443 weight=5 max_fails=3 fail_timeout=30s;
              server 192.168.116.143:6443 weight=5 max_fails=3 fail_timeout=30s;
          }
          server {
              listen 16443;
              proxy_pass k8s-apiserver;
          }
      }
      
    • 确保替换server块中的IP地址和端口为你的Master节点的IP地址和kube-apiserver端口。

  4. 启动Nginx并设置开机自启

    • 重启Nginx服务以应用配置更改:

      systemctl restart nginx
      systemctl enable nginx
      
  5. 使用Keepalived实现高可用

    • 在负载均衡器上安装Keepalived,并配置它以使用VRRP(虚拟路由冗余协议)在多个负载均衡器之间共享一个虚拟IP。这样,如果一个负载均衡器失败,另一个可以接管其IP地址和职责。

    • 配置Keepalived的示例如下:

      global_defs {
        notification_email {
          [email protected]
          [email protected]
          [email protected]
        }
        notification_email_from [email protected]
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id NGINX_MASTER
      }
      vrrp_script check_nginx {
        script "/etc/keepalived/check_nginx.sh"
      }
      vrrp_instance VI_1 {
        state MASTER
        interface ens160
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
          auth_type PASS
          auth_pass 1111
        }
        virtual_ipaddress {
          192.168.116.100
        }
        track_script {
          check_nginx
        }
      }
      
    • 确保替换interfacevirtual_ipaddress和脚本中的配置以匹配你的环境。

  6. 测试配置

    • 确保所有配置都正确无误后,可以通过停止一个Master节点或Nginx服务来测试故障转移机制是否正常工作。

通过以上步骤,你可以使用Nginx和Keepalived为Kubernetes多Master节点配置高可用的负载均衡。这样,即使某个Master节点或负载均衡器发生故障,集群仍然可以通过其他节点继续提供服务。

标签:负载,nginx,Nginx,master,均衡器,Master,k8s,节点
From: https://www.cnblogs.com/kyle-7Qc/p/18473001

相关文章

  • rancher安装并快速部署k8s 管理集群工具
    主机准备 准备4台主机3台用于k8s集群,1台用于rancher每台服务器新增配置文件vietc/sysctl.confnet.ipv4.ip_forward=1刷新生效sysctl–p安装docker安装的时候可以去github上检索rancher看看最新版本适配那个版本的docker,这里安装23.0.1版本yuminstall-yd......
  • C#使用Kubernetes (k8s)
    在C#中使用Kubernetes(k8s)通常通过官方的Kubernetes.NET客户端与KubernetesAPI进行交互。以下是如何在C#中使用Kubernetes的简要指南。1.安装Kubernetes.NET客户端首先,在你的项目中安装官方的Kubernetes客户端库:使用NuGet安装:dotnetaddpackageKubernetesClient......
  • k8s部署Kafka集群超详细讲解
    准备部署环境Kubernetes集群信息NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2Kafka:3.7.1版本Zookeeper:3.6.3版本准备StorageClass#kubectlgetscNAMEPROVISIONERRECLAIMPOLICYVOLUMEBINDINGMODEALLOWVOLUMEEXPAN......
  • 24. 两两交换链表中的节点
    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]解题思路:1.递归方法实现节点对的交换......
  • minio多节点
    1.在所有节点安装miniowgethttps://dl.min.io/server/minio/release/linux-amd64/archive/minio_20241002175041.0.0_amd64.deb-Ominio.debdpkg-iminio.deb2.修改所有节点的hosts文件,将主机名设置为连续值vi/etc/hosts192.168.1.101minio1192.168.1.102minio23......
  • k8s-NFS系统配置
    k8s-NFS系统配置NFS(networkfilesystem),nfs文件系统在k8s中主要用于持久化存储,可以被多个pod访问和共享数据。特点数据持久性nfs为k8s的pod提供了一种持久化数据的方式,即使pod被删除,数据也不会丢失,这是因为数据存在nfs服务器上,并不是存在pod上。资源共享nfs系统的文件可以......
  • 【jenkins】 多节点并行运行,提升效率
    背景由于本项目产品中部分功能费时较久,随着脚本的体量增加,导致单节点运行时间越来越长,因此,对执行效率进行优化;办法代码层:由单进程串行变更为多进程并发执行,参考:Python多线程和多进程并发执行_python多线程并发执行-CSDN博客 【由于本产品是个单进程的项目,因此改办法不适用......
  • k8s和ipvs、lvs、ipvsadm,iptables,底层梳理,具体是如何实现的
    计算节点的功能:提供容器运行的环境kube-proxy的主要功能:术业有专攻,kube-proxy的主要功能可以概括为4个字网络规则那么kube-proxy自己其实是个daemonset控制器跑的每个节点上都有个的pod它负责网络规则其实呢它还是个小领导它不直接去搞网络规则而是告诉别人,网络规......
  • 在K8S中,Metric Service有什么作用?
    在Kubernetes(K8S)中,MetricService起到了至关重要的作用。以下是关于MetricService的详细解释:1.定义与功能定义:MetricService是一种用于提供集群内Pod和节点资源使用情况(如CPU、内存等)的标准接口。核心组件:metrics-server是一个关键组件,它作为MetricsAPI服务实现,负责收集并......
  • 在K8S中,Helm及其优势有哪些?
    在Kubernetes(K8S)中,Helm是一个至关重要的软件包管理工具,它极大地简化了在Kubernetes环境中部署和管理应用程序的过程。以下是Helm的详细介绍及其优势:1.Helm简介Helm是Kubernetes的包管理器,类似于在Ubuntu中使用的apt或Linux下的yum/apt等包管理器。它提供了一种结构化且可重复的......