美文网首页
《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