美文网首页
《kubernetes权威指南第四版》mysql-tomcat集

《kubernetes权威指南第四版》mysql-tomcat集

作者: JohnYuCN | 来源:发表于2020-06-06 07:49 被阅读0次

    原书出版于2019年6月,但版本仍较低,案例也较为过时,本文针对k8s v1.18;原书案例坑较多,本文加以修正。

    一. Deployment of mysql

    1. 文件名:mysql-deploy.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
           - name: mysql
             image: mysql:5.7
             ports:
             - containerPort: 3306
             env:
             - name: MYSQL_ROOT_PASSWORD
               value: "123456"
    
    1. 更改的内容如下:
    • kind 由原ReplicationController变化为Deployment,相应的apiVersion也变为apps/v1,同时selector也变为matchLabels。
    • image变为mysql:5.7 否则在连接时会出现事务异常(mysql:lastest镜像是8)
    1. 启动:
    kubectl create -f mysql-deploy.yaml
    

    二、Service of mysql

    1. 文件名:mysql-svc.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: mysql
    spec:
      ports:
        - port: 3306
      selector:
        app: mysql
    
    1. 说明如下:
    • selector会选择由mysql-deploy.yaml->template->labels创造的标签名为app:mysql的pod。
    1. 启动
    kubectl create -f mysql-svc.yaml
    

    三、Deployment of myweb

    1. 文件名:myweb-deploy.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myweb
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: myweb
      template:
        metadata:
          labels:
            app: myweb
        spec:
          containers:
            - name: myweb
              image: kubeguide/tomcat-app:v1
              ports:
                - containerPort: 8080
              env:
                - name: MYSQL_SERVICE_NAME
                  value: "mysql"
    
    1. 更改的内容如下:
    • kind 由原ReplicationController变化为Deployment,相应的apiVersion也变为apps/v1,同时selector也变为matchLabels。
    • env 添加一个环境变量MYSQL_SERVICE_NAME,指向到mysql-svc.yaml中的metadata->name上(原书将未设置此项,采用了Service的默认IP,此坑较深)。
    1. 运行:
    kubectl create -f myweb-deploy.yaml
    

    四、Service of myweb

    1. 文件名:myweb-svc.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: myweb
    spec:
      type: NodePort
      ports:
        - port: 8080
          nodePort: 30001
      selector:
        app: myweb
    
    1. 运行:
    kubectl create -f mysql-svc.yaml
    

    五、复位脚本:

    #!/bin/bash
    kubectl delete -f mysql-svc.yaml
    kubectl delete -f mysql-deploy.yaml
    kubectl delete -f myweb-svc.yaml
    kubectl delete -f myweb-deploy.yaml
    
    kubectl create -f mysql-deploy.yaml
    kubectl create -f mysql-svc.yaml
    kubectl create -f myweb-deploy.yaml
    kubectl create -f myweb-svc.yaml
    

    六、汇总到一起

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
           - name: mysql
             image: mysql:5.7
             ports:
             - containerPort: 3306
             env:
             - name: MYSQL_ROOT_PASSWORD
               value: "123456"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mysql
    spec:
      ports:
        - port: 3306
      selector:
        app: mysql
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myweb
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: myweb
      template:
        metadata:
          labels:
            app: myweb
        spec:
          containers:
            - name: myweb
              image: kubeguide/tomcat-app:v1
              ports:
                - containerPort: 8080
              env:
                - name: MYSQL_SERVICE_NAME
                  value: "mysql"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: myweb
    spec:
      type: NodePort
      ports:
        - port: 8080
          nodePort: 30001
      selector:
        app: myweb
    

    相关文章

      网友评论

          本文标题:《kubernetes权威指南第四版》mysql-tomcat集

          本文链接:https://www.haomeiwen.com/subject/aajvzhtx.html