一个简单的Kubernetes应用部署示例

说明

咱们经过一个示例来演示一下kubernetes部署应用的基本配置。node

这个示例相对比较简单,就是一个tomcat应用加上一个mysql数据库mysql

在tomcat里运行一个简单的webappp,这个app会访问Mysql获取数据。并展现在页面上。为了演示和简化的目的,只要程序正确链接到了数据库上,它就会自动完成对应的table的建立与初始化数据的准备工做。因此当咱们经过浏览器访问此应用的时候,就会显示一个表格的页面,数据则来自数据库。web

配置

咱们在/root/k8s-yaml/目录下建立一个webapp的目录,在这个目录里面建立四个文件:sql

.
├── mysql-dm.yaml
├── mysql-svc.yaml
├── myweb-dm.yaml
└── myweb-svc.yaml

这四个文件的内容分别以下:数据库

mysql-dm.yaml:api

apiVersion: apps/v1beta1
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"

mysql-svc.yaml:浏览器

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql``

myweb-dm.yaml:tomcat

apiVersion: apps/v1beta1
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_HOST
          value: 'mysql'
        - name: MYSQL_SERVICE_PORT
          value: '3306

myweb-svc.yaml:app

apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30001
  selector:
    app: myweb

咱们经过以下方式启动:webapp

kubectl apply -f ./

访问:

http://$node_ip:30001/demo

相关文章
相关标签/搜索