kubeadm安装K8s集群之高可用组件keepalived+nginx及kubeadm部署

news2025/3/2 3:59:28

系列文章目录
1.kubeadm安装K8s集群之基础环境配置
2.kubeadm安装K8s集群之高可用组件keepalived+nginx及kubeadm部署
3.kubeadm安装K8s集群之master节点加入
4.kubeadm安装K8s集群之worker1节点加入

kubeadm安装K8s集群之高可用组件keepalived+nginx及kubeadm部署

    • 1.安装kubeadm、kubectl、kubelet
    • 2.安装高可用组件nginx
    • 3.安装高可用组件keepalived

1.安装kubeadm、kubectl、kubelet

kubeadm:是用于初始化和管理kubernetes集群的工具,简化集群的创建维护;
kubelet:是每个节点的代理,负责容器的生命周期和节点级别的任务管理;
kubectl:是作为用户的命令行界面,用来与kubernetes集群进行交换,便于管理和操作集群资源;

  • 添加kubernetes yum源;
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enabled=1
EOF
  • 安装软件包,我这里是安装指定版本1.19.1-0;
yum install -y kubelet-1.19.1-0.x86_64 kubeadm-1.19.1-0.x86_64 kubectl-1.19.1-0.x86_64
  • 配置kubelet镜像仓库

默认配置的pause镜像使用 gcr.io 仓库,国内可能无法访问,所以这里配置 Kubelet 使用阿里云的 pause 镜像;

首先获取 Docker cgroups 驱动程序信息

DOCKER_CGROUPS=$(docker info --format '{{.CgroupDriver}}')
echo $DOCKER_CGROUPS

注意:获取Docker cgroups驱动程序信息是为了保证docker和kubelet的cgroup-driver保持一致,如果不一致,在初始化集群时会报错:[kubelet-check] The HTTP call equal to 'curl -sSL http://xxxxxxx:xxx connect: connection refused.

编辑Kubelet配置文件

cat >/etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=${DOCKER_CGROUPS} --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF

在这里插入图片描述

加载配置并将kubelet设置为开机自启;

#加载system系统配置管理文件
systemctl daemon-reload
#设置开机自启并启动,启动肯定是报错,因为kubelet还没有在master进行初始化启动
systemctl enable kubelet && systemctl restart kubelet

2.安装高可用组件nginx

  • 启用EPEL仓库后安装 Nginx
yum install -y epel-release
yum install -y nginx
  • 加载nginx stream模块

因为需要用到nginx的stream模块,yum安装的nginx默认是没有这个模块的,所以需要手动安装所有mod;

yum -y install nginx-all-modules.noarch

安装成功后/usr/lib64/nginx/modules/目录中会增加以下文件;

ll /usr/lib64/nginx/modules/

在这里插入图片描述

  • 配置nginx配置文件

首先备份一下默认的nginx.conf文件

cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak

修改配置文件中的内容执行命令,将以下内容覆盖重定向到配置文件中;

提示:以下内容请根据文件中的注释调整对应的实际情况的内容;

cat >/etc/nginx/nginx.conf <<EOF
#手动将上面安装的nginx stream模块加载进来;
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
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.0.105:6443;   # master1 apiserver的ip和端口,请根据实际情况替换该内容;
       server 192.168.0.106:6443;   # master2 apiserver的ip和端口,请根据实际情况替换该内容;
    }
    server {
       listen 16443;  # 因nginx与master节点复用,这个监听端口不能是6443,否则会冲突
       proxy_pass k8s-apiserver;
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF

将nginx设置为开机自启

systemctl enable nginx && systemctl start nginx && systemctl status nginx

3.安装高可用组件keepalived

通过模拟虚拟路由器的来保证,主服务器出现故障时自动将流量切换到备用服务器,从而保证服务的持续可用,确保服务的连续性和可靠性;

  • 安装 Keepalived
yum install -y keepalived
  • 修改配置keepalived配置文件

首先备份默认的配置文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.confbak

修改配置文件中的内容执行命令,将以下内容覆盖重定向到配置文件中;

提示:以下内容请根据文件中的注释调整对应的实际情况的内容;

cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx { #配置健康检查脚本相关内容
     script "/etc/keepalived/check_nginx.sh" #配置健康检查脚本路径
     interval 2
     weight -20  #健康检查脚本返回的状态码为1,就权重下降20,实现VIP飘移;
   }
vrrp_instance VI_1 {
    state MASTER
    interface ens32 #ens32:网络接口名称,需要调整为实际对应的名称,可以执行ifconfig查看对应名字;
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111 #可以理解为设置认证的密码,这里可根据情况调整;
    }
    virtual_ipaddress {
        192.168.200.18/24 #vip设置一组虚拟IP地址,可根据实际情况的需要调整,
    }
    track_script {
      check_nginx #设置健康检查
    }
}
EOF

如图,启动好keepalived的服务后可以输入命令会把vip显示出来,ip addr show

在这里插入图片描述

编写健康检查脚本check_nginx.sh,这里为了演示随便写的个简单脚本,实际使用环境中不应如此粗糙;

cat > /etc/keepalived/check_nginx.sh << 'EOF'
#!/bin/bash
#这里随便写了一个简单的健康检查脚本,计算nginx的16443端口的数量,如果数量是0就判定为服务不正常;
#16443是上文nginx配置的监听端口,如果上面不是设置的16443这里需要调整为对应的;

count=$(ss -antp |grep 16443 |egrep -cv "grep|$$")
if [ "$count" -eq 0 ];then
    exit 1
else
    exit 0
fi
EOF
  • 启动 Keepalived

将keepalived为开机自启动,并开启服务

systemctl enable keepalived && systemctl start keepalived

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Avalonia实战实例三:实现可输入框的ComboBox控件

文章目录 一、Avalonia中的ComboBox控件二、更改Template&#xff0c;并添加水印 接着上篇关闭按钮实现登录界面 实现一个可输入&#xff0c;可下拉的用户名输入框 一、Avalonia中的ComboBox控件 Avalonia中Fluent主题里ComboBox实现&#xff1a; <ControlTheme x:Key&q…

TMS320C55x DSP芯片结构和CPU外围电路

第2章 DSP芯片结构和CPU外围电路 文章目录 第2章 DSP芯片结构和CPU外围电路TMS320C55x处理器的特点TMS320c55x CPU单元指令缓冲(Instruction Buffer Unit) I单元程序流程(Program Flow Unit) P单元地址数据(Address-data Flow Unit) A单元数据计算(Data Computation Unit) D单元…

Oracle 与 达梦 数据库 对比

当尝试安装了达梦数据库后&#xff0c;发现达梦真的和Oracle数据库太像了&#xff0c;甚至很多语法都相同。 比如&#xff1a;Oracle登录数据库采用sqlplus&#xff0c;达梦采用disql。 比如查看数据视图&#xff1a;达梦和Oracle都有 v$instance、v$database、dba_users等&a…

数据结构之五:排序

void*类型的实现&#xff1a;排序&#xff08;void*类型&#xff09;-CSDN博客 一、插入排序 1、直接插入排序 思想&#xff1a;把待排序的数据逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。 单趟&#x…

JavaWeb:JavaScript

学习 资源1 学习资源 2 黑马javaweb 1、引入方式 内部脚本&#xff1a; <script>内容</script> 外部脚本&#xff1a; <script src"js/test.js"></script> 2、基础语法 注释&#xff1a;// /* */ 结尾分号可有可无 大括号表示代码块 …

MySQL其五,索引详解,逻辑架构,SQL优化等概念

目录 一、索引 1、索引的概念 2、索引的优缺点 3、添加索引的原则 4、索引的分类 5、索引如何使用 6、存储过程讲解 7、测试索引的效率 7、索引的数据结构 8、覆盖索引&#xff08;SQL优化的点&#xff09; 9、最佳左前缀法则&#xff08;SQL优化的点&#xff09; 二…

考研数学【线性代数基础box(数二)】

本文是对数学二线性代数基础进行总结&#xff0c;一些及极其简单的被省略了&#xff0c;代数的概念稀碎&#xff0c;不如高数关联性高&#xff0c;所以本文仅供参考&#xff0c;做题请从中筛选&#xff01; 本文为初稿&#xff0c;后面会根据刷题和自己的理解继续更新 第一章…

全面解析租赁小程序的功能与优势

内容概要 租赁小程序正在逐渐改变人与物之间的互动方式。通过这些小程序&#xff0c;用户不仅可以轻松找到所需的租赁商品&#xff0c;还能够享受无缝的操作体验。为了给大家一个清晰的了解&#xff0c;下面我们将重点介绍几个核心功能。 建议&#xff1a;在选择租赁小程序时&…

Linux DNS 协议概述

1. DNS 概述 互联网中&#xff0c;一台计算机与其他计算机通信时&#xff0c;通过 IP 地址唯一的标志自己。此时的 IP 地址就类似于我们日常生活中的电话号码。但是&#xff0c;这种纯数字的标识是比较难记忆的&#xff0c;而且数量也比较庞大。例如&#xff0c;每个 IPv4 地址…

Java使用ORM Bee自动生成Javabean.

Java使用ORM Bee自动生成Javabean. 配置数据库连接,添加了pom.xml依赖后,就可以写Java代码,自动生成Javabean了. 可参考:https://gitee.com/automvc/bee https://github.com/automvc/bee 还可以生成字段文件, 这样可以避免硬编码引用字段,速度也比反射快. package org.tea…

【MySQL中多表查询和函数】

目录 1.多表查询 1.1 外键 1.2 链接查询 2.MySQL函数 内置函数简介 数值函数 字符串函数 时间日期函数 条件判断操作 开窗函数 1.多表查询 本质&#xff1a;把多个表通过主外键关联关系链接&#xff08;join&#xff09;合并成一个大表&#xff0c;在去单表查询操作…

二维码数据集,使用yolov,voc,coco标注,3044张各种二维码原始图片(未图像增强)

二维码数据集&#xff0c;使用yolov&#xff0c;voc&#xff0c;coco标注&#xff0c;3044张各种二维码原始图片&#xff08;未图像增强&#xff09; 数据集分割 训练组70&#xff05; 2132图片 有效集20&#xff05; 607图片 测试集10&#xff05; 305图…

MySQL多表查询时有哪些连接方式?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL多表查询时有哪些连接方式?】面试题。希望对大家有帮助&#xff1b; MySQL多表查询时有哪些连接方式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中进行多表查询时&#xff0c;常见的连接方式有以下…

LBS 开发微课堂|通过openGL ES轻松实现建筑物渲染及动画

为了让广大开发者 更深入地了解 百度地图开放平台的 技术能力 轻松掌握满满的 技术干货 更加简单地接入 位置服务 我们特别推出了 “位置服务&#xff08;LBS&#xff09;开发微课堂” 系列技术案例 第五期的主题是 通过openGL ES轻松实现 建筑物渲染及动画 对于…

Java——IO流(下)

一 (字符流扩展) 1 字符输出流 (更方便的输出字符——>取代了缓冲字符输出流——>因为他自己的节点流) (PrintWriter——>节点流——>具有自动行刷新缓冲字符输出流——>可以按行写出字符串&#xff0c;并且可通过println();方法实现自动换行) 在Java的IO流中…

SQLServer到MySQL的数据高效迁移方案分享

SQL Server数据集成到MySQL的技术案例分享 在企业级数据管理中&#xff0c;跨平台的数据集成是一个常见且关键的任务。本次我们将探讨如何通过轻易云数据集成平台&#xff0c;将巨益OMS系统中的退款单明细表从SQL Server高效、安全地迁移到MySQL数据库中。具体方案名称为“7--…

每日计划-1213

1. 完成 SQL2 查询多列 https://www.nowcoder.com/exam/oj?page1tabSQL%E7%AF%87topicId199 2. 八股部分 1) C 中面向对象编程如何实现数据隐藏&#xff1f; 在c中&#xff0c;可以将数据成员声明为私有或受保护&#xff0c;并提供公有的成员函数来访问和修改这些数据成员&am…

ORACLE 导入导出数据库(包含表结构和数据)

导出 1、进入本地oracle 驱动安装目录下–> 进入CMD 2、输入命令 exp 用户名/密码10.xx.xx.xx:1521/orcl fileexport.dmp 3、查看导出的文件 导入 1、进入本地oracle 驱动安装目录下–> 进入CMD 2、输入命令 imp 用户名/密码10.xx.xx.xx:1521/orcl fully ignorey…

Qt之将源代码封装成库文件使用(五)

Qt开发 系列文章 - Code-To-Library&#xff08;五&#xff09; 目录 前言 一、库文件 二、直接封装方式 1.静态库封装 2.动态库封装 3.其它库类型 三、二次重写封装 四、库的使用 1.移植库及头文件 2.添加外部库 总结 前言 库文件是计算机上的一类文件&#xff0c…

视频监控汇聚平台方案设计:Liveweb视频智能监管系统方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…