kubernetes 部署 MySql和Tomcat 应用最新教程

需要您注意的是,您在通过本教程完成部署 MySql和Tomcat 应用之前,请确保您的环境已经成功安装了kubernetes和docker,否则请您移步centos 8 使用 kubeadm 安装 kubernetes 1.8.2 最新完整教程进行kubernetes和docker的安装。

本文引用的原文地址 https://www.blog-china.cn/blog/liuzaiqingshan/home/254/1591608565959 

更改docker镜像仓库为国内阿里云仓库

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1ui7q4j1.mirror.aliyuncs.com"]
}
EOF

注意,这里使用的阿里云仓库为我自己生成的仓库,如果您想使用自己的阿里云仓库,请访问阿里云官网获取,此过程需要您重启机器,或者重启docker服务

docker拉取Mysql镜像

docker查询可拉取的MySql镜像版本

docker search mysql

将返回如下内容

NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9592                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3486                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   702                                     [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   76
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   69
centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      39                                      [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   35
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   30                                      [OK]
prom/mysqld-exporter                                                              28                                      [OK]
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   25
databack/mysql-backup             Back up mysql databases to... anywhere!         20
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   19
circleci/mysql                    MySQL is a widely used, open-source relation…   19
mysql/mysql-router                MySQL Router provides transparent routing be…   16
arey/mysql-client                 Run a MySQL client from a docker container      14                                      [OK]
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   6                                       [OK]
genschsa/mysql-employees          MySQL Employee Sample Database                  5                                       [OK]
devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   3
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]
jelastic/mysql                    An image of the MySQL database server mainta…   1
widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   0                                       [OK]
monasca/mysql-init                A minimal decoupled init container for mysql    0

docker拉取mysql镜像

我将拉取MySql的5.7版本的镜像

docker pull mysql:5.7

拉取成功,将会返回如下信息

Digest: sha256:d16d9ef7a4ecb29efcd1ba46d5a82bda3c28bd18c0f1e3b86ba54816211e1ac4
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker拉取tomcat镜像

docker查看可拉取的tomcat镜像

docker search tomcat

此将返回如下内容

NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   2746                [OK]
tomee                         Apache TomEE is an all-Apache Java EE certif…   79                  [OK]
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   54                                      [OK]
bitnami/tomcat                Bitnami Tomcat Docker Image                     34                                      [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      28
consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              17                                      [OK]
cloudesire/tomcat             Tomcat server, 6/7/8                            15                                      [OK]
aallam/tomcat-mysql           Debian, Oracle JDK, Tomcat & MySQL              13                                      [OK]
arm32v7/tomcat                Apache Tomcat is an open source implementati…   10
rightctrl/tomcat              CentOS , Oracle Java, tomcat application ssl…   6                                       [OK]
maluuba/tomcat7-java8         Tomcat7 with java8.                             5
unidata/tomcat-docker         Security-hardened Tomcat Docker container.      4                                       [OK]
amd64/tomcat                  Apache Tomcat is an open source implementati…   2
jelastic/tomcat               An image of the Tomcat Java application serv…   2
arm64v8/tomcat                Apache Tomcat is an open source implementati…   2
ppc64le/tomcat                Apache Tomcat is an open source implementati…   1
camptocamp/tomcat-logback     Docker image for tomcat with logback integra…   1                                       [OK]
99taxis/tomcat7               Tomcat7                                         1                                       [OK]
oobsri/tomcat8                Testing CI Jobs with different names.           1
i386/tomcat                   Apache Tomcat is an open source implementati…   1
secoresearch/tomcat-varnish   Tomcat and Varnish 5.0                          0                                       [OK]
picoded/tomcat7               tomcat7 with jre8 and MANAGER_USER / MANAGER…   0                                       [OK]
cfje/tomcat-resource          Tomcat Concourse Resource                       0
appsvc/tomcat                                                                 0
s390x/tomcat                  Apache Tomcat is an open source implementati…   0

docker拉取Tomcat镜像

我将拉取Tomcat的8版本的镜像

docker pull tomcat:8

拉取成功,返回如下信息

Digest: sha256:bb59f86923e098ad54f485853e8f8859e2243cfceae762cccc2e5460ab006237
Status: Downloaded newer image for tomcat:8
docker.io/library/tomcat:8

kubernetes部署tomcat

kubernetes创建Tomcat rc

首先在你的服务器上创建tomcat-rc.yaml文件,并将下面内容复制进去

apiVersion: v1      # 描述RC对象的版本是v1
kind: ReplicationController    # 我现在在声明RC对象
metadata:     # metadata中的是对此RC对象描述信息
  name: myweb-tomcat      # 此RC对象在gpf-first命名空间中名为myweb-tomcat-1,同一个命名空间中的命名一定是不同的
  namespace: gpf-first  # 使用gpf-first命名空间
spec:     # spec中是对RC对象的具体描述
  replicas: 1    # 我要创建5个副本,单位当然是pod
  selector:      # 选择器,用来选择对象的
    app: myweb    # 我选择了标签为app: myweb的pod
  template:     # 模版,以下用来描述创建的pod的模版
    metadata:   # 对pod模版描述的元数据
      labels:      # 给以下的东西打上标签,以让selector来选择
        app: myweb   # 给pod模版打上app: myweb这样的标签
    spec:             # 对pod模版的具体描述
      containers:         # 以下就是要放入pod模版中的容器了
      - image: docker.io/tomcat:8    # 选择镜像
        name: myweb         # 容器名
        imagePullPolicy: Never  #不使用远程镜像
        resources:           # 给该容器分配的资源大小
          limits:
            cpu: "0.5"   # CPU大小
            memory: 1Gi  # 内存大小
        ports:         # 容器端口号
        - containerPort: 8080         
        env:          # 给该容器设置环境变量,这里就可以将mysql与我们的tomcat连接
        - name: MYSQL_SERVICE_HOST
          value: 'mysql'
        - name: MYSQL_SERVICE_PORT
          value: '3306'

在服务器上上述文件所在目录执行以下命令

kubectl create -f tomcat-rc.yaml

此将成功创建一个tomcat 的pod

在服务器上创建tomcat-service.yaml(服务发现),并将下面内容复制进去

apiVersion: v1
kind: Service   # 对象是service
metadata:
  name: myweb # 此对象在命名空间中的名称
  namespace: gpf-first  # 使用gpf-first命名空间
spec:
  ports:
  - name: myweb-svc  # 端口名称,Service是必须指定端口名称的
    # 重点在于三个端口的区别,容器有端口,Service有端口,node也有真实的端口号,这里我们将这三者关联起来
    port: 8080 # Service的端口号
    targetPort: 8080  # 容器暴露的端口号
    nodePort: 80  # node的真实端口号
  selector:
    app: myweb   # Service选择了标签为app: myweb的pod
  type: NodePort

内容不再解释

创建tomcat 的服务发现和负载均衡

kubectl create -f tomcat-service.yaml

此步将创建了一个对集群外暴露80端口的tomcat应用pod

此时你将可以通过如下url访问到你的tomcat应用

http://你的物理机/虚拟机ip

注意,是物理机/虚拟机的ip,而非svc的ip

1、注意,如果你的主机报如下错误

The Service "myweb" is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range. The range of valid ports is 30000-32767

这是因为node默认的端口范围为30000-32767,可以修改端口范围以让node允许此端口

vim /etc/kubernetes/manifests/kube-apiserver.yaml

找到 --service-cluster-ip-range 这一行,在这一行的下一行增加 如下内容

- --service-node-port-range=1-65535

记得重启哦

2、如果报如下错误

node(s) had taints that the pod didn't tolerate.

请执行如下命令

kubectl taint nodes --all node-role.kubernetes.io/master-

kubernetes部署MySql

kubernetes创建Mysql rc

首先在你的服务器上创建mysql-rc.yaml文件,并将下面内容复制进去

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb-mysql
  namespace: gpf-first
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
        containers:
        - image: docker.io/mysql:5.7
          imagePullPolicy: Never  #不使用远程镜像
          name: mysql
          resources:
            limits:
              cpu: "0.3"
              memory: 0.8Gi
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: "root#dba1"

在服务器上上述文件所在目录执行以下命令

kubectl create -f mysql-rc.yaml
此将成功创建一个mysql的pod

在服务器上创建mysql-service.yaml(服务发现),并将下面内容复制进去

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: gpf-first
spec:
  ports:
  - name: mysql-svc
    port: 3306
    targetPort: 3306
    nodePort: 31101
  selector:
    app: mysql
  type: NodePort

此步将创建了一个对集群内暴露3306端口的Mysql应用pod

此时你将可以在tomat中部署应用时,通过该mysql的svc的ip+3306端口进行访问

你可能感兴趣的:(kubernetes)