网站文案标准格式优化大师有用吗

当前位置: 首页 > news >正文

网站文案标准格式,优化大师有用吗,免费p2p网站建设,抖店推广背景 前面搭建好了 Kubernetes 集群与私有镜像仓库#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手#xff0c;按照 MySQL #xff0c; Nacos #xff0c; Redis #xff0c; Nginx #xff0c; Gateway #xff0c; Auth #xff0c;…背景 前面搭建好了 Kubernetes 集群与私有镜像仓库终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手按照 MySQL Nacos Redis Nginx Gateway Auth System 的顺序来部署 ruoyi-cloud 微服务应用。 部署一个服务前需要明确它是有状态服务还是无状态服务这里 MySQL Nacos Redis Nginx 当做有状态服务StatefulSet来部署而 Gateway Auth System 这些微服务作为无状态服务Deployment来部署。 这一次对全部服务采用 YAML 文件的方式来进行部署这有助于理解K8S组织管理资源的风格后续我们可以借助开源的容器平台eg KubeSphere 来进行可视化的服务部署。不过手动编写 YAML 文件有一个问题那就是当面对较多的微服务时工作量较大基本成了体力活有个好消息是我们可以使用 Kubernetes 官方提供的 kompose 工具实现对 dokcer-compose 的 yaml 到 K8S 的 yaml 的转换。 另外为了保证后续在实际生产环境下各组件的稳定与可靠我们限定了所有基础镜像的版本。 MySQL: 8.0Nacos: 2.2.3Redis: 7.2.3Nginx: 1.25.3 虚机资源 共用到了三台虚机1台作为 Master 节点2台 Worker 节点。 主机名IP说明k8s-master172.16.201.25主节点k8s-node1172.16.201.26工作节点k8s-node2172.16.201.27工作节点 [rootk8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 37h v1.20.9 k8s-node1 Ready none 35h v1.20.9 k8s-node2 Ready none 35h v1.20.9系统环境 [rootk8s-master ~]# uname -a Linux k8s-master 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux [rootk8s-master ~]# cat /proc/version Linux version 3.10.0-1160.71.1.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Tue Jun 28 15:37:28 UTC 2022 [rootk8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)YAML转换 ruoyi-cloud 项目本身提供了一个使用 docker-compose 部署的配置文件以及所有依赖服务镜像的构建脚本是在项目根目录的 docker 目录下可参考Docker容器化部署若依微服务ruoyi-cloud项目。 先将这个 docker 目录上传到 Kubernetes 的主节点然后使用 kompose 将 dokcer-compose 的 yaml 转换为 K8S 的 yaml 。 curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.0/kompose-linux-amd64 -o kompose chmod x kompose mv ./kompose /usr/local/bin/kompose [rootk8s-master docker]# cd /opt/docker [rootk8s-master docker]# kompose convert对于自动转换后的 YAML 我们做简单的修改后即可应用部署。下面是 MySQL 的 YAML 配置文件做了合并和微调。 ruoyi-mysql-ns-sc-pv-pvc.yaml apiVersion: v1 kind: Namespace metadata:name: ruoyi-basic—apiVersion: v1 kind: PersistentVolume metadata:name: ruoyi-mysql-data-pvlabels:pv: ruoyi-mysql-data-pv spec:capacity: storage: 5GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/mysql/datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- k8s-node1—apiVersion: v1 kind: PersistentVolume metadata:name: ruoyi-mysql-log-pvlabels:pv: ruoyi-mysql-log-pv spec:capacity: storage: 5GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/mysql/lognodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- k8s-node1 —apiVersion: v1 kind: PersistentVolumeClaim metadata:name: ruoyi-mysql-data-pvcnamespace: ruoyi-basic spec:accessModes:- ReadWriteOnceresources:requests:storage: 10MistorageClassName: local-storageselector:matchLabels:pv: ruoyi-mysql-data-pv —apiVersion: v1 kind: PersistentVolumeClaim metadata:name: ruoyi-mysql-log-pvcnamespace: ruoyi-basic spec:accessModes:- ReadWriteOnceresources:requests:storage: 2GistorageClassName: local-storageselector:matchLabels:pv: ruoyi-mysql-log-pv—apiVersion: v1 kind: ConfigMap metadata:name: ruoyi-mysql-configmapnamespace: ruoyi-basic data:my-custom.cnf: |[mysqld]# handle error this is incompatible with sql_modeonly_full_group_bysql_modeSTRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONsocket/var/run/mysqld/mysqld.sock[client]socket/var/run/mysqld/mysqld.sockNote: 这里使用 local-storage 的 StorageClass 并使用本地磁盘的方式创建使用 PV 实际建议使用 NFS 。 ruoyi-mysql-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:annotations:kompose.cmd: kompose convertkompose.version: 1.26.0 (40646f47)labels:io.kompose.service: ruoyi-mysqlname: ruoyi-mysqlnamespace: ruoyi-basic spec:replicas: 1selector:matchLabels:io.kompose.service: ruoyi-mysqltemplate:metadata:annotations:kompose.cmd: kompose convertkompose.version: 1.26.0 (40646f47)labels:io.kompose.service: ruoyi-mysqlspec:containers:- args:- –innodb-buffer-pool-size80M- –character-set-serverutf8mb4- –collation-serverutf8mb4_unicode_ci- –default-time-zone8:00- –lower-case-table-names1env:- name: MYSQL_DATABASEvalue: ruoyi-cloud- name: MYSQL_ROOT_PASSWORDvalue: you-guessimage: mysql:8.0name: ruoyi-mysqlports:- containerPort: 3306volumeMounts:- mountPath: /var/lib/mysqlname: ruoyi-mysql-data-pvc- mountPath: /var/log/mysqlname: ruoyi-mysql-log-pvc- mountPath: /etc/mysql/conf.dname: ruoyi-mysql-configrestartPolicy: Alwaysvolumes:- name: ruoyi-mysql-data-pvcpersistentVolumeClaim:claimName: ruoyi-mysql-data-pvc- name: ruoyi-mysql-log-pvcpersistentVolumeClaim:claimName: ruoyi-mysql-log-pvc- name: ruoyi-mysql-configconfigMap:name: ruoyi-mysql-configmapruoyi-mysql-service.yaml apiVersion: v1 kind: Service metadata:annotations:kompose.cmd: kompose convertkompose.version: 1.26.0 (40646f47)labels:io.kompose.service: ruoyi-mysqlname: ruoyi-mysqlnamespace: ruoyi-basic spec:ports:- name: 3306port: 3306targetPort: 3306nodePort: 30306selector:io.kompose.service: ruoyi-mysqltype: NodePort部署MySQL Note: 本次部署 MySQL 时用了 Deployment 运行的pod名称会有个随机后缀实际生产建议使用 StatefulSet pod名称后缀为0更合适。

创建NameSpace、StorageClass、PV、PVC

[rootk8s-master mysql]# kubectl apply -f ruoyi-mysql-ns-sc-pv-pvc.yaml namespace/ruoyi-basic created persistentvolume/ruoyi-mysql-data-pv created persistentvolume/ruoyi-mysql-log-pv created persistentvolumeclaim/ruoyi-mysql-data-pvc created persistentvolumeclaim/ruoyi-mysql-log-pvc created configmap/ruoyi-mysql-configmap created# 部署MySQL [rootk8s-master mysql]# kubectl apply -f ruoyi-mysql-deployment.yaml deployment.apps/ruoyi-mysql created# 创建MySQL服务 [rootk8s-master mysql]# kubectl apply -f ruoyi-mysql-service.yaml service/ruoyi-mysql created# 查看PV信息 [rootk8s-master mysql]# kubectl get pv -owide NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE docker-registry-pv 5Gi RWX Retain Bound docker-registry/docker-registry-pvc local-storage 26h Filesystem ruoyi-mysql-data-pv 5Gi RWX Retain Bound ruoyi-basic/ruoyi-mysql-data-pvc local-storage 5m16s Filesystem ruoyi-mysql-log-pv 5Gi RWX Retain Bound ruoyi-basic/ruoyi-mysql-log-pvc local-storage 5m16s Filesystem# 获取配置信息 [rootk8s-master mysql]# kubectl get cm -n ruoyi-basic NAME DATA AGE kube-root-ca.crt 1 17m ruoyi-mysql-configmap 1 17m# 可通过以下命令查看编辑MySQL的配置 [rootk8s-master ~]# kubectl edit cm ruoyi-mysql-configmap -n ruoyi-basic# 查看MySQL日志 [rootk8s-master ~]# kubectl logs ruoyi-mysql-8c779d94c-b7r9n -n ruoyi-basic# 查看所有PodMySQL就绪 [rootk8s-master mysql]# kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE docker-registry docker-registry-9bc898786-l477q 11 Running 1 17h kube-system calico-kube-controllers-577f77cb5c-hv29w 11 Running 2 3d22h kube-system calico-node-4fkrs 11 Running 0 3d22h kube-system calico-node-d4tqq 11 Running 2 3d22h kube-system calico-node-sdmm6 11 Running 4 3d22h kube-system etcd-k8s-master 11 Running 9 5d9h kube-system kube-apiserver-k8s-master 11 Running 9 5d9h kube-system kube-controller-manager-k8s-master 11 Running 9 5d9h kube-system kube-proxy-4789z 11 Running 0 5d9h kube-system kube-proxy-7mt7k 11 Running 5 5d9h kube-system kube-proxy-lqtpz 11 Running 2 5d9h kube-system kube-scheduler-k8s-master 11 Running 10 5d9h kubernetes-dashboard dashboard-metrics-scraper-79c5968bdc-j9bnv 11 Running 0 3d22h kubernetes-dashboard kubernetes-dashboard-658485d5c7-pq7z8 11 Running 0 3d22h ruoyi-basic ruoyi-mysql-8c779d94c-b7r9n 11 Running 0 4m3s# MySQL对外暴露了端口用于测试 [rootk8s-master mysql]# kubectl get svc -n ruoyi-basic -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ruoyi-mysql NodePort 10.96.58.67 none 3306:30306/TCP 4s io.kompose.serviceruoyi-mysql验证MySQL服务 可以直接进入容器通过MySQL自带的命令行客户端进行测试连接mysql -uroot -p。可以使用busybox验证集群内部是否可以正常连接MySQL数据库。由于暴露了服务端口30306也可以通过远程的数据库客户端进行连接测试。

进入mysql的服务测试客户端连接mysql -uroot -p

kubectl exec -it pod/ruoyi-mysql-8c779d94c-b7r9n -n ruoyi-basic – /bin/bash# 使用Busybox进行数据库连接测试以服务名的方式 [rootk8s-master ]# kubectl exec -it pod/busybox – /bin/sh / # telnet ruoyi-mysql.ruoyi-basic.svc.cluster.local:3306 J 8.0.27,_xJ{C~;f*,mqlcaching_sha2_password远程测试 MySQL 服务状态 导入数据 若依提供了微服务用到的数据库脚本在 MySQL 服务部署完成后可以通过 SQL 文件自行导入脚本。 小总结 这次我们先是借助 kompose 工具实现对 dokcer-compose 的 yaml 到 K8S 的 yaml 的转换经过简单的加工后即可应用部署通过以上操作成功将 MySQL 8.0 部署到了 K8S 集群下一步我们安装下 Nacos v2.2.3 。 If you have any questions or any bugs are found, please feel free to contact me. Your comments and suggestions are welcome!