微服架构基础设施环境平台搭建 -(一)基础环境准备

news2024/11/24 20:36:50

微服架构基础设施环境平台搭建 -(一)基础环境准备

通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构建业务中台,并通过Jekins自动构建、编译、测试、发布的自动部署,形成一套完整的自动化运维、发布的快速DevOps平台。


本文为了搭建Kubernetes集群而准备的服务器以及针对服务器基础环境配置。

文章的操作过程大部分参照【基于青云LB搭建高可用的k8s集群】

微服架构基础设施环境平台搭建 系列文章


微服架构基础设施环境平台搭建 -(一)基础环境准备
微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建
微服架构基础设施环境平台搭建 -(三)Docker+Kubernetes集群搭建
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台
微服架构基础设施环境平台搭建 -(五)Docker常用命令

目录

  • 微服架构基础设施环境平台搭建 -(一)基础环境准备
  • 一、采用的技术架构
  • 二、微服架构基础设施平台网络规划
  • 三、部署架构
  • 四、修改主机名和hosts文件
    • 1. 修改主机名(各服务器分别修改主机名)
    • 2. 修改hosts文件 # 添加机器ip与主机名映射
  • 五、 关闭防火墙、selinux、关闭交换分区(每台服务器都执行)
  • 六、免密登录(每台服务器都执行)
  • 七、升级系统内核
    • 1、导入public key
    • 2、安装epel源
    • 3、查看可用版本内核
    • 4、选择安装lt最新版本
    • 5、查看系统上可以用的内核
    • 6、设置内核启动顺序
    • 7、重新创建内核配置
    • 8、重启验证
  • 八、修改内核参数
    • 1、加载br_netfilter模块
    • 2、修改内核参数
  • 九、配置yum源(采用阿里云repo源)
  • 十、配置安装k8s组件需要的阿里云的repo源
  • 十一、配置时间同步
    • 方式一、采用ntpdate命令
    • 方式二、chronyd
  • 十二、配置IPVS

一、采用的技术架构

序号技术框架说明
1Kubernetes
2KubesphereKubernetes编排器,管理平台
3Dockers
4HarborDocker私有仓库
5GitLab源码库
6Jekins自动编译、测试、发布平台
7Spring Cloud AlibabaSpring Cloud Alibaba微服体系架构
8NacosApi网关、服务注册发现配置管理中心
9Sentinel限流溶断安全中心
10Seata分布式事务管理框架
11Redis分布式缓存服务
12ElasticSearch/Solr数据检索服务
13Mysql结构化数据存储
14Grafana监控平台
15Nginx服务代理、Web服务

二、微服架构基础设施平台网络规划

序号IPHostName操作系统K8s角色说明
1192.168.1.141ks-m1CentOS7_x64控制节点Kubernetes Master
2192.168.1.142ks-m2CentOS7_x64控制节点Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
3192.168.1.143ks-m3CentOS7_x64控制节点Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
4192.168.1.144ks-n1CentOS7_x64工作节点Kubernetes Worker
5192.168.1.145ks-n2CentOS7_x64工作节点Kubernetes Worker
6192.168.2.146ks-harborCentOS7_x64工作节点Harbor服务+NFS文件服务

三、部署架构

在这里插入图片描述

四、修改主机名和hosts文件

1. 修改主机名(各服务器分别修改主机名)

使用hostnamectl命令修改主机名,执行该命令后立即生效,代码如下

#在192.168.1.141上执行如下:
[root@localhost ~]# hostnamectl set-hostname ks-m1

其余的机器也使用hostnamectl命令修改主机名,示例如下:

## 在192.168.1.142上执行如下:
[root@localhost ~]# hostnamectl set-hostname ks-m2

#在192.168.1.143上执行如下:
[root@localhost ~]# hostnamectl set-hostname ks-m3

#在192.168.1.144上执行如下:
[root@localhost ~]# hostnamectl set-hostname ks-n1

#在192.168.1.145上执行如下:
[root@localhost ~]# hostnamectl set-hostname ks-n2

#在192.168.2.146上执行如下:
[root@localhost ~]# hostnamectl set-hostname ks-harbor

2. 修改hosts文件 # 添加机器ip与主机名映射

[root@localhost ~]# vim /etc/hosts
192.168.1.141  ks-m1
192.168.1.142  ks-m2
192.168.1.143  ks-m3
192.168.1.144  ks-n1
192.168.1.145  ks-n2
192.168.2.146  ks-harbor

五、 关闭防火墙、selinux、关闭交换分区(每台服务器都执行)

# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 永久关闭selinux 注:重启机器后,selinux配置才能永久生效
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 临时关闭selinux   执行getenforce   显示Disabled说明selinux已经关闭
setenforce 0
# 永久关闭交换分区swap 注:重启机器后,才能永久生效
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 临时关闭交换分区swap
swapoff -a

六、免密登录(每台服务器都执行)

# 生成密钥对
ssh-keygen -t rsa   ## 一路回车即可
# 进入.ssh目录,如果目录不存在则创建
cd ~/.ssh
# 将公钥导入至authorized_keys
cat id_rsa.pub >> authorized_keys
# 修改文件权限
chmod 700 ~/.ssh
chmod 600 authorized_keys

在ks-m1上执行以下命令,使主节点能免密访问其他俩从节点:

# 配置主从互相免密登陆
cat ~/.ssh/id_rsa.pub | ssh root@ks-m2 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_rsa.pub | ssh root@ks-m3 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_rsa.pub | ssh root@ks-n1 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_rsa.pub | ssh root@ks-n2 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_rsa.pub | ssh root@ks-harbor 'cat - >> ~/.ssh/authorized_keys'

其它服务器参照上面命令依次每台服务器上执行免密登录命令

七、升级系统内核

在升级内核十分重要,低版本的内核下k8s集群不稳定,且对插件的兼容性不好,例如3.10版本的内核不支持网络插件Calico3.23版本等。
共有两种开机引导模式:bios和uefi,其中uefi引导模式下需要关闭安全引导,否则无法正常开机。

1、导入public key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2、安装epel源

yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y

3、查看可用版本内核

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

4、选择安装lt最新版本

$ yum --enablerepo=elrepo-kernel install kernel-lt -y

5、查看系统上可以用的内核

说明:
首先需要确定Linux系统开机引导模式是BIOS还是UEFI,可以通过命令 [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS 来确定系统开机引导模式

  • 如果输出是BIOS就是BIOS;
  • 如果是 UEFI ,则是UEFI

执行命令:

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

1)、BIOS模式执行下面命令:

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

2)、UEFI模式执行下面命令:

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/centos/grub.cfg

6、设置内核启动顺序

grub2-set-default 0

7、重新创建内核配置

1)、BIOS模式执行下面命令:

$ grub2-mkconfig -o /boot/grub2/grub.cfg

2)、UEFI模式执行下面命令:

$ grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

8、重启验证

内核升级完成后需要重新启动系统才能生效

1)、重启系统执行命令:

reboot

2)、查看系统内核执行命令:

uname -r

在这里插入图片描述

八、修改内核参数

1、加载br_netfilter模块

# 加载br_netfilter模块
modprobe br_netfilter
# 验证模块是否加载成功
lsmod | grep br_netfilter

2、修改内核参数

1)、修改配置文件

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF

说明
禁止使用swap空间,只有当系统OOM时才允许使用它
vm.swappiness = 0

2)、生效执行命令:

sysctl --system
# 或 
sysctl -p /etc/sysctl.d/k8s.conf

说明
以下3项为必须参数,其他参数可根据需要添加

  • net.bridge.bridge-nf-call-iptables:开启桥设备内核监控(ipv4)
  • net.ipv4.ip_forward:开启路由转发
  • net.bridge.bridge-nf-call-ip6tables:开启桥设备内核监控(ipv6)

九、配置yum源(采用阿里云repo源)

# 下载常用的软件
yum clean all && yum makecache  && yum repolist
yum install -y vim net-tools  bash-completion wget lrzsz     
# 配置国内阿里云docker的repo源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

十、配置安装k8s组件需要的阿里云的repo源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

十一、配置时间同步

方式一、采用ntpdate命令

# 安装ntpdate命令
yum install ntpdate -y
# 跟网络源做同步
ntpdate cn.pool.ntp.org
# 把时间同步做成计划任务
crontab -e
# 填入一下内容
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org
# 重启crond服务
service crond restart

方式二、chronyd

# 安装chronyd
yum install -y chronyd
# 启动chronyd及加入开机自启
systemctl start chronyd && systemctl enable chronyd 
# 修改/etc/chrony.conf配置文件,同步服务器地址为阿里云,增加一行(server ntp1.aliyun.com iburst,其余服务地址注释了)
server ntp1.aliyun.com iburst

十二、配置IPVS

yum install  -y ipvsadm ipset sysstat conntrack libseccomp  
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT ipip "
for kernel_module in \${ipvs_modules}; do
  /sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
  if [ $? -eq 0 ]; then
    /sbin/modprobe \${kernel_module}
  fi
done
EOF  
chmod 755 /etc/sysconfig/modules/ipvs.modules 
sh /etc/sysconfig/modules/ipvs.modules 
lsmod | grep ip_vs

说明
dummy0网卡和kube-ipvs0网卡:在安装k8s集群时,启用了ipvs的话,就会有这两个网卡。(将service的IP绑定在kube-ipvs0网卡上)

至此服务器的基础配置全部完成,下一篇将安装Docker的K8s集群

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java AWT 图形界面编程】IntelliJ IDEA 乱码问题最佳配置方案 ( 配置文件编码 | 配置编译器编码参数 | 配置运行时编码参数 )

文章目录 一、IntelliJ IDEA 乱码问题二、IntelliJ IDEA 乱码问题最佳配置方案1、文件编码设置成 UTF-82、编译器编码参数设置成 UTF-83、 配置运行时编码参数为 GBK 一、IntelliJ IDEA 乱码问题 在 IntelliJ IDEA 中开发 AWT / Swing 图形界面程序 , 经常遇到乱码问题 ; 文件…

博文的跑路笔记

HTML CSS Flex布局 使用flex布局 容器 .box {display: flex; }行内元素 .box {display: inline-flex; }flex布局后&#xff0c;float、vertical-align、clear失效。 容器属性 flex-direction&#xff1a;主轴方向 属性值 row&#xff1a;子元素起点在左&#xff0c;左到右。…

初级面试问到rabbitMQ,看这一篇文章就够了!

一、rabbitMQ的基础要点回顾 1.使用场景 1&#xff09;解耦&#xff1a;使用消息队列避免模块间的直接调用。将所需共享的数据放在消息队列中&#xff0c;对于新增的业务模块&#xff0c;只要对该类消息感兴趣就可以订阅该消息&#xff0c;对原有系统无影响&#xff0c;降低了…

防范化解灾害风险,科技筑牢安全城墙

气象灾害&#xff1a;大气圈变异活动会对人类生命财产和国民经济及国防建设等造成的直接或间接损害。我国气象灾害种类繁多&#xff0c;不仅包括台风、暴雨、冰雹、大风、雷暴、暴风雪等天气灾害&#xff0c;还包括干旱、洪涝、持续高温、雪灾等气候灾害。此外&#xff0c;与气…

Docker中部署监控

Docker概念 一、部署Prometheus+grafana环境 1.1 、部署Prometheus+grafana环境 docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 lhrbest/lhrprometheus:1.01.2 、创建镜…

【分布式事务】Seata 之 @GlobalTransactional 在TM侧的核心逻辑

文章目录 一、概述二、GlobalTransactional核心逻辑三、GlobalTransactional核心源码解读四、事务能力的启停运行期的开关变更 一、概述 Seata 依赖 Spring 的注解机制&#xff0c;实现声明式事务&#xff0c;即开发者给 Bean 使用GlobalTransactional注解 &#xff0c;Seata …

深度学习03-卷积神经网络(CNN)

简介 CNN&#xff0c;即卷积神经网络&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一种常用于图像和视频处理的深度学习模型。与传统神经网络相比&#xff0c;CNN 有着更好的处理图像和序列数据的能力&#xff0c;因为它能够自动学习图像中的特征&…

GIS 根据投影坐标点获取投影坐标所属的投影坐标系EPSG

什么是EPSG? EPSG&#xff08;The European Petroleum Survey Group,官网 http://www.epsg.org/&#xff09;维护着空间参照对象的数据集&#xff0c;OGC标准中空间参照系统的SRID&#xff08;Spatial Reference System Identifier&#xff09;与EPSG的空间参照系统ID相一致。…

冒泡数组实现和冒泡数组的改进以及插入法排序

概念 在数组排序的过程中&#xff0c;每次比较相邻的两个数&#xff0c;并且把大的数放在后面 例如{1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9&#xff0c;2&#xff0c;4&#xff0c;6&#xff0c;8&#xff0c;10} 实现 #include<iostream> using names…

修改ro.debuggable用于调试安卓应用

一.Root 网上有很多root教程,这里推荐: 玩机必看&#xff01;带你入坑安卓刷机&#xff0c;小白也能看懂的ROOT基础指南来啦&#xff01; 很详细的介绍了Root的原理和方法,强烈推荐使用Magisk工具 可以使用命令adb shell getprop ro.debuggable查看ro.debuggable的值 二.Magi…

[MYSQL / Mariadb]数据库学习-表结构、键值(普通索引、主键、外键)

数据库学习-表结构、键值 回顾数据类型表结构字段约束条件&#xff08;限制字段赋值的&#xff09;例&#xff0c;建表并设置约束条件设置default列为0 修改表结构例添加新字段&#xff0c;并设置位置。修改字段类型change 修改字段名注意&#xff1a;在修改字段名或字段类型时…

Java中的 stop the world是什么?

一、概述&#xff1b; 从字面上讲&#xff0c;就是停止这个世界&#xff0c;看到这个字眼&#xff0c;就觉得这是可怕的事情&#xff0c;那到底什么是stop-the-world&#xff1f; stop-the-world&#xff0c;简称 STW&#xff0c;指的是 GC 事件发生过程中&#xff0c;会产生…

面试题30天打卡-day26

1、什么是 AOP&#xff1f;Spring AOP 和 AspectJ AOP 有什么区别&#xff1f;有哪些实现 AOP 的方式&#xff1f; AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面编程&#xff09;是一种编程思想&#xff0c;可以在不修改原有业务逻辑代码的情况下&#xf…

srs 直播连麦环境搭建

一、简介 二、修改conf/rtc.conf 三、两个客户端加入房间 四、合流 4.1分别拉流尝试 4.2合流推流 4.3拉取合流 一、简介 直播连麦是指在one2one或one2many进行音视频通话&#xff0c;此时把他们的音视频流合在一起&#xff0c;通过rtmp等协议推送给大量用户做直播。 因此首选需…

Java面试(3)基础语法

基础语法 1. 标识符和关键字的区别是什么&#xff1f; 在我们编写程序的时候&#xff0c;需要大量地为程序、类、变量、方法等取名字&#xff0c;于是就有了 标识符 。简单来说&#xff0c; 标识符就是一个名字 。 有一些标识符&#xff0c;Java 语言已经赋予了其特殊的含义…

python带你用最简单嘚词云图分析出最热话题

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 平常我们爬的评论、弹幕等等&#xff0c;数量又多又密&#xff0c;根本看不过来&#xff0c; 这时候数据分析的作用来了&#xff0c; 今天我们就试试用Python根据这些数据&#xff0c;来绘制词云图进行热词分析。 目录…

JUC-线程Callable使用与FutureTask源码阅读

JUC-线程Callable使用与FutureTask源码阅读 Callable简单使用 带返回值的线程(实现implements Callable<返回值类型>)&#xff0c;使用示例 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Fut…

STC32G12K128单片机的 moubus-rtu 主机测试工程

简介 STC32G12K128 是STC 推出的一款32位的 C251 的单片机。最近拿到一块官方申请的 屠龙刀-STC32G开发板&#xff0c;就用它的提供的库函数&#xff0c;查考安富莱提供的 modbus 例程移植了一个 modbus-rtu 主站的工程。 modbus-rtu host 移植注意点 modbus-rtu 功能配置 …

MapReduce序列化【用户流量使用统计】

目录 什么是序列化和反序列化&#xff1f; 序列化 反序列化 为什么要序列化&#xff1f; 序列化的主要应用场景 MapReduce实现序列化 自定义bean对象实现Writable接口 1.实现Writable接口 2.无参构造 3.重写序列化方法 4.重写反序列化方法 5.顺序一致 6.重写toStri…

您应该查看的5个ChatGPT WordPress插件

要创建免费网站&#xff1f;从易服客建站平台免费开始 500M免费空间&#xff0c;可升级为20GB电子商务网站 您应该查看的5个ChatGPT WordPress插件 发布于 2023年4月1日 ChatGPT 席卷了数字世界。作为内容创建者或营销者&#xff0c;您可能希望通过在您的网站上使用ChatGPT…