文档首页> 教育> 华为云区域教育云平台解决方案> 实施步骤> 区级管理平台环境部署(含数据中心部署)
更新时间:2024-05-07 GMT+08:00
分享

区级管理平台环境部署(含数据中心部署)

区级管理平台环境部署

配置要求:

  • 硬件配置要求

    服务器标准16C/32G内存,磁盘空间要求300G以上的存储空间。

    内部服务器需要互通,防火墙关闭,SElinux关闭。

  • 网络设备配置要求

    内部服务器之间所有端口要求互通,带宽百兆以上,接入服务器需要有ELB或VIP。

  • 存储设备配置要求

    磁盘空间要求300G以上的存储空间。根目录下40G以上,挂载盘300G以上。

  • 服务器设备的配置要求

    服务器时间要求一致,端口要求互通。

  • 部署工具

    远程ssh工具:xshell。

    浏览器:Chrome 96.0.4664.110。

安装docker、kubernetes(所有k8s节点)

安装前先卸载冲突的软件

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

安装docker

cd docker && yum install -y *.rpm
mkdir -pv /data/docker
ln -s /data/docker/ /var/lib/docker

安装docker-compose

cd ../docker-compose &&  yum install -y *.rpm
正常情况下docker和docker-compose就已经安装完成了

可通过查看docker确认是否安装成功

docker -v

系统初始化(所有服务器都要操作)

  • 创建用户

    系统运行需要创建uid和gid为2049的admin用户,先使用id admin查看是否有admin用户,有admin用户的话用户ID的组ID是多少

    如果没有admin用户,则创建admin用户

    groupadd -g 2049 admin
    useradd -g 2049 -G docker admin

    如果已存在admin用户且UID和GID不为2049的话,需更改UID和GID

    usermod -u 2049 admin && groupmod -g 2049 admin && gpasswd -a admin docker

    创建admin用户后UID不为2049的情况,先使用下面命令更改下/home/admin目录的权限,

    chown admin.admin /home/admin/ -R

    再更改用户UID即可

    usermod -u 2049 admin

    查看admin用户是否创建成功

    id admin
    uid=2049(admin) gid=2049(admin) groups=2049(admin),946(docker)
    图1 查看

  • 系统调优

    关闭防火墙

    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    systemctl disable --now firewalld
    chmod a+x /etc/rc.d/rc.local
    图2 关闭防火墙

    配置iptables的ACCEPT规则

    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

    关闭swap分区

    swapoff -a
    sed -ri 's/.*swap.*/#&/' /etc/fstab

    创建docker服务相关目录

    mkdir -pv /data/{backup,cds,contacts,logs,tinyfs,webapps}
    chown admin.admin /data/{backup,cds,contacts,logs,tinyfs,webapps}

    修改docker服务配置文件

    mkdir -p /etc/docker
    cat > /etc/docker/daemon.json <<EOF
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m"
    }
    }
    EOF

    使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。

    日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。

    systemctl daemon-reload
    systemctl restart docker
    systemctl enable --now docker
    systemctl enable --now crond

    设置定时清理日志任务

    echo "0 0 */1 * *  find /data/logs/ -name '*202*'  -mtime +1 |xargs gzip &" >> /var/spool/cron/root
    echo "0 0 */1 * *  find /data/logs/ -name '*202*' -mtime +30 |xargs rm -fr &" >> /var/spool/cron/root

    安装常用服务

    yum install -y net-tools vim wget gdb lsof sysstat iotop wget lrzsz tree unzip nfs-utils  tcpdump telnet ntpdate yum-utils

调整内核参数

开启网桥模式,可将网桥的流量传递给iptables链

关闭IPv6协议

cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.IPv6.conf.all.disable_IPv6=1
net.IPv4.ip_forward=1
EOF

加载参数

sysctl --system

配置k8s镜像源(所有节点)

定义kubernetes源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=“镜像源地址”/kubernetes-el7-版本号
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=“镜像源地址”/yum-key.gpg
EOF

安装kubeadm,kubelet和kubectl(所有节点)

yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3

开机自启kubelet

systemctl enable kubelet.service

启动k8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

systemctl start kubelet.service

初始化master节点(master节点)

kubeadm init \
--apiserver-advertise-address=IP地址 \
--image-repository “镜像源地址”/ \
--kubernetes-version v版本号 \
--service-cidr= IP地址/12 \
--pod-network-cidr= IP地址/16

如果要重新初始化集群状态:kubeadm reset,然后再进行上述操作记得保存好最后的 kubeadm join的信息node节点加入集群需要token!!!

也可以利用kubeadm token create --print-join-command 利用kubeadm命令重新生成token,node 节点加入集群需要token

使用kubectl管理工具(master节点)

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看是否成功,等待一会,同时可发现像etc,controller,scheduler等组件都以pod的方式安装成功

kubectl cluster-info

node节点操作(所有node节点)

在每个节点上执行,加入集群

kubeadm join 10.13.16.61:6443 --token q7glri.mjm2gperz347n99e --discovery-token-ca-cert-hash sha256:869fcc7584845d937a94f2a159a062565b64ac56b33207e2300d61fa2f98e2a7

安装flannel网络插件

下载flannel插件

wget https://gitcode.net/mirrors/flannel-io/flannel/-/blob/v0.20.2/Documentation/kube-flannel.yml

修改字段

net-conf.json: |
{
"Network": "10.244.0.0/16", ####初始化master节点时设置一样就行 将ip段修改和上文初始化master节点一样即可
"Backend": {
"Type": "vxlan"
}
}

发布网络

kubectl apply -f kube-flannel.yml

查看所有pod

kubectl get pods -A

如果出现Running则表示正常,如果出现Init:0/1执行以下命令,修改 flannel 插件文件,这个版本比较低,高版本 k8s 尽量选择一些高一些的版本 flannel

sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.12.0-amd64#g" kube-flannel.yaml

检查各节点健康状态

查询master是否正常

kubectl get cs

如果状态为unhealthy

vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml

将- --port=0注释掉

部署StorageClass

安装nfs

yum install -y nfs-utils rpcbind

手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs

systemctl start rpcbind && systemctl enable rpcbind
systemctl start nfs && systemctl enable nfs

查看 rpcbind 端口是否开启,rpcbind 服务默认使用 tcp 端口 111

netstat -anpt | grep rpcbind

创建共享目录,并授权

mkdir /root/data/nfs
chmod 777 /root/data/nfs

编辑 exports 文件

vim /etc/exports
/root/data/nfs *(rw,no_root_squash,sync)

保存退出

:wq

重新export一次

exportfs -rv

查看本机的共享目录

showmount -e
cd /root
kubectl apply -f storageClass.yaml
图3 查看

数据库连接工具(在ops服务器上部署)

  • 配置数据库源
    sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

  • 安装数据库连接工具
    sudo yum --enablerepo=mysql80-community install mysql-community-server --nogpgcheck

    启动mysql服务

    service mysqld start
    图4 启动

    查看root临时密码

    grep "A temporary password" /var/log/mysqld.log

    登录数据库

    mysql -uroot -p"数据库密码"

    修改数据库密码并授权

    ALTER USER 'root'@'localhost' IDENTIFIED BY '数据库密码';
    create user 'root'@'%' identified by '数据库密码' ;
    grant all privileges on *.* to  'root'@'%' with grant option ;
    flush privileges;

  • 启动redis
    图5 启动redis
    kubectl apply -f redis-1.yaml

    进入容器检查redis

    redis-cli -h redis哨兵服务器的地址 -p 6379  -a 'redis的密码' info Sentinel

部署seata服务

cd /root
kubectl apply -f seata-server.yaml

服务部署

  • 修改配置文件

    将本地的 user-center-admin.jar复制到的/rhCloud/sjzx/java下

    将本地的 developer-center-0.0.1-SNAPSHOT.jar复制到的/rhCloud/kfzzx/java下

    将本地的 organization-center-0.0.1-SNAPSHOT.jar复制到的/rhCloud/zzzx/java下

    将本地的 permissions-center-0.0.1-SNAPSHOT.jar复制到的/rhCloud/qxzx/java下

    将本地的 authentication-center-0.0.1-SNAPSHOT.jar复制到的/rhCloud/rzzx/java下

    修改/rhCloud/qxzx/java/java.yaml、Dockerfile配置文件

    修改/rhCloud/zzzx/java/java.yaml、Dockerfile配置文件

    修改/rhCloud/kfzzx/java/java.yaml、Dockerfile配置文件

    修改/rhCloud/sjzx/java/java.yaml、Dockerfile配置文件

    修改/rhCloud/rzzx/java/java.yaml、Dockerfile配置文件

  • Dockerfile
    图6 包名称

    修改nginx配置

    配置文件在/rhCloud/rzzx/nginx/nginx-configmap.yaml

    配置文件在/rhCloud/qxzx/nginx/nginx-configmap.yaml

    配置文件在/rhCloud/zzzx/nginx/nginx-configmap.yaml

    配置文件在/rhCloud/kfzzx/nginx/nginx-configmap.yaml

    配置文件在/rhCloud/sjzx/nginx/nginx-configmap.yaml

    配置文件在/rhCloud/zhjy/nginx/nginx-configmap.yaml

    图7 修改nginx配置
    kubectl apply -f nginx-configmap.yaml

    修改前端挂载目录

    配置文件在/rhCloud/rzzx/nginx/nginx-pvc.yaml

    配置文件在/rhCloud/qxzx/nginx/nginx-pvc.yaml

    配置文件在/rhCloud/zzzx/nginx/nginx-pvc.yaml

    配置文件在/rhCloud/kfzzx/nginx/nginx-pvc.yaml

    配置文件在/rhCloud/sjzx/nginx/nginx-pvc.yaml

    配置文件在/rhCloud/zhjy/nginx/nginx-pvc.yaml

    图8 修改前端挂载目录
    kubectl apply -f nginx-pvc.yaml

    修改nginx.yaml项目配置文件

    配置文件在/rhCloud/rzzx/nginx/nginx.yaml

    配置文件在/rhCloud/qxzx/nginx/nginx.yaml

    配置文件在/rhCloud/zzzx/nginx/nginx.yaml

    配置文件在/rhCloud/kfzzx/nginx/nginx.yaml

    配置文件在/rhCloud/sjzx/nginx/nginx.yaml

    配置文件在/rhCloud/zhjy/nginx/nginx.yaml

    图9 修改nginx.yaml项目配置文件
    kubectl apply -f nginx.yaml

  • 启动服务

    以数据中心为例:

    后端部署方式

    cd /rhCloud/sjzx/java
    bash restart.sh

    前端部署方式

    将项目打好的包dist包放在对应目录下

    cd /root/data/nfs
    kfzzx-nginx-web-pvc-8db0b2d4-bbe6-46c5-88a6-7e2363b1d033
    qxzx-nginx-web-pvc-5d0ccd38-3f7d-4d45-90de-a85fcf78b955
    rzzx-nginx-web-pvc-24131e74-ca7a-4634-81ec-47e3f71278a8
    sjzx-nginx-web-pvc-69c8c590-8580-40e6-a70b-a8752c40f582
    zhjy-nginx-web-pvc-7402ccbb-f828-4247-bc25-f07f9a1d5e5e
    zzzx-nginx-web-pvc-58e3122b-cbfd-4822-8328-716bccc8f27b
    图10 前端部署方式

分享:

    相关文档

    相关产品