zoukankan      html  css  js  c++  java
  • k8s deployment部署单个mysql容器实例 + service

    k8s deployment yaml,源于从网上找到的一个版本

    apiVersion: apps/v1                             # apiserver的版本
    kind: Deployment                                # 副本控制器deployment,管理pod和RS
    metadata:
      name: mysql                                   # deployment的名称,全局唯一
    spec:
      replicas: 1                                   # Pod副本期待数量
      selector:
        matchLabels:                                # 定义RS的标签
          app: mysql                                # 符合目标的Pod拥有此标签
      strategy:                                     # 定义升级的策略
        type: RollingUpdate                         # 滚动升级,逐步替换的策略
      template:                                     # 根据此模板创建Pod的副本(实例)
        metadata:
          labels:
            app: mysql                              # Pod副本的标签,对应RS的Selector
        spec:
          nodeName: ysp1                            # 指定pod运行在的node
          containers:                               # Pod里容器的定义部分
            - name: mysql                           # 容器的名称
              image: mysql:5.7                      # 容器对应的docker镜像
              volumeMounts:                         # 容器内挂载点的定义部分
                - name: time-zone                   # 容器内挂载点名称
                  mountPath: /etc/localtime         # 容器内挂载点路径,可以是文件或目录
                - name: mysql-data
                  mountPath: /var/lib/mysql         # 容器内mysql的数据目录
                - name: mysql-logs
                  mountPath: /var/log/mysql         # 容器内mysql的日志目录
              ports:
                - containerPort: 3306               # 容器暴露的端口号
              env:                                  # 写入到容器内的环境容量
                - name: MYSQL_ROOT_PASSWORD         # 定义了一个mysql的root密码的变量
                  value: "456789"
          volumes:                                  # 本地需要挂载到容器里的数据卷定义部分
            - name: time-zone                       # 数据卷名称,需要与容器内挂载点名称一致
              hostPath:
                path: /etc/localtime                # 挂载到容器里的路径,将localtime文件挂载到容器里,可让容器使用本地的时区
            - name: mysql-data
              hostPath:
                path: /data/mysql/data              # 本地存放mysql数据的目录
            - name: mysql-logs
              hostPath:
                path: /data/mysql/logs              # 本地存入mysql日志的目录

    如果pod正常running,没有mysql 也是可以进入的,不过得使用命令  kubectl get pod -o wide, 然后你看到的pod ip + 上面定义的容器端口号3306。

    然后可以对接一个service,让外部访问。

    apiVersion: v1
    kind: Service
    metadata:
      name: mysql-service
    spec:
      type: NodePort
      ports:
        - port: 3306
          targetPort: 3306
          nodePort: 30006
      selector:
        app: mysql

    可以通过 kubectl get svc,查看你的service ip, 便可以通过service ip + port进行访问,但如果你用的nat虚拟机部署的,你的宿主及无法访问service ip, 上午中我也加了一个nodeport,暴露30007端口。

    那么让你的宿主机访问虚拟机ip + nodeport 也是可以访问的了。

  • 相关阅读:
    个人作业——软件工程实践总结作业
    用户调查报告
    β总结
    凡事预则立
    学习进度条
    作业八——单元测试练习(个人练习)
    作业七——“南通大学教务管理系统微信公众号” 用户体验分析
    作业六——团队作业(学生成绩录入系统设计与实现)
    作业5——需求分析(学生成绩录入系统)
    作业4.2:结对项目—— 词频统计(第二阶段)
  • 原文地址:https://www.cnblogs.com/yspworld/p/13535018.html
Copyright © 2011-2022 走看看