K8S多节点部署(二进制方式)

本文档详细介绍了如何在已有的单节点Kubernetes环境中部署多节点Master集群,并实现负载均衡。首先,通过复制配置和启动服务在master02上搭建Kubernetes组件。接着,配置并部署了Keepalived服务以实现负载均衡,确保高可用性。在node节点上,安装Nginx并配置四层转发,然后在两台node节点上部署Keepalived服务。最后,验证了负载均衡效果及VIP在节点间的切换。整个过程中,重点在于Kubernetes集群的扩展和故障转移能力的增强。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基于单节点基础环境,部署多节点

1.1、复制kubernetes目录到master02

[root@master01 k8s]# scp -r /opt/kubernetes/ root@192.168.140.40:/opt

在这里插入图片描述

[root@master01 k8s]# scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.140.40:/usr/lib/systemd/system/

在这里插入图片描述

1.2、master02上操作

[root@server ~]# hostnamectl set-hostname master02
[root@server ~]# su
[root@master02 ~]# 
[root@master02 ~]# cd /opt/kubernetes/cfg/

在这里插入图片描述

[root@master02 cfg]# vim kube-apiserver

在这里插入图片描述

1.3、拷贝master01上已有的etcd证书给master02使用

[root@master01 k8s]# scp -r /opt/etcd/ root@192.168.140.40:/opt/

在这里插入图片描述

1.4、启动master02中的三个组件服务

[root@master02 cfg]# systemctl start kube-apiserver.service 
[root@master02 cfg]# systemctl enable kube-apiserver.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-apiserver.service to /usr/lib/systemd/system/kube-apiserver.service.
[root@master02 cfg]# systemctl start kube-controller-manager.service 
[root@master02 cfg]# systemctl enable kube-controller-manager.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to /usr/lib/systemd/system/kube-controller-manager.service.
[root@master02 cfg]# systemctl start kube-scheduler.service 
[root@master02 cfg]# systemctl enable kube-scheduler.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-scheduler.service to /usr/lib/systemd/system/kube-scheduler.service.
[root@master02 cfg]# vim /etc/profile      #增加环境变量

在这里插入图片描述

[root@master02 cfg]# source /etc/profile
[root@master02 cfg]# kubectl get node

在这里插入图片描述

二、K8S负载均衡部署

[root@zabbix-server ~]# hostnamectl set-hostname nginx01
[root@zabbix-server ~]# su
[root@nginx01 ~]# 
[root@zabbix-client ~]# hostnamectl set-hostname nginx02
[root@zabbix-client ~]# su
[root@nginx02 ~]# 
[root@nginx01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0

在这里插入图片描述

[root@nginx01 ~]# yum clean all
[root@nginx01 ~]# yum list
[root@nginx01 ~]# yum -y install nginx       
[root@nginx01 ~]# vim /etc/nginx/nginx.conf      #添加四层转发

在这里插入图片描述

[root@nginx01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx01 ~]# systemctl start nginx

2.1、部署keepalived服务

[root@nginx01 ~]# yum -y install keepalived   #下载keepalived

在这里插入图片描述

[root@nginx01 ~]# cp keepalived.conf /etc/keepalived/keepalived.conf   #修改配置文件
[root@nginx01 keepalived]# vim keepalived.conf 
! 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 127.0.0.1
   smtp_connect_timeout 30
   router_id NGINX_MASTER
}
 
vrrp_script check_nginx {
    script "/etc/nginx/check_nginx.sh"
}
 
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的
    priority 100    # 优先级,备服务器设置 90
    advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒
    authentication {
        auth_type PASS      
        auth_pass 1111
    }  
    virtual_ipaddress {
        192.168.140.100/24
    }
    track_script {
        check_nginx
    }

在这里插入图片描述

[root@nginx01 ~]# rz

[root@nginx01 ~]# ls

在这里插入图片描述

[root@nginx01 ~]# vim /etc/nginx/check_nginx.sh
count=$(ps -ef |grep nginx |egrep -cv "grep|$$")

if [ "$count" -eq 0 ];then
    systemctl stop keepalived
fi

在这里插入图片描述

[root@nginx01 ~]# chmod +x /etc/nginx/check_nginx.sh
[root@nginx01 nginx]# systemctl start keepalived.service

2.2、node2节点部署

[root@nginx02 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0

在这里插入图片描述

[root@nginx02 ~]# yum clean all
[root@nginx02 ~]# yum list
[root@nginx02 ~]# yum -y install nginx
[root@nginx02 ~]# vim /etc/nginx/nginx.conf 

在这里插入图片描述

[root@nginx02 ~]# systemctl start nginx

2.2.1、部署keepalived服务

[root@nginx02 ~]# yum -y install keepalived

在这里插入图片描述

[root@nginx02 ~]# cp keepalived.conf /etc/keepalived/keepalived.conf 
[root@nginx02 keepalived]# vim keepalived.conf 

在这里插入图片描述

[root@nginx02 ~]# vim /etc/nginx/check_nginx.sh

在这里插入图片描述

[root@nginx02 ~]# chmod +x /etc/nginx/check_nginx.sh
[root@nginx02 nginx]# systemctl start keepalived.service

三、验证

[root@nginx01 ~]# ip a

在这里插入图片描述

[root@nginx02 ~]# ip a

在这里插入图片描述

[root@nginx01 ~]# pkill nginx                  
[root@nginx01 ~]# systemctl status nginx

在这里插入图片描述

在这里插入图片描述

[root@nginx02 nginx]# ip a

在这里插入图片描述

3.1、master恢复nginx,再次验证虚拟地址

[root@nginx01 nginx]# systemctl start nginx
[root@nginx01 nginx]# systemctl start keepalived.service 
[root@nginx01 nginx]# ip a

在这里插入图片描述

在这里插入图片描述

3.2、开始修改node节点配置文件统一VIP

[root@node01 etc]# cd /opt/kubernetes/
[root@node01 kubernetes]# cd cfg/
[root@node01 cfg]# vim /opt/kubernetes/cfg/bootstrap.kubeconfig

在这里插入图片描述

[root@node02 ~]# cd /opt/kubernetes/cfg/
[root@node02 cfg]# vim /opt/kubernetes/cfg/bootstrap.kubeconfig

在这里插入图片描述

[root@node01 cfg]# vim /opt/kubernetes/cfg/kubelet.kubeconfig
[root@node02 cfg]# vim /opt/kubernetes/cfg/kubelet.kubeconfig

在这里插入图片描述

[root@node01 cfg]# vim /opt/kubernetes/cfg/kube-proxy.kubeconfig
[root@node02 cfg]# vim /opt/kubernetes/cfg/kube-proxy.kubeconfig
//全部修改为VIP server: https://192.168.140.100:6443
[root@node01 cfg]# systemctl restart kubelet.service 
[root@node01 cfg]# systemctl restart kube-proxy.service 
[root@node02 cfg]# systemctl restart kubelet.service 
[root@node02 cfg]# systemctl restart kube-proxy.service 
[root@node01 cfg]# grep 100 *
[root@node02 cfg]# grep 100 *

在这里插入图片描述
在这里插入图片描述

3.3、在lb01上查看nginx的k8s日志

[root@nginx01 nginx]# tail /var/log/nginx/k8s-access.log   #负载均衡已完成

在这里插入图片描述

3.4、在master01上操作测试创建pod

[root@master01 ~]# kubectl run nginx --image=nginx
[root@master01 ~]# kubectl get pods
[root@master01 ~]# kubectl get pods
[root@master01 ~]# kubectl get pods -o wide   #查看pod网络

在这里插入图片描述

[root@node01 cfg]# docker ps -a

在这里插入图片描述

[root@master01 ~]# kubectl describe pod nginx-dbddb74b8-x9pkq   #查看创建过程

在这里插入图片描述

3.5、在node1节点访问

[root@node01 cfg]# curl 172.17.17.2

在这里插入图片描述

3.6、回到master01查看日志

[root@master01 ~]# kubectl logs nginx-dbddb74b8-x9pkq

在这里插入图片描述

四、总结

多Master集群中,node节点指向虚拟地址,由VIP去调度Master,Master上的apiserver去和etcd建立联系,并且把数据写入到etcd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值