网站首页 > 精选教程 正文
一、 K8s集群多master部署安装
1、前言
Kubernetes 高可用集群系统,前面文档针对部署一套单master的k8s集群做了详细的讲解.
单master集群部署文档地址:
https://wenku.baidu.com/view/c259ad09ecf9aef8941ea76e58fafab069dc442c.html
作为一个企业级应用,我们不能容忍集群中存在单点故障风险. 所以master 我们需要部署成多节点降低风险,根据之前文档集群架构ETCD独立部署三台设备具备了高可用能力, master为单台,这次就进行k8s集群的master节点进行扩展。
2、多master集群实现方案
Kubernetes 集群系统中kube-master中有三个重要组件
kube-apiserver
kube-controller-manager
kube-scheduler其中 kube-controller-manager kube-scheduler 两个组件自身已经具备了选择机制完成高可用。唯独kube-apiserver 需要考虑高可用,kube-apiserver组件从访问角度来说是一个HTTP API服务,故而可以通过web负载均衡方式实现。故此通过常用的流量负载均衡均可实现其高可用功能。这里我们选择最常用的LVS+keepalived+Nginx的作为kube-apiserver访问负载均衡。
3、多master集群系统的设计架构图
二、 部署K8S集群Master2 Node 环境配置
1、 部署k8s系统环境需求
硬件环境: 准备1台 2核CPU 内存2G 硬盘40G 云主机ECS 需要外网
测试用虚拟机环境:VMware 宿主机配置 4核心 8G内存以上 创建1台虚拟机
软件环境:
Centos7.5(mini) DokerCE 19/20 Kubernetes v1.20.13
2、 单master系统集群的服务器IP地址规划
参考之前单master集群部署文档,规划IP
K8s-master2:192.168.3.114
3、 防火墙设置
为提示生产环境安全建议不要关闭防火墙,采用白名单方式放开防火墙设置
10.0.0.0/24 10.244.0.0/16 192.168.3.0/24等网段主机都加入白名单
# firewall-cmd --add-source=10.0.0.0/24 --zone=trusted –permanent
# firewall-cmd --add-source=192.168.3.0/24 --zone=trusted –permanent
# firewall-cmd --add-source=10.244.0.0/16 --zone=trusted –permanent
# firewall-cmd --reload
当然为了调试可以先关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld
4、 关闭selinux设置
#sed -i 's/enforcing/disabled/' /etc/selinux/config
#setenforce 0
5、 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab
6、 设置主机名称
# cat >> /etc/hosts << EOF
192.168.3.110 k8s-master1
192.168.3.114 k8s-master2
192.168.3.112 k8s-node1
192.168.3.113 k8s-node2
EOF
7、 设置系统IPtables参数
#cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#sysctl --system # 生效
8、 设置时间同步
#yum install ntpdate -y
#ntpdate time.windows.com
三、K8s-Master2 Node安装部署
K8s-Master2 与已部署的Master1所有操作一致。所以我们只需将Master1所有K8s文件拷贝过来,再修改下服务器IP和主机名启动即可。
1、 下载Docker包并解压安
1.1 下载docker包解压
wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz
tar zxvf docker-19.03.9.tgz
mv docker/* /usr/bin
1.2使用systemd管理docker
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
1.3 创建docker配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
注意:registry-mirrors 阿里云镜像加速器
1.4 docker启动并设置开机启动
systemctl daemon-reload && systemctl start docker && systemctl enable docker
2、 K8s-master2 组件
Master2 上创建/opt/etcd/ssl
mkdir –p /opt/etcd/ssl
登陆k8s-master1拷贝Master1上所有K8s文件和etcd证书到Master2:
scp -r /opt/kubernetes root@192.168.3.114:/opt
scp -r /opt/etcd/ssl root@192.168.3.114:/opt/etcd
scp /usr/lib/systemd/system/kube* root@192.168.3.114:/usr/lib/systemd/system
scp /usr/bin/kubectl root@192.168.3.114:/usr/bin
scp -r ~/.kube root@192.168.3.114:~
删除kubelet证书和kubeconfig文件:
rm -f /opt/kubernetes/cfg/kubelet.kubeconfig
rm -f /opt/kubernetes/ssl/kubelet*
修改apiserver、kubelet和kube-proxy配置文件为本地IP:
vi /opt/kubernetes/cfg/kube-apiserver.conf
--bind-address=192.168.3.114\
--advertise-address=192.168.3.114\
vi /opt/kubernetes/cfg/kube-controller-manager.kubeconfig
server: https://192.168.3.114:6443
vi /opt/kubernetes/cfg/kube-scheduler.kubeconfig
server: https://192.168.3.114:6443
vi ~/.kube/config
server: https://192.168.3.114:6443
启动设置开机启动
systemctl daemon-reload
systemctl start kube-apiserver kube-controller-manager kube-scheduler
systemctl enable kube-apiserver kube-controller-manager kube-scheduler
查看集群状态
kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-1 Healthy {"health":"true"}
etcd-2 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
3、 配置k8s集群所用的负载均衡
找两台设备安装一套lvs+keepalived+ngninx 负载均衡系统 并配置VIP为192.168.3.120
Nginx.conf 增加如下配置
可以参考如下文档进行lvs+nginx部署
https://wenku.baidu.com/view/d4ab3c3e463610661ed9ad51f01dc281e53a56c8.html
########## k8s config begin #######################
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.3.110:6443; # Master1 APISERVER IP:PORT
server 192.168.3.114:6443; # Master2 APISERVER IP:PORT
}
server {
listen 6443;
proxy_pass k8s-apiserver;
}
}
########## k8s config end #######################
启动lvs+nginx
4、 修改k8s系统集群中的work-node 接口访问指向VIP
登陆work-node执行
# sed -i 's/192.168.3.110:6443#192.168.3.120:6443/g' /opt/kubernetes/cfg/*
重启动服务
# systemctl restart kubelet kube-proxy
查看集群信息如下就说明多master部署完成
[root@k8s-master2 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master1 Ready <none> 15d v1.20.13
k8s-node1 Ready <none> 16d v1.20.13
k8s-node2 Ready <none> 15d v1.20.13
[root@k8s-master2 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-1 Healthy {"health":"true","reason":""}
etcd-0 Healthy {"health":"true","reason":""}
etcd-2 Healthy {"health":"true","reason":""}
至此多master集群部署完成
猜你喜欢
- 2024-10-05 基于Kafka+ELK搭建海量日志平台 kafka实现日志收集
- 2024-10-05 高级架构技术点之安装redis 集群 redis怎么安装
- 2024-10-05 Nacos在企业生产中如何使用集群环境?
- 2024-10-05 SpringCloud Alibaba之Nacos集群、持久化
- 2024-10-05 太厉害!Redis+Nginx+设计模式+Spring全家桶+Dubbo技术精选合集
- 2024-10-05 认识Kubernetes以及搭建Kubernetes集群
- 2024-10-05 Redis + Tomcat + Nginx 集群实现 Session 共享
- 2024-10-05 最新Minio+Docker+Nginx多机集群 多台nginx
- 2024-10-05 架构师白话分布式系统 分布式架构的核心理念
- 2024-10-05 简单几步玩转Redis集群 redis集群解决方案
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)