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

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

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

    • 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 keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_script check_nginx { #配置健康检查脚本相关内容script "/etc/keepalived/check_nginx.sh" #配置健康检查脚本路径interval 2weight -20  #健康检查脚本返回的状态码为1,就权重下降20,实现VIP飘移;}
vrrp_instance VI_1 {state MASTERinterface ens33 #ens33:网络接口名称,需要调整为实际对应的名称,可以执行ifconfig查看对应名字;virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111 #可以理解为设置认证的密码,这里可根据情况调整;}virtual_ipaddress {192.168.15.253/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 ];thenexit 1
elseexit 0
fi
EOF
  • 启动 Keepalived

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

systemctl enable keepalived && systemctl start keepalived

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

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

相关文章

子网划分实例

看到有人问这个问题&#xff1a; 想了一下&#xff0c;这是一个子网划分的问题&#xff1a; 处理方法如图&#xff1a; 这是一个子网划分的问题 设备1用三层交换机&#xff0c;端口设置为路由模式&#xff0c;设备2和设备3为傻瓜交换机模式 设备2和设备3下挂设备都是26为掩码&…

【前端知识】微前端框架qiankun

微前端框架qiankun 简介一、核心思想二、主要特性三、关键技术四、使用场景五、使用示例六、优势与劣势七、总结 使用一、创建主应用&#xff08;Angular CLI项目&#xff09;二、创建子应用&#xff08;Vue CLI项目&#xff09;三、启动并测试 使用场景一、大型前端应用的拆分…

Ubuntu22.04深度学习环境安装【Anaconda+Pycharm】

anaconda可以提供多个独立的虚拟环境&#xff0c;方便我们学习深度学习&#xff08;比如复现论文&#xff09;&#xff1b; Pycharm编辑器可以高效的编写python代码&#xff0c;也是一个很不错的工具。 下面就记录下Ubuntu22.04的安装流程&#xff1a; 1.Anaconda安装 下载Ana…

Transformer图解

前言 transformer是目前NLP甚至是整个深度学习领域不能不提到的框架&#xff0c;同时大部分LLM也是使用其进行训练生成模型&#xff0c;所以transformer几乎是目前每一个机器人开发者或者人工智能开发者不能越过的一个框架。接下来本文将从顶层往下去一步步掀开transformer的面…

网络安全在数字时代保护库存数据中的作用

如今&#xff0c;通过软件管理库存已成为一种标准做法。企业使用数字工具来跟踪库存水平、管理供应链和规划财务。 然而&#xff0c;技术的便利性也带来了网络威胁的风险。黑客将库存数据视为有价值的目标。保护这些数据不仅重要&#xff0c;而且必不可少。 了解网络安全及其…

种子流和花粉流怎么理解它们之间的大小关系

种子流和花粉流是植物繁殖和遗传多样性研究中的两个重要概念&#xff0c;它们分别描述了种子和花粉在空间上的传播过程。理解它们之间的大小关系&#xff0c;即传播距离和对遗传结构的影响&#xff0c;对于生态学和保护生物学具有重要意义。 种子流&#xff08;Seed Dispersal&…

唇形同步视频生成工具:Wav2Lip

一、模型介绍 今天介绍一个唇形同步的工具-Wav2Lip&#xff1b;Wav2Lip是一种用于生成唇形同步&#xff08;lip-sync&#xff09;视频的深度学习算法&#xff0c;它能够根据输入的音频流自动为给定的人脸视频添加准确的口型动作。 &#xff08;Paper&#xff09; Wav2Lip模型…

C编程求助问题:实验报告类型如何画出流程图并编写程序?

求助问题&#xff1a;请问一下怎么做 是实验报告类型的 画出流程图并编写程序&#xff1a; (1) 从键盘上任意输入5个字母&#xff0c;按ASCII从小到大的顺序依次排列输出。 (2) 输入某个字母&#xff0c;查找题(1)数组中是否存在&#xff0c;若存在则输出该字母在数组中的位置。…

C—指针初阶(2)

如果看完阁下满意的话&#xff0c;能否一键三连呢&#xff0c;我的动力就是大家的支持与肯定&#xff0c;冲&#xff01; 二级指针 我们先看概念以及作用&#xff1a;用来存放一级指针的地址的指针 先看例子&#xff0c;我们逐一分析 我们先分析上面那个“1” 标注那里&#x…

Gradle-学习

本来没有想了解Gradle&#xff0c;但是在想看SpringBoot源码的时候发现&#xff0c;在SpringBoot2.2.8版本之后&#xff0c;不再使用maven进行构建&#xff0c;而是使用Gradle。想着把SpringBoot源码导入idea学习下源码&#xff0c;但是来来回回折腾了好几回&#xff0c;都是报…

PE文件结构:NT头部

NT 头部&#xff08;NT Header&#xff09;是 PE 文件格式的核心部分之一&#xff0c;它包含了有关程序如何加载、执行以及一些重要的文件属性。NT 头部常被认为是 PE 头部 的核心或“真正的”PE 头部&#xff0c;因为操作系统加载 PE 文件时&#xff0c;首先会查找 DOS 头部的…

Oracle EBS FA 如何打开关闭的资产会计期间?

用户“运行折旧”,误勾选为“关闭期间”,还有一部分资产还需要操作报废和调整,希望后台打开关闭的资产会计期 系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.9 解决方案 由官方提供SQL脚本代码如下: /*rollback120.sql - for Release 12.X only(based on r…

算法基础学习Day6(动态窗口)

文章目录 1.题目2.题目解答1.最大连续1的个数题目及题目解析算法学习思路一:暴力解法思路二:滑动窗口 代码提交 2.将x减到0的最小操作数题目及题目解析算法学习滑动窗口解决问题 代码提交 1.题目 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09;1658. 将 x…

基于springboot+vue的公交线路查询系统(全套)

一、系统架构 前端&#xff1a;vue | element-ui | html 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页2 03. web端-注册 04. web端-登录 …

ASP.NET Core8.0学习笔记(二十五)——EF Core Include导航数据加载之预加载与过滤

一、导航属性数据加载 1.在EF Core中可以使用导航属性来加载相关实体。 2.加载实体的三种方式&#xff1a; (1)预先加载&#xff1a;直接在查询主体时就把对应的依赖实体查出来&#xff08;作为初始查询的一部分&#xff09; (2)显式加载&#xff1a;使用代码指示稍后显式的从…

Linux 基础环境的开发工具以及使用(下)

1. make / Makefile 自动化构建的工具 1&#xff09;引入 在我们进行一些大型的工程的时候&#xff0c;代码量是极其大&#xff0c;当我们代码在进行一系列的编译的时候&#xff0c;难免会出现一些错误&#xff0c;当我们对错误进行一系列的更改之后&#xff0c;难道我们需要…

沃丰科技智能客服在跨境电商独立站中的核心角色

随着全球化进程的加速和互联网技术的不断发展&#xff0c;跨境电商行业蓬勃兴起&#xff0c;为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中&#xff0c;优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…

uniapp 弹出软键盘后打开二级页面,解决其UI布局变动

软键盘弹出&#xff0c;此时点击某按钮打开二级页面&#xff0c;position:fixed 位于底部的按钮不见了&#xff08;通过加高其区域&#xff0c;发现被下移动了&#xff09;&#xff0c;什么原因不清楚? 但是发现是软键盘弹出导致&#xff0c;问题解决通过隐藏键盘再打开二级页…

Centos7下搭建Prometheus+Grafana监控

Prometheus 监控 Prometheus 监控系统的架构包括以下组件&#xff1a; Prometheus Server&#xff1a; Prometheus 服务器是监控系统的核心组件&#xff0c;负责收集、存储和处理指标数据。它定期从各种数据源&#xff08;如 Exporter、Agent 等&#xff09;拉取指标数据&…

MyBatis-Plus(为简化开发而生)

一、MyBatis-Plus概述 官网&#xff1a; baomidou.com MyBatis-Plus&#xff08;简称 MP&#xff09; 在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 &#xff08;1&#xff09;单表操作 不需要编写sql语句&#xff0c;封装方法&#xff0c;…