目录:

Kubernetes-yaml详解

Kubernetes 支持 YAML 和 JSON 格式管理资源对象
JSON 格式:主要用于 api 接口之间消息的传递
YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读
 

YAML 语法格式:

●大小写敏感
●使用缩进表示层级关系
●不支持Tab键制表符缩进,只使用空格缩进
●缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
●符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等
●“---”表示YAML格式,一个文件的开始,用于分隔文件间
●“#”表示注释
 

查看 api 资源版本标签

 1 kubectl api-versions
2 admissionregistration.k8s.io/v1beta1
3 apiextensions.k8s.io/v1beta1
4 apiregistration.k8s.io/v1
5 apiregistration.k8s.io/v1beta1
6 apps/v1 #如果是业务场景一般首选使用 apps/v1
7 apps/v1beta1 #带有beta字样的代表的是测试版本,不用在生产环境中
8 apps/v1beta2
9 authentication.k8s.io/v1
10 authentication.k8s.io/v1beta1
11 authorization.k8s.io/v1
12 authorization.k8s.io/v1beta1
13 autoscaling/v1
14 autoscaling/v2beta1
15 autoscaling/v2beta2
16 batch/v1
17 batch/v1beta1
18 certificates.k8s.io/v1beta1
19 coordination.k8s.io/v1beta1
20 events.k8s.io/v1beta1
21 extensions/v1beta1
22 networking.k8s.io/v1
23 policy/v1beta1
24 rbac.authorization.k8s.io/v1
25 rbac.authorization.k8s.io/v1beta1
26 scheduling.k8s.io/v1beta1
27 storage.k8s.io/v1
28 storage.k8s.io/v1beta1
29 v1

deployment模板

写一个yaml文件demo(deployment)
 1 mkdir /opt/demo
2 cd demo/
3
4 vim nginx-deployment.yaml
5 apiVersion: apps/v1 #指定api版本标签
6 kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
7 metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
8 name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的
9 labels: #定义Deployment资源标签
10 app: nginx
11 spec: #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
12 replicas: 3 #定义副本数量
13 selector: #定义标签选择器
14 matchLabels: #定义匹配标签
15 app: nginx #需与 .spec.template.metadata.labels 定义的标签保持一致
16 template: #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
17 metadata:
18 labels: #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
19 app: nginx
20 spec:
21 containers: #定义容器属性
22 - name: nginx #定义一个容器名,一个 - name: 定义一个容器
23 image: nginx:1.15.4 #定义容器使用的镜像以及版本
24 ports:
25 - containerPort: 80 #定义容器的对外的端口
//创建资源对象
kubectl create -f nginx-deployment.yaml

//查看创建的pod资源

1 kubectl get pods -o wide
2 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
3 nginx-deployment-d55b94fd-29qk2 1/1 Running 0 7m9s 172.17.36.4 192.168.80.12 <none>
4 nginx-deployment-d55b94fd-9j42r 1/1 Running 0 7m9s 172.17.36.3 192.168.80.12 <none>
5 nginx-deployment-d55b94fd-ksl6l 1/1 Running 0 7m9s 172.17.26.3 192.168.80.11 <none>

service模板

 
创建service服务对外提供访问并测试
 1 vim nginx-service.yaml
2 apiVersion: v1
3 kind: Service
4 metadata:
5 name: nginx-service
6 labels:
7 app: nginx
8 spec:
9 type: NodePort
10 ports:
11 - port: 80
12 targetPort: 80
13 selector:
14 app: nginx
//创建资源对象
kubectl create -f nginx-service.yaml 
//查看创建的service
1 kubectl get svc
2 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
3 kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 16d
4 nginx-service NodePort 10.0.0.119 <none> 80:35680/TCP 14s
//在浏览器输入 nodeIP:nodePort 即可访问

 详解k8s中的port:
●port
port 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service
 
●nodePort
nodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个 service。
 
●targetPort
targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器。
 
●containerPort
containerPort 是 Pod 内部容器的端口,targetPort 映射到 containerPort。

查询帮助和格式指令

 1 //kubectl run --dry-run=client 打印相应的 API 对象而不执行创建
2 kubectl run nginx-test --image=nginx --port=80 --dry-run=client
3 kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client
4
5 //查看生成yaml格式
6 kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml
7 kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml
8
9 //查看生成json格式
10 kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json
11 kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json
12
13 //使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
14 kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml
15 kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-deploy.yaml

Pod模板

 1 vim nginx-test.yaml
2 apiVersion: v1
3 kind: Pod
4 metadata:
5 creationTimestamp: null #删除
6 labels:
7 run: nginx-test
8 name: nginx-test
9 spec:
10 containers:
11 - image: nginx
12 name: nginx-test
13 ports:
14 - containerPort: 80
15 resources: {} #删除
16 dnsPolicy: ClusterFirst
17 restartPolicy: Always
18 status: {} #删除
//将现有的资源生成模板导出
kubectl get svc nginx-service -o yaml
 
//保存到文件中
kubectl get svc nginx-service -o yaml > my-svc.yaml
 
//查看字段帮助信息,可一层层的查看相关资源对象的帮助信息
kubectl explain deployments.spec.template.spec.containers
kubectl explain pods.spec.containers

写yaml太累怎么办?

●用 --dry-run 命令生成
kubectl run my-deploy --image=nginx --dry-run=client -o yaml > my-deploy.yaml
 
●用get命令导出
kubectl get svc nginx-service -o yaml > my-svc.yaml
kubectl edit svc nginx-service #复制配置,再粘贴到新文件
 

yaml文件的学习方法:

(1)多看别人(官方)写的,能读懂
(2)能照着现场的文件改着用
(3)遇到不懂的,善用kubectl explain ... 命令查

deployment.yaml文件详解

  1 apiVersion: extensions/v1beta1   #接口版本
2 kind: Deployment #接口类型
3 metadata:
4 name: cango-demo #Deployment名称
5 namespace: cango-prd #命名空间
6 labels:
7 app: cango-demo #标签
8 spec:
9 replicas: 3
10 strategy:
11 rollingUpdate: ##由于replicas为3,则整个升级,pod个数在2-4个之间
12 maxSurge: 1 #滚动升级时会先启动1个pod
13 maxUnavailable: 1 #滚动升级时允许的最大Unavailable的pod个数
14 template:
15 metadata:
16 labels:
17 app: cango-demo #模板名称必填
18 sepc: #定义容器模板,该模板可以包含多个容器
19 containers:
20 - name: cango-demo #镜像名称
21 image: swr.cn-east-2.myhuaweicloud.com/cango-prd/cango-demo:0.0.1-SNAPSHOT #镜像地址
22 command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ] #启动命令
23 args: #启动参数
24 - '-storage.local.retention=$(STORAGE_RETENTION)'
25 - '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'
26 - '-config.file=/etc/prometheus/prometheus.yml'
27 - '-alertmanager.url=http://alertmanager:9093/alertmanager'
28 - '-web.external-url=$(EXTERNAL_URL)'
29 #如果command和args均没有写,那么用Docker默认的配置。
30 #如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。
31 #如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。
32 #如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。
33 imagePullPolicy: IfNotPresent #如果不存在则拉取
34 livenessProbe: #表示container是否处于live状态。如果LivenessProbe失败,LivenessProbe将会通知kubelet对应的container不健康了。随后kubelet将kill掉container,并根据RestarPolicy进行进一步的操作。默认情况下LivenessProbe在第一次检测之前初始化值为Success,如果container没有提供LivenessProbe,则也认为是Success;
35 httpGet:
36 path: /health #如果没有心跳检测接口就为/
37 port: 8080
38 scheme: HTTP
39 initialDelaySeconds: 60 ##启动后延时多久开始运行检测
40 timeoutSeconds: 5
41 successThreshold: 1
42 failureThreshold: 5
43 readinessProbe:
44 httpGet:
45 path: /health #如果没有心跳检测接口就为/
46 port: 8080
47 scheme: HTTP
48 initialDelaySeconds: 30 ##启动后延时多久开始运行检测
49 timeoutSeconds: 5
50 successThreshold: 1
51 failureThreshold: 5
52 resources: ##CPU内存限制
53 requests:
54 cpu: 2
55 memory: 2048Mi
56 limits:
57 cpu: 2
58 memory: 2048Mi
59 env: ##通过环境变量的方式,直接传递pod=自定义Linux OS环境变量
60 - name: LOCAL_KEY #本地Key
61 value: value
62 - name: CONFIG_MAP_KEY #局策略可使用configMap的配置Key,
63 valueFrom:
64 configMapKeyRef:
65 name: special-config #configmap中找到name为special-config
66 key: special.type #找到name为special-config里data下的key
67 ports:
68 - name: http
69 containerPort: 8080 #对service暴露端口
70 volumeMounts: #挂载volumes中定义的磁盘
71 - name: log-cache
72 mount: /tmp/log
73 - name: sdb #普通用法,该卷跟随容器销毁,挂载一个目录
74 mountPath: /data/media
75 - name: nfs-client-root #直接挂载硬盘方法,如挂载下面的nfs目录到/mnt/nfs
76 mountPath: /mnt/nfs
77 - name: example-volume-config #高级用法第1种,将ConfigMap的log-script,backup-script分别挂载到/etc/config目录下的一个相对路径path/to/...下,如果存在同名文件,直接覆盖。
78 mountPath: /etc/config
79 - name: rbd-pvc #高级用法第2中,挂载PVC(PresistentVolumeClaim)
80 #使用volume将ConfigMap作为文件或目录直接挂载,其中每一个key-value键值对都会生成一个文件,key为文件名,value为内容,
81 volumes: # 定义磁盘给上面volumeMounts挂载
82 name: log-cache
83 emptyDir: {}
84 name: sdb #挂载宿主机上面的目录
85 hostPath:
86 path: /any/path/it/will/be/replaced
87 name: example-volume-config # 供ConfigMap文件内容到指定路径使用
88 configMap:
89 name: example-volume-config #ConfigMap中名称
90 items:
91 key: log-script #ConfigMap中的Key
92 path: path/to/log-script #指定目录下的一个相对路径path/to/log-script
93 key: backup-script #ConfigMap中的Key
94 path: path/to/backup-script #指定目录下的一个相对路径path/to/backup-script
95 name: nfs-client-root #供挂载NFS存储类型
96 nfs:
97 server: 10.42.0.55 #NFS服务器地址
98 path: /opt/public #showmount -e 看一下路径
99 name: rbd-pvc #挂载PVC磁盘
100 persistentVolumeClaim:
101 claimName: rbd-pvc1 #挂载已经申请的pvc磁盘
102 Service yaml文件详解
103
104 apiVersion: v1
105 kind: Service
106 matadata: #元数据
107 name: string #service的名称
108 namespace: string #命名空间
109 labels: #自定义标签属性列表
110 - name: string
111 annotations: #自定义注解属性列表
112 - name: string
113 spec: #详细描述
114 selector: [] #label selector配置,将选择具有label标签的Pod作为管理
115 #范围
116 type: string #service的类型,指定service的访问方式,默认为
117 #clusterIp
118 clusterIP: string #虚拟服务地址
119 sessionAffinity: string #是否支持session
120 ports: #service需要暴露的端口列表
121 - name: string #端口名称
122 protocol: string #端口协议,支持TCP和UDP,默认TCP
123 port: int #服务监听的端口号
124 targetPort: int #需要转发到后端Pod的端口号
125 nodePort: int #当type = NodePort时,指定映射到物理机的端口号
126 status: #当spce.type=LoadBalancer时,设置外部负载均衡器的地址
127 loadBalancer: #外部负载均衡器
128 ingress: #外部负载均衡器
129 ip: string #外部负载均衡器的Ip地址值
130 hostname: string #外部负载均衡器的主机名

Service yaml文件详解

 1 apiVersion: v1
2 kind: Service
3 matadata: #元数据
4 name: string #service的名称
5 namespace: string #命名空间
6 labels: #自定义标签属性列表
7 - name: string
8 annotations: #自定义注解属性列表
9 - name: string
10 spec: #详细描述
11 selector: [] #label selector配置,将选择具有label标签的Pod作为管理
12 #范围
13 type: string #service的类型,指定service的访问方式,默认为
14 #clusterIp
15 clusterIP: string #虚拟服务地址
16 sessionAffinity: string #是否支持session
17 ports: #service需要暴露的端口列表
18 - name: string #端口名称
19 protocol: string #端口协议,支持TCP和UDP,默认TCP
20 port: int #服务监听的端口号
21 targetPort: int #需要转发到后端Pod的端口号
22 nodePort: int #当type = NodePort时,指定映射到物理机的端口号
23 status: #当spce.type=LoadBalancer时,设置外部负载均衡器的地址
24 loadBalancer: #外部负载均衡器
25 ingress: #外部负载均衡器
26 ip: string #外部负载均衡器的Ip地址值
27 hostname: string #外部负载均衡器的主机名

Pod yaml文件详解

 1 apiVersion: v1            #必选,版本号,例如v1
2 kind: Pod #必选,Pod
3 metadata: #必选,元数据
4 name: string #必选,Pod名称
5 namespace: string #必选,Pod所属的命名空间
6 labels: #自定义标签
7 - name: string #自定义标签名字
8 annotations: #自定义注释列表
9 - name: string
10 spec: #必选,Pod中容器的详细定义
11 containers: #必选,Pod中容器列表
12 name: string #必选,容器名称
13 image: string #必选,容器的镜像名称
14 imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略:Alawys表示总是下载镜像,IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
15 command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令
16 args: [string] #容器的启动命令参数列表
17 workingDir: string #容器的工作目录
18 volumeMounts: #挂载到容器内部的存储卷配置
19 name: string #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
20 mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符
21 readOnly: boolean #是否为只读模式
22 ports: #需要暴露的端口库号列表
23 name: string #端口号名称
24 containerPort: int #容器需要监听的端口号
25 hostPort: int #容器所在主机需要监听的端口号,默认与Container相同
26 protocol: string #端口协议,支持TCP和UDP,默认TCP
27 env: #容器运行前需设置的环境变量列表
28 name: string #环境变量名称
29 value: string #环境变量的值
30 resources: #资源限制和请求的设置
31 limits: #资源限制的设置
32 cpu: string #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
33 memory: string #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
34 requests: #资源请求的设置
35 cpu: string #Cpu请求,容器启动的初始可用数量
36 memory: string #内存清楚,容器启动的初始可用数量
37 livenessProbe: #对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可
38 exec: #对Pod容器内检查方式设置为exec方式
39 command: [string] #exec方式需要制定的命令或脚本
40 httpGet: #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
41 path: string
42 port: number
43 host: string
44 scheme: string
45 HttpHeaders:
46 name: string
47 value: string
48 tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式
49 port: number
50 initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒
51 timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
52 periodSeconds: 0 #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
53 successThreshold: 0
54 failureThreshold: 0
55 securityContext:
56 privileged:false
57 restartPolicy: [Always | Never | OnFailure] #Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod
58 nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定
59 imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定
60 name: string
61 hostNetwork:false #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
62 volumes: #在该pod上定义共享存储卷列表
63 name: string #共享存储卷名称 (volumes类型有很多种)
64 emptyDir: {} #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
65 hostPath: string #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
66 path: string #Pod所在宿主机的目录,将被用于同期中mount的目录
67 secret: #类型为secret的存储卷,挂载集群与定义的secre对象到容器内部
68 scretname: string
69 items:
70 key: string
71 path: string
72 configMap: #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
73 name: string
74 items:
75 key: string

Kubernetes-yaml详解的更多相关文章

  1. k8s之yaml详解

    k8s之yaml详解 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数 ...

  2. spring boot 配置文件properties和YAML详解

    spring boot 配置文件properties和YAML详解 properties中配置信息并获取值. 1:在application.properties配置文件中添加: 根据提示创建直接创建. ...

  3. kubernetes之kubectl与YAML详解1

    k8s集群的日志,带有组件的信息,多看日志. kubectl命令汇总 kubectl命令汇总 kubectl命令帮助信息 [root@mcwk8s04 ~]# kubectl -h kubectl c ...

  4. kubernetes 控制器详解【持续完善中】

    目录 资源创建详解 一:Pod及常用参数 1.简介 2.模板 3.删除pod 4.设置Pod主机名 5.镜像拉取策略(ImagePullPolicy) 二:RC 1.简介 2.模板 三:Deploym ...

  5. Kubernetes Controller详解

    运行容器化应用是Kubernetes最重要的核心功能.为满足不同的业务需要,Kubernetes提供了多种Controller,主要包括Deployment.DaemonSet.Job.CronJob ...

  6. Kubernetes ConfigMap详解,多种方式创建、多种方式使用

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 配置是程序绕不开的话题,在Kubernetes中使用ConfigMap来配置,它本质其实就是键值对.本文讲解如何 ...

  7. k8s入坑之路(2)kubernetes架构详解

    每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题.   基于 Kubernetes 作为容器集群的管理平 ...

  8. 【转载】k8s入坑之路(2)kubernetes架构详解

    每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平台被 ...

  9. YAML详解

    1   YAML简介 YAML,即YAML Ain’t Markup Language的缩写,YAML 是一种简洁的非标记语言.YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁 ...

  10. Kubernetes Pod详解

    目录 基本概念 pod资源配额 容器的健康检查 静态pod 基本概念 Pod是kubernetes集群中最基本的资源对象.每个pod由一个或多个业务容器和一个根容器(Pause容器)组成.Kubern ...

随机推荐

  1. P17_总结

    能够知道如何创建小程序项目 微信开发者工具的使用.appID 的获取 能够清楚小程序项目的基本组成结构 app.js.app.json.app.wxss.pages 文件夹 能够知道小程序页面由几部分 ...

  2. 懂九转大肠的微软New Bing 内测申请教程

    最近微软的New Bing开放内测了,网上已经有拿到内测资格的大佬们对比了ChatGPT和New Bing.对比结果是New Bing比ChatGPT更强大.来看看具体对比例子吧 1.时效性更强 Ch ...

  3. 在react项目如何捕获错误

    在React项目是如何捕获错误的? 一.是什么 错误在我们日常编写代码是非常常见的 举个例子,在react项目中去编写组件内JavaScript代码错误会导致 React 的内部状态被破坏,导致整个应 ...

  4. 安装KaLi操作系统并优化

    安装KaLi操作系统并优化 1. 开启ROOT登录 安装操作系统跳过,下面直接做系统优化,方便以后使用! 有两种方法,可以实现开机以root身份登录kali系统. 第一种方法如下: 在终端下输入所需命 ...

  5. 国内“谁”能实现chatgpt,短期穷出的类ChatGPT简评(算法侧角度为主),以及对MOSS、ChatYuan给出简评,一文带你深入了解宏观技术路线。

    1.ChatGPT简介[核心技术.技术局限] ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序 ,于202 ...

  6. .Net Core 配置源码学习 (一)

    一 背景 相比.Net Framework , .NET Core的配置系统 ,有一些明显的优点 ,如: 1 支持更丰富的配置源 2 读取配置时, 可以用相同的方式读取, 并且非常方便 3 修改配置后 ...

  7. Django中admin的一些知识点

    Django中的Admin站点管理: 内容发布的部分由网站的管理员负责,包括查看.添加.修改.删除数据: Django项目中默认启用Admin管理站点:列表页选项, 编辑页选项, 重写模板. #准备工 ...

  8. MySQL联合索引的创建规则

    1.索引应该按照最常用于查询的列的顺序创建.这样可以最大程度地提高查询性能. 2.如果查询中包含的列与索引中的列顺序不一致,则无法使用索引.因此,如果您有多个查询,每个查询都包含不同的列,那么最好为每 ...

  9. Bouncy Castle密码算法库

    Bouncy Castle密码算法库 一.开发背景 Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.因为 ...

  10. MySQL单节点变更为主从节点

    环境说明: 操作系统:CentOS 7.6 数据库版本:5.7 为了实验方便,同一台主机部署了两个实例,3306.3307 部署方案可参考 MySQL多实例部署:mysql多实例部署 - 太阳的阳ฅ ...