一、所有节点安装nfs-utils,master节点成为nfs服务端

[root@k8s-master nfs]# yum install -y nfs-utils
[root@k8s-node-1 ~]# yum install -y nfs-utils
[root@k8s-node-2 ~]# yum install -y nfs-utils

二、创建共享目录

[root@k8s-master nfs]# mkdir /data

三、创建配置文件

[root@k8s-master nfs]# cat /etc/exports
/data  10.0.0.0/24(rw,async,no_root_squash,no_all_squash)

四、启动服务

[root@k8s-master nfs]# systemctl restart rpcbind nfs-utils
[root@k8s-master nfs]# systemctl enable rpcbind nfs-utils

五、定义mysql-deploy.yaml 文件

[root@k8s-master tomcat]# cat mysql-deploy.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      volumes:
      - name: mysql
        nfs:
          server: 10.0.0.11
          path: /data/tomcat-mysql
      nodeName: 10.0.0.12
      containers:
        - name: mysql
          image: 10.0.0.11:5000/mysql:5.7
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: '123456'

六、定义mysql-svc.yml 文件

[root@k8s-master tomcat]# cat mysql-svc.yml 
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: mysql

七、定义tomcat-deploy.yaml 文件

[root@k8s-master tomcat]# cat tomcat-deploy.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myweb
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: myweb
    spec:
      nodeName: 10.0.0.12
      containers:
        - name: myweb
          image: 10.0.0.11:5000/tomcat-app:v2
          ports:
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_HOST
            value: '10.254.55.178'
          - name: MYSQL_SERVICE_PORT
            value: '3306'

八、定义tomcat-svc.yaml 文件

[root@k8s-master tomcat]# cat tomcat-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30009
  selector:
    app: myweb

九、启动服务

[root@k8s-master tomcat]# kubectl delete -f .
deployment "mysql" deleted
service "mysql" deleted
deployment "myweb" deleted
service "myweb" deleted

十、查看调度节点

[root@k8s-master tomcat]# kubectl get all -o wide
NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/mysql   1         1         1            1           6s
deploy/myweb   1         1         1            1           6s

NAME             CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE       SELECTOR
svc/kubernetes   10.254.0.1       <none>        443/TCP          5h        <none>
svc/mysql        10.254.40.200    <none>        3306/TCP         6s        app=mysql
svc/myweb        10.254.196.212   <nodes>       8080:30009/TCP   6s        app=myweb

NAME                  DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)                       SELECTOR
rs/mysql-51675339     1         1         1         6s        mysql          10.0.0.11:5000/mysql:5.7       app=mysql,pod-template-hash=51675339
rs/myweb-3785031611   1         1         1         6s        myweb          10.0.0.11:5000/tomcat-app:v2   app=myweb,pod-template-hash=3785031611

NAME                        READY     STATUS    RESTARTS   AGE       IP            NODE
po/mysql-51675339-6n9hn     1/1       Running   0          6s        172.18.99.3   10.0.0.12
po/myweb-3785031611-qzjxn   1/1       Running   0          6s        172.18.99.2   10.0.0.12

十一、访问10.0.0.12:30009

十二、服务端data目录下有数据库文件,node2节点上有nfs的挂载

[root@k8s-master tomcat]# ls /data/tomcat-mysql/
auto.cnf  HPE_APP  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys
[root@k8s-node-1 ~]# df -Th|grep nfs
10.0.0.11:/data/tomcat-mysql nfs4       48G  4.2G   44G   9% /var/lib/kubelet/pods/0ac3d7ef-a7b4-11ea-84fc-000c29661bc0/volumes/kubernetes.io~nfs/mysql

十三、删除数据库资源,会立即起新的资源,数据不丢失

[root@k8s-master tomcat]# kubectl delete po/mysql-51675339-6n9hn 

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注