当前位置: 首页 > news >正文

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

系列文章目录
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 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 ens32 #ens32:网络接口名称,需要调整为实际对应的名称,可以执行ifconfig查看对应名字;virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_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 ];thenexit 1
elseexit 0
fi
EOF
  • 启动 Keepalived

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

systemctl enable keepalived && systemctl start keepalived

http://www.mrgr.cn/news/80111.html

相关文章:

  • 【MySQL数据基础】
  • 【ETCD】【源码阅读】深入解析 raftNode.start方法实现
  • 【C语言篇】C 语言总复习(下):点亮编程思维,穿越代码的浩瀚星河
  • Python遥感开发之地理探测器的实现
  • 【C++】右值引用与移动语义详解:如何利用万能引用实现完美转发
  • QTreeView 与 QTreeWidget 例子
  • OSPF协议
  • ubuntu20.04复现 Leg-KILO
  • centos7的yum镜像源设置
  • 暂停一下,给Next.js项目配置一下ESLint(Next+tailwind项目)
  • 程序的调试
  • 6.2 MapReduce工作原理
  • QT笔记- QSystemTrayIcon系统托盘功能完整示例
  • 【C++】简单计算器问题的深度解析与优化对比
  • 【Qt】信号、槽
  • ESP32-S3模组上跑通ES8388(30)
  • C++3--内联函数、auto
  • virtualbox 搭建ubuntu
  • ---mysql server: Ubuntu Linux下最最基本的操作
  • 关于睡懒觉
  • Elasticsearch 集群部署
  • Stable Diffusion Controlnet常用控制类型解析与实战课程 4
  • RabbitMQ中的Work Queues模式
  • 使用Nexus3搭建npm私有仓库
  • 八大排序算法C语言版
  • 112.【C语言】数据结构之排序(详解插入排序)