k8s二进制部署--多master、负载均衡、高可用

目录

1、环境准备

1.1 服务器配置

1.2 master02 节点部署

2、负载均衡部署

2.1 下载nginx

2.2 修改nginx配置文件

2.3 启动nginx

2.3.1 检查配置文件语法

2.3.2 启动nginx服务,查看已监听6443端口

3. 部署keepalived服务(nginx主机,以nginx01为例)

3.1 下载keepalived

3.2 修改keepalived配置文件

3.3 创建nginx状态检查脚本 

3.4启动keepalived服务(一定要先启动了nginx服务,再启动keepalived服务)

3.5 修改node节点对接IP(node节点,以node1为例)

3.5.1 修改node节点配置文件

3.5.2 重启kubelet和kube-proxy服务

3.6 在nginx01 上查看 nginx 和 node 、 master 节点的连接状态

4、在 master01 节点上操作

4.1 查看pode、node列表

4.2 创建pod


1、环境准备

1.1 服务器配置

 

服务器主机名IP地址主要组件/说明
master01节点+etcd01节点master01192.168.80.116kube-apiserver kube-controller-manager kube-schedular etcd
master02节点master02192.168.80.115kube-apiserver kube-controller-manager kube-schedular
node01节点+etcd02节点node01192.168.80.111kubelet kube-proxy docker flannel
node02节点+etcd03节点node02192.168.80.112kubelet kube-proxy docker flannel
nginx01节点nginx01192.168.80.113keepalived负载均衡(主)
nginx02节点nginx02192.168.80.114keepalived负载均衡(备)

1.2 master02 节点部署

//从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点

scp -r /opt/etcd/ root@192.168.80.115:/opt/ 
scp -r /opt/kubernetes/ root@192.168.80.115:/opt 
scp -r /root/.kube root@192.168.80.115:/root 
scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.80.115:/usr/lib/systemd/system/

//修改配置文件kube-apiserver中的IP

vim /opt/kubernetes/cfg/kube-apiserver KUBE_APISERVER_OPTS="--logtostderr=true \ 
--v=4 \ 
--etcd-servers=https://192.168.80.116:2379,https://192.168.80.111:2379,https://192.168.80.112:2379\ 
--bind-address=192.168.80.115 \  修改
--secure-port=6443 \
--advertise-address=192.168.80.115 \ ​修改

 

//在 master02 节点上启动各服务并设置开机自启

systemctl start kube-apiserver.servicesystemctl enable kube-apiserver.servicesystemctl start kube-controller-manager.servicesystemctl enable kube-controller-manager.servicesystemctl start kube-scheduler.servicesystemctl enable kube-scheduler.service

//查看node节点状态

ln -s /opt/kubernetes/bin/* /usr/local/bin/kubectl get nodeskubectl get nodes -o wide#-o=wide:输出额外信息;对于Pod,将输出Pod所在的Node名 //此时在master02节点查到的node节点状态仅是从etcd查询到的信息,而此时node节点实际上并未与master02节点建立通信连接,因此需要使用一个VIP把node节点与master节点都关联起来

2、负载均衡部署

  • 配置load balancer集群双机热备负载均衡(nginx实现负载均衡,keepalived实现双机热备)
  • 在nginx01和nginx02节点上操作

2.1 下载nginx

配置nginx的官方在线yum源,配置本地nginx的yum源

[root@nginx01 ~]# cat > /etc/yum.repos.d/nginx.repo << 'EOF'
> [nginx]
> name=nginx repo
> baseurl=http://nginx.org/packages/centos/7/$basearch/
> gpgcheck=0
> EOF
[root@nginx01 ~]# yum install -y nginx

2.2 修改nginx配置文件

配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口

vim /etc/nginx/nginx.confevents {
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.80.115:6443;server 192.168.80.116:6443;
}
server {listen 6443;proxy_pass k8s-apiserver;
}
}http { ......

2.3 启动nginx

2.3.1 检查配置文件语法

nginx -t

 

2.3.2 启动nginx服务,查看已监听6443端口

systemctl start nginx 
systemctl enable nginx 
netstat -natp | grep nginx

 

3. 部署keepalived服务(nginx主机,以nginx01为例)

3.1 下载keepalived

yum install keepalived -y

3.2 修改keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {# 接收邮件地址notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}# 邮件发送地址notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id NGINX_MASTER	#lb01节点的为 NGINX_MASTER,lb02节点的为 NGINX_BACKUP
}#添加一个周期性执行的脚本
vrrp_script check_nginx {script "/etc/nginx/check_nginx.sh"	#指定检查nginx存活的脚本路径
}vrrp_instance VI_1 {state MASTER			#lb01节点的为 MASTER,lb02节点的为 BACKUPinterface ens33			#指定网卡名称 ens33virtual_router_id 51	#指定vrid,两个节点要一致priority 100			#lb01节点的为 100,lb02节点的为 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.80.100/24	#指定 VIP}track_script {check_nginx			#指定vrrp_script配置的脚本}
}

3.3 创建nginx状态检查脚本 

vim /etc/nginx/check_nginx.sh
#!/bin/bash
#egrep -cv "grep|$$" 用于过滤掉包含grep 或者 $$ 表示的当前Shell进程ID,即脚本运行的当前进程ID号
count=$(ps -ef | grep nginx | egrep -cv "grep|$$")if [ "$count" -eq 0 ];thensystemctl stop keepalived
fichmod +x /etc/nginx/check_nginx.sh

3.4启动keepalived服务(一定要先启动了nginx服务,再启动keepalived服务)

systemctl start keepalived 
systemctl enable keepalivedip a #查看VIP是否生成

 

3.5 修改node节点对接IP(node节点,以node1为例)

3.5.1 修改node节点配置文件

修改node节点上的bootstrap.kubeconfig、kubelet.kubeconfig和kube-proxy.kubeconfig配置文件中的server为VIP

​
cd /opt/kubernetes/cfg/vim bootstrap.kubeconfigserver: https://192.168.80.100:6443vim kubelet.kubeconfigserver: https://192.168.80.100:6443vim kube-proxy.kubeconfigserver: https://192.168.80.100:6443​

 

3.5.2 重启kubelet和kube-proxy服务

systemctl restart kubelet.service 
systemctl restart kube-proxy.service

3.6 在nginx01 上查看 nginx 和 node 、 master 节点的连接状态

netstat -natp | grep nginx 

 

本地nginx监听端口为6443和80,6443负责负载均衡代理,80负责web展示服务。 VIP的6443端口分别与nginx01/nginx02相连接。 master01/master02的6443端口分别与nginx01相连接。

自此,多节点负载均衡搭建完毕。

4、在 master01 节点上操作

4.1 查看pode、node列表

[root@master02 ~]# kubectl get node[root@master02 ~]# kubectl get pod

 

4.2 创建pod

//测试创建pod 
kubectl run nginx --image=nginx//查看Pod的状态信息 
[root@master01 k8s]#kubectl get pods
NAME    READY   STATUS              RESTARTS   AGE
nginx   0/1     ContainerCreating   0          80s #创建中
sh      1/1     Running             0          157m
[root@master01 k8s]#kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          3m7s          #创建完成,运行中
sh      1/1     Running   0          159m
[root@master01 k8s]#kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS   AGE    IP              NODE             NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          4m     172.16.70.132   192.168.80.112   <none>           <none>
sh      1/1     Running   0          160m   172.16.110.2    192.168.80.111   <none>           <none>//READY为1/1,表示这个Pod中有1个容器//在对应网段的node节点上操作,可以直接使用浏览器或者curl命令访问
curl 172.16.70.132//这时在master01节点上查看nginx日志
kubectl logs nginx-dbddb74b8-nf9sk

 

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

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

相关文章

[ROS 系列学习教程] 建模与仿真 - URDF 建模实践

ROS 系列学习教程(总目录) 本文目录 一、机器人结构组成二、新建功能包三、编写launch文件四、创建底盘五、添加轮子六、添加其他部件七、解决部分实体位于地面以下的问题 前文介绍了URDF建模与URDF语法&#xff0c;接下来介绍怎么使用URDF从零构建一个机器人模型并在rviz中显示…

基于国产LoRa的智慧农业解决方案--ASR6601、SX1278

我国《数字乡村发展战略纲要》明确指出“要推进农业数字化转型”&#xff0c;加快推广云计算、大数据、物联网、人工智能在农业生产经营管理中的运用。 然而&#xff0c;目前我国的农业数字化转型还面临着诸多挑战。我国整体农业机械化程度和自动化控制水平仍然较低。由于农田面…

Java类和对象(二)—— 封装,static 关键字与代码块

前言 在面向对象的编程语言中&#xff0c;有三大特性&#xff1a;封装、继承和多态~~ 今天我们就来学习封装的知识 封装 什么是封装 在现实生活中&#xff0c;我们经常使用手机来进行沟通与交流&#xff0c;实际上我们拿到的手机是被封装好的&#xff0c;精美的屏幕&a…

java医院信息系统HIS源码SaaS模式Java版云HIS系统 接口技术RESTful API + WebSocket + WebService

java医院信息系统HIS源码SaaS模式Java版云HIS系统 接口技术RESTful API WebSocket WebService 云HIS是基于云计算的医疗卫生信息系统&#xff08;Cloud-Based Healthcare Information System&#xff09;&#xff0c;它运用云计算、大数据、物联网等新兴信息技术&#xff0c;…

jiebaNET中文分词器

最近我接手了一个有趣的需求&#xff0c;需要对用户评价进行分词&#xff0c;进行词频统计和情绪分析&#xff0c;并且根据词频权重制成词云图以供后台数据统计&#xff0c;于是我便引入了jieba分词器,但是我发现网上关于jiebaNET相关文档实在太少了&#xff0c;甚至连配置文件…

core.sshd.xxxxxx文件过大

背景 【紧急】【应用分组】应用: 接入点服务, 分组: 观众预发, ip: xx.xx.xx.xx 【/】&#xff0c;磁盘使用率已连续2次大于90% [当前值:100%]。报警时间: 2024-05-13 14:07:01 原因 登录机器查看&#xff0c;发现根目录下有大量的崩溃文件将 / 打满 处理 1&#xff0c; 删…

百度百舸 AIAK-LLM 的大模型训练和推理加速实践

本文整理自 4 月 16 日的 2024 百度 Create 大会的公开课分享《百舸 AIAK-LLM&#xff1a;大模型训练和推理加速实践》。 今天要分享的主题是 AI Infra 相关的内容&#xff0c;主要内容分为四部分。 首先和大家一起讨论大模型给基础设施带来的挑战。第二部分则是向大家介绍一个…

洗地机怎么挑?洗地机选购指南,2024洗地机测评选购攻略

在快节奏的生活中&#xff0c;繁琐的清洁工作往往令人头疼&#xff0c;随着洗地机的诞生&#xff0c;极大地简化了清洁的过程&#xff0c;洗地机凭借着它吸拖洗为一体的高效清洁特点&#xff0c;受到家庭和商业场所的广泛欢迎。那么&#xff0c;洗地机怎么挑&#xff0c;要注意…

基于Spring封装一个websocket工具类使用事件发布进行解耦和管理

最近工作中&#xff0c;需要将原先的Http请求换成WebSocket&#xff0c;故此需要使用到WebSocket与前端交互。故此这边需要研究一下WebSocket到底有何优点和不可替代性&#xff1a; WebSocket优点&#xff1a; WebSocket 协议提供了一种在客户端和服务器之间进行全双工通信的…

【漏洞复现】Secnet-智能路由系统弱口令

0x01 产品简介 Secnet安网智能AC管理系统是广州安网通信技术有限公司(简称“安网通信”)的无线AP管理系统 0x02 漏洞描述 攻击者可直接利用弱口令登录系统 0x03 搜索语法 fofa: title"安网-智能路由系统" || title"智能路由系统" || title"安网科…

CentOs安装

安装 开发工具 &#xff1a;GCC、 JDK、mysql 如果出现蓝屏&#xff0c;要在BIOS开启虚拟化支持&#xff0c;或者移除打印机。

华为认证大数据是什么?华为认证大数据有用吗?

华为大数据是用来搜集整理大数据&#xff0c;提供解决方案的数据中心。华为大数据解决方案是华为公司推出的一种综合性云解决方案&#xff0c;主要针对广告营销、电商、车联网等大数据应用场景的云计算大数据方案&#xff0c;帮助企业用户构建大数据平台&#xff0c;解决企业的…