kubernetes 部署MySQL

部署NFS

[root@k8s-master ~]# yum -y install nfs-utils rpcbind 
[root@k8s-master ~]# systemctl enable nfs
[root@k8s-master ~]# mkdir -p /data/nfs/mysql/
[root@k8s-master ~]# vim /etc/exports
/data/nfs/mysql                 *(ro,rw,async,no_root_squash)
[root@k8s-master ~]# systemctl start nfs
[root@k8s-master ~]# chmod -R 777  /data/nfs/mysql/

创建namespace

vim database-namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: database

创建service

vim mysql-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: database
  labels:
    app: mysql
spec:
  type: ClusterIP
  ports:
    - name: mysql
      port: 3306
      protocol: TCP
      targetPort: 3306
  selector:
    app: mysql

创建pvc

vim mysql-pvc.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql
spec:
  capacity:
    storage: 50Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.1.115
    path: /data/nfs/mysql

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql
  namespace: database
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi

创建config

vim mysql-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: database
data:
  mysqld.cnf: |-
   [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    bind-address   = 127.0.0.1
    symbolic-links=0

创建deployment

vim mysql-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: database
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        imagePullPolicy: IfNotPresent
        ports:
        - name: mysql
          containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-data
        - name: config
          mountPath: /etc/mysql/mysql.conf.d
      volumes:
      - name: config
        configMap:
          name: mysql-config
      - name: mysql-data
        persistentVolumeClaim:
          claimName: mysql

执行yaml文件

## 命名空间
kubectl create -f database-namespace.yaml

## 对外暴露端口
kubectl create -f  mysql-service.yaml

## pvc持久化存储卷
kubectl create -f  mysql-pvc.yaml

## MySQL配置文件
kubectl create -f  mysql-config.yaml

## deployment服务部署
kubectl create -f  mysql-deployment.yaml

查看执行结果

查看pod

[root@k8s-master ~]# kubectl get pod -n database

NAME                     READY   STATUS    RESTARTS   AGE
mysql-8c44bb948-7z656    1/1     Running   0          40m

查看config

[root@k8s-master ~]# kubectl get configmaps -n database

NAME           DATA   AGE
mysql-config   1      39m

查看pvc

[root@k8s-master ~]# kubectl get pvc -n database

NAME    STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mysql   Bound    mysql    50Gi       RWO                           5d19h

查看service

[root@k8s-master ~]# kubectl get service -n database

NAME    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
mysql   ClusterIP   10.99.220.206   <none>        3306/TCP   5d19h
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值