前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务部署与迁移示例

服务部署与迁移示例

作者头像
星哥玩云
发布2022-09-15 21:55:47
2620
发布2022-09-15 21:55:47
举报
文章被收录于专栏:开源部署开源部署

一、服务部署与迁移示例

1、简单的部署 wordpress

通过 mysql 与 wordpress 镜像包部署持久化的 wordpress 博客网站

1.1、创建 PV
代码语言:javascript
复制
cat lnmp-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv001
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-1
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv002
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-2
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv003
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-3
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv004
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-4
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv005
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-5
    server: 192.168.1.169
1.2、部署 mysql
代码语言:javascript
复制
cat wp-mysql.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
spec:
  type: ClusterIP
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: wp-mysql
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  labels:
    app: wp-mysql
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs"
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wp-mysql
spec:
  selector:
    matchLabels:
      app: wp-mysql
  replicas: 1
  template:
    metadata:
      labels:
        app: wp-mysql
    spec:
      containers:
      - name: wp-mysql
        image: docker.io/mysql:5.7
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_DATABASE
          value: "wordpress"
        - name: MYSQL_USER
          value: "wordpress"
        - name: MYSQL_PASSWORD
          value: "wordpress"
        volumeMounts:
        - name: mysql
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql
        persistentVolumeClaim:
          claimName: mysql-pvc
1.3、部署 wordpress
代码语言:javascript
复制
cat wp-wordpress

apiVersion: v1
kind: Service
metadata:
   name: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30001
  selector:
     app: wordpress
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wordpress-pvc
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs"
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wp-wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
  replicas: 1
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wp-wordpress
        image: docker.io/wordpress
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        env:
        - name: WORDPRESS_DB_HOST
          value: "mysql-svc"
        - name: WORDPRESS_DB_USER
          value: "wordpress"
        - name: WORDPRESS_DB_PASSWORD
          value: "wordpress"
        volumeMounts:
        - name: wordpress
          mountPath: /var/www/html
      volumes:
      - name: wordpress
        persistentVolumeClaim:
          claimName: wordpress-pvc

2、部署 LNMP 环境

通过部署 LNMP 环境 部署持久化的 wordpress

2.1、部署 PV
代码语言:javascript
复制
cat lnmp-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv001
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-1
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv002
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-2
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv003
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-3
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv004
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-4
    server: 192.168.1.169
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv005
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfs-5
    server: 192.168.1.169
2.2、部署 nginx + php
代码语言:javascript
复制
cat lnmp-nginx-php.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-php-svc
  labels:
    app: lnmp-nginx-php
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30001
  selector:
    app: lnmp-nginx-php
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: lnmp-web-pvc
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs"
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: lnmp-nginx-php
spec:
  selector:
    matchLabels:
      app: lnmp-nginx-php
  replicas: 1
  template:
    metadata:
      labels:
        app: lnmp-nginx-php
    spec:
      containers:
      - name: lnmp-nginx
        image: richarvey/nginx-php-fpm
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        - containerPort: 9000
        volumeMounts:
        - name: nginx-data
          mountPath: /var/www/html/
      volumes:
      - name: nginx-data
        persistentVolumeClaim:
          claimName: lnmp-web-pvc
2.3、部署 MYSQL
代码语言:javascript
复制
cat lnmp-mysql.yaml

apiVersion: v1
kind: Service
metadata:
  name: lnmp-mysql-svc
spec:
  type: ClusterIP
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: lnmp-mysql
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: lnmp-mysql-pvc
  labels:
    app: lnmp-mysql
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs"
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: lnmp-mysql
spec:
  selector:
    matchLabels:
      app: lnmp-mysql
  replicas: 1
  template:
    metadata:
      labels:
        app: lnmp-mysql
    spec:
      containers:
      - name: lnmp-mysql
        image: docker.io/mysql:5.7
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_DATABASE
          value: "wordpress"
        - name: MYSQL_USER
          value: "wordpress"
        - name: MYSQL_PASSWORD
          value: "wordpress"
        volumeMounts:
        - name: mysql
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql
        persistentVolumeClaim:
          claimName: lnmp-mysql-pvc
2.4、部署 wordpress
代码语言:javascript
复制
下载 wordpress 的安装包

wordpress官网:https://cn.wordpress.org 

将解压后的 wordpress 目录内的所有的内容 上传/复制/移动 到 /nfs-x 目录内

打开浏览器,输入 IP+端口 回车后即可看到如下 wordpress 的安装界面

点击 “现在就开始”

1.png
1.png

输入我们在 lnmp-mysql.yaml 文件内定义的 用户名、密码、数据库名、以及我们的 mysql 的 svc 的名称

2.png
2.png

如果数据库信息填写正确,点击 “提交” 后可以看到如下提示,我们点击 “现在安装”

3.png
3.png

设置我们站点的相关信息

4.png
4.png
5.png
5.png
6.png
6.png
7.png
7.png

3、springboot-web

​ 当前,Spring毫无疑问已经成为java后台对象管理标准框架,除了通过IOC能够管理我们的自定义对象的生命周期之外还提供了众多功能繁复的可配置功能模块。但同时带来了复杂的配置项,这对初学者而言简直是一种灾难。于是SpringBoot应运而生,Springboot的出现大大简化了配置,主要表现在消除了web.xml和依赖注入配置的整合,处处遵循规约大于配置的思想,将初学者在繁杂的配置项中解放出来,专注于业务的实现,而不需要去关注太底层的实现。

代码语言:javascript
复制
cat dockerfile 

FROM openjdk:8-jdk 

COPY target/springboot-web-demo-1.0-SNAPSHOT.jar /springboot-web.jar

ENTRYPOINT ["java", "-jar", "/springboot-web.jar"]

docker build -t spring-web:v1 .

docker tag  www.zutuanxue.com/library/spring-web:v1

docker tag spring-web:v1  www.zutuanxue.com/library/spring-web:v1

cat spring-web.yaml

apiVersion: v1
kind: Service
metadata:
  name: spring-web-svc
spec:
  type: NodePort
  ports:
    - port: 8181
      targetPort: 8080
      nodePort: 30600
  selector:
    app: spring-web
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-web
spec:
  selector:
    matchLabels:
      app: spring-web
  replicas: 3
  template:
    metadata:
      labels:
        app: spring-web
    spec:
      containers:
        - name: spring-web
          image: www.zutuanxue.com/library/spring-web:v1
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 8080
          
kubectl apply -f spring-web.yaml

kubectl get pod

kubectl get svc

打开浏览器输入 IP:30600/hello?name=zutuanxue
8.png
8.png
9.png
9.png

4、JAVA

代码语言:javascript
复制
cat dockerfile

FROM tomcat

COPY jspdemo_war.war  /usr/local/tomcat/webapps/jspdemo_war.war

ENTRYPOINT ["catalina.sh","run"]

cat tomcat-java.yaml

apiVersion: v1
kind: Service
metadata:
  name: tomcat-java-svc
spec:
  type: NodePort
  ports:
    - port: 8282
      targetPort: 8080
      nodePort: 30700
  selector:
    app: tomcat-java
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-java
spec:
  selector:
    matchLabels:
      app: tomcat-java
  replicas: 3
  template:
    metadata:
      labels:
        app: tomcat-java
    spec:
      containers:
        - name: tomcat-java
          image: www.zutuanxue.com/library/tomcat-java:v1
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 8080
          
打开浏览器进入链接 http://IP:30700/jspdemo_war (项目名)   用户名与密码为:lisi
10.png
10.png
11.png
11.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、服务部署与迁移示例
    • 1、简单的部署 wordpress
      • 1.1、创建 PV
      • 1.2、部署 mysql
      • 1.3、部署 wordpress
    • 2、部署 LNMP 环境
      • 2.1、部署 PV
      • 2.2、部署 nginx + php
      • 2.3、部署 MYSQL
      • 2.4、部署 wordpress
    • 3、springboot-web
      • 4、JAVA
      相关产品与服务
      网站建设
      网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档