网站首页 > 技术教程 正文
一、 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 nodeNAME          STATUS   ROLES    AGE   VERSIONk8s-master1   Ready    <none>   15d   v1.20.13k8s-node1     Ready    <none>   16d   v1.20.13k8s-node2     Ready    <none>   15d   v1.20.13[root@k8s-master2 ~]# kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME                 STATUS    MESSAGE                         ERRORscheduler            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-10 阿里云发布云数据中心专用处理器CIPU 猜猜能干点啥?
- 2024-10-10 如何在一分钟内实现微服务系统下的架构可视化
- 2024-10-10 记一次8小时惊心动魄的服务器+网站升级
- 2024-10-10 新浪微博上云实践:极端流量下的峰值应对与架构挑战
- 2024-10-10 微服务架构可视化平台实践(微服务架构设计)
- 2024-10-10 玩机小技巧:阿里云的免费SSL证书快到期了,怎样正确续签呢?
- 2024-10-10 阿里云服务器无公网如何上网?(阿里云的大量公网ip来自哪儿)
- 2024-10-10 阿里云发布CIPU,云计算进入第三阶段
- 2024-10-10 学好Nginx,走遍天下都不怕(学好普通话走遍天下都不怕谁说的)
- 2024-10-10 干货:电商行业的上云最佳实践(云电商运营)
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
- 
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
 
- 标签列表
- 
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
 

本文暂时没有评论,来添加一个吧(●'◡'●)