首页 > 其他分享 >kubeadm在单master k8s集群中添加新节点

kubeadm在单master k8s集群中添加新节点

时间:2023-06-30 16:45:03浏览次数:49  
标签:script keepalived server 10.38 nginx master proxy kubeadm k8s

 

服务器信息
master1 10.38.0.50
master2 10.38.0.58
master3 10.38.0.166
node1 10.38.0.77
lb1 10.38.0.182
lb2 10.38.0.18
vip  10.38.0.144

 

1.安装及配置nginx+keepalived

  需要安装nginx(haproxy)+keepalived 为apiserver提供高可用master的vip。可以在master节点直接安装nginx+keepalive,但是由于80/443端口会被ingress占用,所以在本机安装只能提供apiserver的负载均衡,而使用另外的两台机器安装,就可以在nginx同时提供k8s集群所有node节点的80http和443https的负载均衡,用这个vip添加域名解析,不会有域名解析的单点故障。

  由于测试服务器是华为云服务器,所以vip需要进行注册,否则不能解析,在弹性负载均衡-子网中申请虚拟IP地址,并对两台lb服务器进行绑定。

 

1)安装keepalived

yum install -y conntrack-tools libseccomp libtool-ltdl

yum -y install keepalived
2)配置keepalive

编辑keepalived配置文件

在lb1服务器:

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
     script_user root
     enable_script_security
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id NGINX
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script nginx_check {
        script "/etc/keepalived/nginx_health.sh"
        interval 2
        weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.38.0.144
    }
    track_script {
        nginx_check
    }
}

在lb2服务器:
! Configuration File for keepalived

global_defs {
   notification_email {
   [email protected]
     [email protected]
     [email protected]
     script_user root
     enable_script_security
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id NGINX
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script nginx_check {
        script "/etc/keepalived/nginx_health.sh"
        interval 2
        weight -20
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 55
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.38.0.144
    }
    track_script {
        nginx_check
    }
}
其中定义自定义资源监控脚本(vrrp_script):nginx_check,通过调用(track_script)这个具体的脚本/etc/keepalived/nginx_health.sh来实现对nginx的监控,并根据监控的结果实现动态调整
在lb1及lb2两台服务器添加监控脚本,如果nginx进程数量为0那么重启nginx,过两秒后再次查询进程数量,如果进程数量仍为0则关闭keepalived.
vim /etc/keepalived/nginx_health.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    systemctl restart nginx
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
       systemctl stop keepalived
    fi
fi
3)安装nginx
yum install -y pcre  pcre-devel zlib  zlib-devel openssl openssl-devel
wget http://nginx.org/download/nginx-1.23.4.tar.gz
tar -zxvf nginx-1.23.4.tar.gz
cd nginx-1.23.4
./configure --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream
make && make install
4)配置nginx
在lb1,lb2两台服务器上
vim /data/nginx/conf/nginx.conf

user root;
worker_processes auto;
error_log logs/error.log;
pid logs/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  logs/k8s-access.log  main;

    upstream k8s-http {
       server 10.38.0.50:80;
       server 10.38.0.58:80;
       server 10.38.0.166:80;
       server 10.38.0.77:80;

    }
    upstream k8s-https {
       server 10.38.0.50:443;
       server 10.38.0.58:443;
       server 10.38.0.166:443;
       server 10.38.0.77:443;
    }
    upstream k8s-apiserver {
       server 10.38.0.50:6443;
       server 10.38.0.58:6443;
       server 10.38.0.166:6443;
    }
    server {
       listen 80;
       proxy_connect_timeout 2s;
       proxy_timeout 5m;
       proxy_upload_rate 0;
       proxy_download_rate 0;
       proxy_buffer_size 4k;
       proxy_pass k8s-http;
    }
    server {
       listen 443;
       proxy_connect_timeout 2s;
       proxy_timeout 5m;
       proxy_upload_rate 0;
       proxy_download_rate 0;
       proxy_buffer_size 4k;
       proxy_pass k8s-https;
    }
   server {
       listen 26443;
       proxy_connect_timeout 2s;
       proxy_timeout 5m;
       proxy_upload_rate 0;
       proxy_download_rate 0;
       proxy_buffer_size 4k;
       proxy_pass k8s-apiserver;
    }
}

添加nginx到systemd服务
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/data/nginx/logs/nginx.pid
ExecStart=/data/nginx/sbin/nginx -c /data/nginx/conf/nginx.conf
ExecReload=/data/nginx/sbin/nginx -s reload
ExecStop=/data/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
添加后可使用systemctl start nginx进行nginx的服务的启动

 

标签:script,keepalived,server,10.38,nginx,master,proxy,kubeadm,k8s
From: https://www.cnblogs.com/xiaoxiaomuyuyu/p/17517210.html

相关文章

  • (转)k8s常见的资源对象使用
    原文:https://www.cnblogs.com/cyh00001/p/16555344.html一、kubernetes内置资源对象1.1、kubernetes内置资源对象介绍1.2、kubernetes资源对象操作命令官网介绍:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/二、job与cronjob计划任务2.1......
  • Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)
    目录一.系统环境二.前言三.仪表板(Dashboard)简介四.部署Kubernetes仪表板(Dashboard)五.访问Kubernetes仪表板(Dashboard)5.1使用token登录Dashboard5.2对sa账号kubernetes-dashboard授权5.3访问Dashboard六.总结七.附加信息一.系统环境本文主要基于Kubernetes1.21.9和Linux操作......
  • k8s 深入篇———— 守护容器[九]
    前言守护容器,也叫做deamonset,只做整理正文顾名思义,DaemonSet的主要作用,是让你在Kubernetes集群里,运行一个DaemonPod。所以,这个Pod有如下三个特征:这个Pod运行在Kubernetes集群里的每一个节点(Node)上;每个节点上只有一个这样的Pod实例;当有新的节点加入Kubernet......
  • k8s - 01
    k8s安装:https://www.cnblogs.com/zhh567/p/16894203.html结构apiserver用于管理各种网络接口,负责组件间的交互和对外暴露接口。etcd是位于master的数据库kube-scheduler编排容器kube-controllermanager管理cpu、内存等资源kubelet接收master发送的命令并进行处理......
  • (转)基于velero+minio对k8s进行备份和恢复
    原文:https://www.cnblogs.com/cyh00001/p/16548774.html一、velero介绍Velero是由vmware公司团队研发开源工具,用于安全地备份、恢复和迁移Kubernetes集群和持久卷。它可以在本地和公共云中运行。Velero由一个在您的Kubernetes集群中作为部署运行的服务器进程和一个命令行......
  • 看完这篇,你就了解了K8S的CKA认证考试的内容占比和具体考纲
    如果你正好想要了解关于Kubernetes(K8S)的CKA认证考试的内容占比和具体考纲,那么你来对地方了!本篇文章将详细解析CKA认证考试的内容占比以及具体考纲,让你对考试有一个清晰的了解。CKA(CertifiedKubernetesAdministrator)认证是云原生计算基金会(CNCF)推出的一项权威认证,目的......
  • 15款备受推崇的K8S可视化工具,你都玩过哪些?
    对于那些热爱探索新技术、寻找简化操作方式的运维工程师来说,如何更好地管理和操作K8S集群?本篇将分享15款备受推崇的K8S可视化工具,让你轻松管理和操作集群中的各种资源。你可能已经玩过其中的一些工具,这将是一个与你分享经验的机会哦!备受推崇的15款KubernetesDashboard:http......
  • k8s 深入篇———— 编排[八]
    前言简单整理一下编排。正文一个deployment例子:apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentspec:selector:matchLabels:app:nginxreplicas:2template:metadata:labels:app:nginxspec:......
  • 使用kubeadm快速部署一个K8s集群
    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Master节点$kubeadminit#将一个Node节点加入到当前集群中$kubeadmjoin<Master节点的IP和端口>1.安装要求在开始之前,部署Kubern......
  • CentOS7 部署 k8s 集群
    CentOS7部署k8s集群BUG弄潮儿 2023-06-1020:32 发表于广东BUG弄潮儿多年开发经验,专注软件开发、架构;推送微服务,分布式,Spring全家桶,Redis,Linux,Nginx等技术,欢迎一起学习、探讨。396篇原创内容公众号K8s+Istio+Golang=微服务+服务网格+云原生0x0......