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

建网站公司哪个比较好汉中建设工程招标信息网

建网站公司哪个比较好,汉中建设工程招标信息网,西安做网站的哪家好,微信公众号推广2元一个控制器介绍 StatefulSet#xff1a; 是Kubernetes中用于管理有状态应用的控制器。与Deployment不同#xff0c;StatefulSet用于部署和管理需要持久标识、有序部署和唯一网络标识的 Pod。典型的用例包括数据库、缓存和队列等有状态应用。#xff08;有状态服务#xff1a;单…控制器介绍 StatefulSet 是Kubernetes中用于管理有状态应用的控制器。与Deployment不同StatefulSet用于部署和管理需要持久标识、有序部署和唯一网络标识的 Pod。典型的用例包括数据库、缓存和队列等有状态应用。有状态服务单点故障整体崩溃。无状态服务单点故障不影响整体 稳定的网络标识符 StatefulSet中的每个Pod都具有稳定的网络标识符其名称遵循固定的命名模式。即Pod重新调度后其PodName和HostName不变基于Headless Service无头服务来实现。无头服务就是跳过这个4层或者7层代理直接与pod的真实Ip进行访问。正常我们通过nslookup解析到service的ip而无头服务通过解析后得到的是后端pod的ip地址有序部署 StatefulSet确保Pod按照固定顺序部署和更新。在Pod启动和停止时StatefulSet会按照定义的顺序逐个进行从而确保有序的启动和停止。即Pod是有顺序的在部署或者扩展的时候要依据定义的顺序依次进行即从0到N-1在下一个Pod运行之前的所有Pod必须都是Running和Ready状态基于init containers来实现。持久标识 StatefulSet中的每个Pod都具有持久标识符通常用于持久化存储例如持久卷。即Pod重新调度后还是能访问到相同的持久化数据基于PVC来实现。有状态服务 StatefulSet管理的Pod可以用作有状态服务。与Deployment不同StatefulSet管理的Pod具有固定的网络标识符和持久标识符因此更适合于有状态应用的需求。有序收缩有序删除即从N-1到0 从StatefulSet的特点和应用场景发现StatefulSet通过Headless Service生成可解析的DNS记录通过volumeClaimTemplates创建pvc和对应的pv绑定后定义StatefulSet来创建pod。 和Deployment相比相同的是StatefulSet和Deployment管理了基于相同容器定义的一组Pod。但和Deployment不同的是StatefulSet为它们的每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的但是不能相互替换无论怎么调度每个Pod都有一个永久不变的ID。你在StatefulSet对象中定义你期望的状态然后StatefulSet的控制器就会通过各种更新来达到那种你想要的状态。 基于StatefulSet的Mysql部署 在生产环境中数据的存储尤为重要不管什么哪一类的Mysql高可用keepalived双主MHAMMMHeartbeatDRBD基础都是Msql的主从复制。Mysql主从同步的过程第一部分就是master记录二进制日志。在每个事务更新数据完成之前master在二日志记录这些改变。MySQL将事务写入二进制日志。在事件写入二进制日志完成后master通知存储引擎提交事务。 下一步就是slave将master的binary log拷贝到它自己的中继日志。首先slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件如果已经同步了master它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。 SQL slave threadSQL从线程处理该过程的最后一步。SQL线程从中继日志读取事件并重放其中的事件而更新slave的数据使其与master中的数据一致。只要该线程与I/O线程保持一致中继日志通常会位于OS的缓存中所以中继日志的开销很小。 k8s部署mysql集群一主两从在K8s官网有示例https://kubernetes.io/zh-cn/docs/tasks/run-application/run-replicated-stateful-application/可供参考。集群读写分离读数据库通过Service服务访问。通过headless服务对数据库实现写操作同时使Slave数据库与Master数据库实现同步。 部署持久化存储 可参考https://blog.csdn.net/qq42004/article/details/137113713?spm1001.2014.3001.5502 修改StorgaeClass对象中的parameters.pathPattern: “ . P V C . n a m e s p a c e / {.PVC.namespace}/ .PVC.namespace/{.PVC.annotations.nfs.io/storage-path}” 为parameters.pathPattern: . P V C . n a m e s p a c e / {.PVC.namespace}/ .PVC.namespace/{.KaTeX parse error: Expected EOF, got } at position 9: PVC.name}̲{.PVC.annotations.nfs.io/storage-path}在mysql的Pod获取PVC后在存储后端创建的目录增加一层。否则容器创建的持久化目录都在一个目录内。 [rootlocalhost k8s]# tree -d /mnt/k8s/my /mnt/k8s/my #命名空间名称PVC.namespace ├── data-mysql-pass-0 #Pvc名称$PVC.name │ └── mysql #StatufulSet中Mountvolume中的subPaht │ ├── mysql │ ├── performance_schema │ ├── sys │ ├── test │ └── xtrabackup_backupfiles部署Service apiVersion: v1 kind: Service metadata:name: mysql-pass-svclabels: ser: mysql-ser namespace: my spec:ports:- name: mysql port: 3306clusterIP: Noneselector:tai: mysql---apiVersion: v1 kind: Service metadata:name: mysql-read-passlabels:app: mysql-ser-nodenamespace: my spec:ports:- name: mysqlport: 3306protocol: TCPnodePort: 32302targetPort: 3306selector:tai: mysql type: NodePort部署Secret、ConfigMap apiVersion: v1 kind: Secret metadata:name: mysql-secret type: Opaque data:bwk: cGFzc3dvcmQxMjM0NTY # 这里的值是密码的base64编码表示,echo -n 12345678 | base64 --- apiVersion: v1 kind: ConfigMap metadata:name: mysql-cnf-maplabels:app: mysqlnamespace: my data:primary.cnf: |[mysqld]log-binmysql-bin bind-address 0.0.0.0binlog_formatmixed log-bin-indexmysql-bin.index lower_case_table_names1relay-log-index slave-relay-bin.indexreplica.cnf: |[mysqld]bind-address 0.0.0.0super-read-onlylog-binmysql-bin relay-logrelay-bin relay-log-indexslave-relay-bin.index lower_case_table_names1 部署StatefulSet apiVersion: apps/v1 kind: StatefulSet metadata:name: mysql-passlabels:da: mysqlnamespace: my spec:minReadySeconds: 20replicas: 3revisionHistoryLimit: 20selector:matchLabels:tai: mysqlserviceName: mysql-pass-svc#定义StatefulSet和Service的headless服务关联template:metadata:annotations: description: Mysql containers for Master-slave replicationname: mysql-containerslabels:tai: mysqlnamespace: mysqlspec:initContainers:- name: init-mysqlimage: mysql:5.7imagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-secretkey: bwkcommand:- bash- -c- |set -ex# 基于 Pod 序号生成 MySQL 服务器的 ID。[[ $HOSTNAME ~ -([0-9])$ ]] || exit 1ordinal${BASH_REMATCH[1]}echo [mysqld] /mnt/conf.d/server-id.cnf# 添加偏移量以避免使用 server-id0 这一保留值。echo server-id$((100 $ordinal)) /mnt/conf.d/server-id.cnf# 将合适的 conf.d 文件从 config-map 复制到 emptyDir。if [[ $ordinal -eq 0 ]]; thencp /mnt/config-map/primary.cnf /mnt/conf.d/elsecp /mnt/config-map/replica.cnf /mnt/conf.d/fi volumeMounts:- name: confmountPath: /mnt/conf.d- name: confg-mapmountPath: /mnt/config-map- name: clone-mysqlimage: docker.io/yizhiyong/xtrabackup:latestimagePullPolicy: IfNotPresent command:- bash- -c- |set -ex# 如果已有数据则跳过克隆。[[ -d /var/lib/mysql/mysql ]] exit 0# 跳过主实例序号索引 0的克隆。[[ hostname ~ -([0-9])$ ]] || exit 1ordinal${BASH_REMATCH[1]}#获取自动定义Pod名称的最后一个字段。即生成名称的mysql-pass-0的最后一个数字。[[ $ordinal -eq 0 ]] exit 0# 当等于0的时候推出不等于0的时候执行下面操作即从原来的对等节点克隆数据。ncat --recv-only mysql-pass-$(($ordinal-1)).mysql-pass-svc 3307 | xbstream -x -C /var/lib/mysql# 准备备份。ncat --recv-only 通过headless服务访问访问方式是pod-name.namespace.svc.cluster.localxtrabackup --prepare --target-dir/var/lib/mysqlvolumeMounts:- name: datamountPath: /var/lib/mysqlsubPath: mysql- name: confmountPath: /etc/mysql/conf.dcontainers:- name: mysqlimage: mysql:5.7imagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-secretkey: bwk- name: LANGvalue: C.UTF-8#此处定义语言环境开发会在服务获取字符编码写Dockerfile的时候可以直接变更。ports:- name: mysqlcontainerPort: 3306volumeMounts:- name: datamountPath: /var/lib/mysqlsubPath: mysql - name: confmountPath: /etc/mysql/conf.d - name: timemountPath: /etc/localtimeresources:requests:cpu: 500mmemory: 1GilivenessProbe:exec:command: - /bin/sh - -ec- -mysqladmin -uroot -p${MYSQL_ROOT_PASSWORD} PINGinitialDelaySeconds: 30periodSeconds: 10timeoutSeconds: 5readinessProbe:exec:# 检查我们是否可以通过 TCP 执行查询skip-networking 是关闭的。command:- /bin/sh- -ec - -mysql -h127.0.0.1 -uroot -p$MYSQL_ROOT_PASSWORD -eSELECT 1 initialDelaySeconds: 5periodSeconds: 2timeoutSeconds: 1- name: xtrabackupimage: docker.io/yizhiyong/xtrabackup:latestimagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: mysql-secretkey: bwkports:- name: xtrabackupcontainerPort: 3307command:- bash- -c- |set -excd /var/lib/mysql# 确定克隆数据的 binlog 位置如果有的话。if [[ -f xtrabackup_slave_info x$(xtrabackup_slave_info) ! x ]]; then# XtraBackup 已经生成了部分的 “CHANGE MASTER TO” 查询# 因为我们从一个现有副本进行克隆。(需要删除末尾的分号!)cat xtrabackup_slave_info | sed -E s/;$//g change_master_to.sql.in# 在这里要忽略 xtrabackup_binlog_info 它是没用的。rm -f xtrabackup_slave_info xtrabackup_binlog_infoelif [[ -f xtrabackup_binlog_info ]]; then# 我们直接从主实例进行克隆。解析 binlog 位置。[[ cat xtrabackup_binlog_info ~ ^(.*?)[[:space:]](.*?)$ ]] || exit 1rm -f xtrabackup_binlog_info xtrabackup_slave_infoecho CHANGE MASTER TO MASTER_LOG_FILE${BASH_REMATCH[1]},\MASTER_LOG_POS${BASH_REMATCH[2]} change_master_to.sql.infi# 检查我们是否需要通过启动复制来完成克隆。if [[ -f change_master_to.sql.in ]]; thenecho Waiting for mysqld to be ready (accepting connections)until mysql -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} -e SELECT 1; do sleep 1; doneecho Initializing replication from clone positionmysql -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} \-e $(change_master_to.sql.in), \MASTER_HOSTmysql-pass-0.mysql-pass-svc, \#访问的mysql master的Pod,此时master容器已经启动名称以及确定。MASTER_USERroot, \MASTER_PASSWORD${MYSQL_ROOT_PASSWORD}, \MASTER_CONNECT_RETRY10; \START SLAVE; || exit 1# 如果容器重新启动最多尝试一次。mv change_master_to.sql.in change_master_to.sql.orig#修改change_master_to.sql.in防止重启后再次找到文件重克隆fi# 当对等点请求时启动服务器发送备份。exec ncat --listen --keep-open --send-only --max-conns1 3307 -c \xtrabackup --backup --slave-info --streamxbstream --host127.0.0.1 --userroot --password${MYSQL_ROOT_PASSWORD} volumeMounts:- name: datamountPath: /var/lib/mysqlsubPath: mysql- name: confmountPath: /etc/mysql/conf.dresources:requests:cpu: 100mmemory: 100Mivolumes:- name: timehostPath: path: /etc/localtimetype: File- name: confemptyDir: {}- name: confg-mapconfigMap:name: mysql-cnf-mapvolumeClaimTemplates:- metadata:name: dataspec:storageClassName: nfs-stgc-deleteaccessModes: [ReadWriteOnce]resources:requests:storage: 1Gi 容器挂载路径图 StatefulSet.spec.serviceName配置headless服务名称。在容器init-mysql、mysql、xtrabackup添加环境变量配置mysql密码。clone-mysql和xtrabackup需要密码的进行修改在clone-mysql、xtrabackup访问Master的位置修改访问的主机名。挂载服务时间。 部署测试 查看Pod状态 [rootmaster my]# kubectl get pod -n my NAME READY STATUS RESTARTS AGE mysql-pass-0 2/2 Running 0 3h6m mysql-pass-1 2/2 Running 0 3h5m mysql-pass-2 2/2 Running 0 3h5m查看Service信息 kubectl describe svc mysql-pass-svc/mysql-read-pass -n my查看时间同步 kubectl exec mysql-pass-0 -c mysql -it -n my -- /bin/bash进入容器bash-4.2# date Sun Mar 31 15:29:12 CST 2024 bash-4.2# exit [rootmaster my]# date 2024年 03月 31日 星期日 15:29:15 CSTmysql select now();---------------------| now() |---------------------| 2024-03-31 15:31:10 |---------------------1 row in set (0.00 sec)测试mysql集群 [rootmaster my]# kubectl run mysql-client --imagemysql:5.7 -i --rm --restartNever --\mysql -h mysql-pass-0.mysql-pass-svc.my -uroot -p12345678 EOFCREATE DATABASE test;CREATE TABLE test.messages (message VARCHAR(250));INSERT INTO test.messages VALUES (hello);EOF If you dont see a command prompt, try pressing enter. pod mysql-client deleted [rootmaster my]# kubectl run mysql-client --imagemysql:5.7 -i -t --rm --restartNever --\mysql -h mysql-read-pass.my -uroot -p12345678 -e SELECT * FROM test.messages mysql: [Warning] Using a password on the command line interface can be insecure.---------| message |---------| hello |---------pod mysql-client deleted
http://www.zqtcl.cn/news/100444/

相关文章:

  • 网站建设首选亿企联盟做网站宣传有用吗
  • 网站建设公司行业苏州高端网站建设咨询
  • 电商平台网站开发过程江苏省建设科技发展中心网站简介
  • 空间租用 网站开发重庆手机网站推广资料
  • 新余 网站建设网站建设行业新闻
  • 做301网站打不开网上智慧团建网站
  • 四川省住房与城乡建设厅官方网站免费域名解析ip
  • 芜湖网站建设价格这么做网站原型图
  • 做传奇网站怎么弄的南京微网站开发
  • 网站建设基础教程人教版网站域名选择的原则
  • u盘做网站网站建设公司公司介绍
  • 嘉兴网站排名优化报windows wordpress 轻量级
  • html5网站开发方案海珠网站建设公
  • 津做网站建筑网课平台
  • 佛山制作手机网站汕头网站定制
  • 网站域名解释怎么做济南集团网站建设
  • 网站怎么做咨询网站开发商
  • 建立网站的第一步网站的管理系统
  • 安远做网站做宣传册网站
  • 网站建设概况君隆网站建设
  • 富源县住房和城乡建设局网站备案信息 网站名
  • 做门窗的网站宁波附近的seo推广
  • 上海网站建设解决方案怎样设计网站
  • 龙华建站公司seo研究中心怎么样
  • 网站的大图标怎么做项目网站
  • 南京网站设计机构wap网站设计方案
  • 建站点怎么做网站wordpress 重写规则
  • 泰州做网站优化服装网站建设方案ppt
  • wordpress怎么设计网站微商城科技
  • 昆山营销型网站建设旅游网页制作模板教程