k8s-之无头服务初体验

无头服务---创建三个mysql实例每个实例数据持久化到本地

1.先创建三个pv切记注释掉storageClassName项

[root@k8s-master pv]# cat mysql.pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  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: v1
kind: PersistentVolume
metadata:
  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: v1
kind: PersistentVolume
metadata:
  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: v1
kind: Service
metadata:
  labels:
    app: db-service
  name: db-service
  namespace: mt-math
spec:
  ports:
  - name: db-service
    port: 3306
  clusterIP: None
  selector:
    app: wylpod-mysql
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
  labels:
    app: wylpod-mysql
  name: wylpod-mysql
  namespace: mt-math
spec:
  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

6486f8a4f31c5d1bea788c149368088dff9.jpgf1669e84e05f477407760f88591158e912c.jpg

查看数据持久化是否成功

12dddcedc646cbc0a031ddfc22d01770155.jpg

登录mysql测试访问

c2e8701c286b5e98df740ed6518b0fa83c6.jpg

dns解析测试:需要提前安装coredns插件

61bbc32be8fdd4f8621797a29cd8a6d6d2e.jpg

e0310a36932370a28ffe8d6443640653dcd.jpg

转载于:https://my.oschina.net/wangyunlong/blog/3056226

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值