• 创建mysql的yaml文件

    cat << eof > mysql.yaml
    apiVersion: apps/v1                          # 通过kubectl explain deployment命令查看版本
    kind: Deployment                             # 资源类型
    metadata:
      name: mysql-deployment                     # 资源名称
      namespace: mysql                           # 指定命名空间
    spec:
      replicas: 1                                # 控制器下的pod数
      selector:
        matchLabels:
          app: mysql                             # 这是控制器用来控制pod的标签
      template:
        metadata:
          labels:
            app: mysql                           # pod的标签
        spec:
          containers:
            - name: mysql                        # 容器名
              image: mysql:8.0.20                # 容器镜像
              env:                               # mysql环境参数
              - name: MYSQL_ROOT_PASSWORD        # 指定ROOT用户密码
                value: "@Qv110119"
              ports:                             # 容器暴露的端口
              - name: mysql
                containerPort: 3306
    #          volumeMounts:                      # 容器内的被挂载目录
    #          - name: mysql-data
    #            mountPath: /var/lib/mysql
    #          - name: mysql-conf
    #            mountPath: /etc/my.cnf
    #      volumes:                               # 声明volume(宿主机目录), name为logs-volume
    #      - name: mysql-data
    #        nfs:
    #          server: 192.168.174.30             # nfs服务器地址
    #          path: /root/nfs/mysql/data         # 共享文件路径(服务器地址)            
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mysql-nodeport
      namespace: mysql
    spec:
      selector:
        app: mysql                               # 服务通过此标签连接deployment资源来暴露端口
      type: NodePort                             # 服务类型:NodePort
      ports:                                     # 不指定NodePort端口就会自动分配,(默认的取值范围是:30000-32767)
      - protocol: TCP
        port: 3306
        targetPort: 3306
    eof
  • 创建mysq应用:

    kubectl apply -f mysql.yaml
  • 查看pod:

    [root@master mysql]# kubectl get deployment,pod,svc -n mysql
    NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/mysql-deployment   1/1     1            1           7m57s
    deployment.apps/nginx              1/1     1            1           15d
    ​
    NAME                                   READY   STATUS    RESTARTS   AGE
    pod/mysql-deployment-b68b5b8bc-jps5c   1/1     Running   0          7m57s
    pod/nginx-6867cdf567-phn5l             1/1     Running   1          148m
    ​
    NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    service/kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP          15d
    service/mysql-nodeport   NodePort    10.98.118.107    <none>        3306:30160/TCP   7m57s
    service/nginx            NodePort    10.103.194.224   <none>        80:30105/TCP     15d
  • 远程连接:

    [root@localhost ~]# mysql -h192.168.174.30 -P30160 -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 8
    Server version: 8.0.20 MySQL Community Server - GPL
    ​
    Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    ​
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    ​
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    ​
    mysql> 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐