无头服务---创建三个mysql实例每个实例数据持久化到本地
1.先创建三个pv切记注释掉storageClassName项
[root@k8s-master pv]# cat mysql.pv.yaml apiVersion: v1kind: PersistentVolumemetadata: name: pv-nfs-pv05 #创建的pv名称可创建多个. namespace: mt-math #属于的命名空间spec: capacity: storage: 200M #创建的pv容量为1G accessModes: - ReadWriteMany #pv的访问模式:可读可写可挂在多个节点 persistentVolumeReclaimPolicy: Retain #回收策略 #storageClassName: pv-nfs-mysql nfs: #创建的pv数据来源 path: /NFS/pv05 #数据源目录 server: 192.168.0.14 #数据源ip---apiVersion: v1kind: PersistentVolumemetadata: name: pv-nfs-pv06 #创建的pv名称可创建多个. namespace: mt-math #属于的命名空间spec: capacity: storage: 200M #创建的pv容量为1G accessModes: - ReadWriteMany #pv的访问模式:可读可写可挂在多个节点 persistentVolumeReclaimPolicy: Retain #回收策略 #storageClassName: pv-nfs-mysql nfs: #创建的pv数据来源 path: /NFS/pv06 #数据源目录 server: 192.168.0.14 #数据源ip---apiVersion: v1kind: PersistentVolumemetadata: name: pv-nfs-pv07 #创建的pv名称可创建多个. namespace: mt-math #属于的命名空间spec: capacity: storage: 200M #创建的pv容量为1G accessModes: - ReadWriteMany #pv的访问模式:可读可写可挂在多个节点 persistentVolumeReclaimPolicy: Retain #回收策略 #storageClassName: pv-nfs-mysql nfs: #创建的pv数据来源 path: /NFS/pv07 #数据源目录 server: 192.168.0.14 #数据源ip
创建无头服务配置文件每一个实例数据持久化, 这里就需要使用volumeClaimTemplates自动创建PVC
cat mysql5.7.yaml #创建第一个无头服务mysql#################apiVersion: v1kind: Servicemetadata: labels: app: db-service name: db-service namespace: mt-mathspec: ports: - name: db-service port: 3306 clusterIP: None selector: app: wylpod-mysql---apiVersion: apps/v1kind: StatefulSetmetadata: annotations: labels: app: wylpod-mysql name: wylpod-mysql namespace: mt-mathspec: serviceName: "db-service" replicas: 3 selector: matchLabels: app: wylpod-mysql template: metadata: annotations: labels: app: wylpod-mysql spec: containers: - image: "mysql:5.7" imagePullPolicy: IfNotPresent name: wylpod-mysql env: - name: MYSQL_ROOT_PASSWORD value: "123456" - name: MYSQL_USER value: "admin" - name: MYSQL_PASSWORD value: "123456" ports: - containerPort: 3306 protocol: TCP name: wylpod-mysql volumeMounts: - name: mysql-pvc mountPath: /var/lib/mysql############################################ volumeClaimTemplates: - metadata: name: mysql-pvc namespace: mt-math spec: accessModes: [ "ReadWriteMany" ] resources: requests: storage: 200M############################################ #volumes: #设置挂载 #- name: mysql-pvc #挂载数据节点名称 # persistentVolumeClaim: #服务类型 # claimName: pvc-nfs-pvc03 #数据源名称#######################################################################StatefulSet需要一个无头服务来定义DNS域名,需要在StatefulSet之前创建好#无头服务它没有群集IP,如果解析Headless Service的DNS域名,则返回的是该服务对应的全部Pod的端点列表#无头服务需要在Headless Service的基础上又为StatefulSet控制的每个Pod实力创建了一个DNS域名,这个域名的格式为: ${podname}.${headless service name} 即:POd名称.service名称#配置volumeClaimTemplates自动创建PVC(在GCE中会自动创建kubernetes.io/gce-pd类型的volume)切记创建pv时注释storageClassName项.#####################################################################
执行开始创建并查看状态:
kubectl create -f mysql.pv.yaml kubectl create -f mysql5.7.yaml kubectl get all -n mt-math
查看数据持久化是否成功
登录mysql测试访问
dns解析测试:需要提前安装coredns插件