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

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

通过采用微服相关架构构建一套以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

一、采用的技术架构

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

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

序号 IP HostName 操作系统 K8s角色 说明
1 192.168.1.141 ks-m1 CentOS7_x64 控制节点 Kubernetes Master
2 192.168.1.142 ks-m2 CentOS7_x64 控制节点 Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
3 192.168.1.143 ks-m3 CentOS7_x64 控制节点 Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
4 192.168.1.144 ks-n1 CentOS7_x64 工作节点 Kubernetes Worker
5 192.168.1.145 ks-n2 CentOS7_x64 工作节点 Kubernetes Worker
6 192.168.2.146 ks-harbor CentOS7_x64 工作节点 Harbor服务+NFS文件服务

三、部署架构

微服架构基础设施环境平台搭建 -(一)基础环境准备_第1张图片

四、修改主机名和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

微服架构基础设施环境平台搭建 -(一)基础环境准备_第2张图片

八、修改内核参数

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集群

你可能感兴趣的:(微服务,架构,docker,kubernetes)