kubernetes项目部署

news2024/11/18 3:47:26

目录

 ​一、容器交付流程

二、k8s平台部署项目流程

三、在K8s平台部署项目


一、容器交付流程


容器交付流程通常分为四个阶:开发阶段、持续集成阶段、应用部署阶段和运维阶段。

开发阶段:开发应用程序,编写Dockerfile;

持续集成阶段:对应用程序编译打包、使用Dockerfile构建镜像,把镜像推送到镜像仓库;

应用部署阶段:基于镜像创建pod,使用deploy控制器暴露服务得到service,使用ingress提供域名访问服务;

运维阶段:对应用程序进行监控和版本升级等;


二、k8s平台部署项目流程


1.制作镜像(通过Dockerfile)

2.推送到镜像仓库中(阿里云镜像、网易镜像)

3.控制器部署镜像(Deployment)

4.对外暴露应用(Service、Ingress)

5.运维(监控、升级)


三、在K8s平台部署项目


部署环境准备

#  可以使用 yum 在线 或离线的下载 安装
yum install java-1.8.0-openjdk maven git -y 

maven 项目 编译

# 代码编译构建
cd  /opt/tomcat-java-demo-master
mvn clean package -Dmaven.test.skip=true 

编译完成的 WAR 包

第一步:制作镜像

cd  /opt/tomcat-java-demo-master
unzip   target/ly-simple-tomcat-0.0.1-SNAPSHOT.war -d  target/ROOT

## Dockerfile
FROM lizhenliang/tomcat 
LABEL maintainer www.ctnrs.com
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/ROOT /usr/local/tomcat/webapps/ROOT 

## 镜像构建
docker build  -f Dockerfile -t java-demo .


## 在项目中标记镜像
docker tag java-demo  harbor.winneryun.com/demo/java-demo:v1
## 推送镜像到当前项目 docker配置可信任 且登录成功
docker push  harbor.winneryun.com/demo/java-demo:v1

推送到镜像仓库

项目Demo地址:

# 项目地址
https://github.com/lizhenliang/tomcat-java-demo

第二步:使用控制器部署镜像

配置可信任每台节点Node(如果仓库是HTTPS访问不用配置)

[root@k8s-master java-demo]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "insecure-registries": ["harbor.winneryun.com"]
}

将镜像仓库认证凭据保存在K8s Secret中

kubectl create secret docker-registry registry-auth --docker-username=admin --docker-password=Harbor12345 --docker-server=harbor.winneryun.com

configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: java-demo-config
data:
    application.yml: |
        server:
          port: 8080
        spring:
          datasource:
            url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
            username: root
            password: 123456789
            driver-class-name: com.mysql.jdbc.Driver
          freemarker:
            allow-request-override: false
            cache: true
            check-template-location: true
            charset: UTF-8
            content-type: text/html; charset=utf-8
            expose-request-attributes: false
            expose-session-attributes: false
            expose-spring-macro-helpers: false
            suffix: .ftl
            template-loader-path:
              - classpath:/templates/

Deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: java-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      project: www
      app: java-demo
  template:
    metadata:
      labels:
        project: www
        app: java-demo
    spec:
      imagePullSecrets:
      - name: registry-auth
      containers:
      - image: harbor.winneryun.com/demo/java-demo:v1
        name: java-demo
        volumeMounts:  ## configMap 挂载
        - name: config
          mountPath: "/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/application.yml"
          subPath: application.yml
        resources:
          requests:
            cpu: 0.5
            memory: 500Mi
          limits: 
            cpu: 1
            memory: 1Gi
        livenessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 50
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 50
          periodSeconds: 10
      volumes:
      - name: config
        configMap:
          name: java-demo-config
          items:
          - key: "application.yml"
            path: "application.yml"

第三步:对外暴露应用

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: java-demo 
spec:
  selector:
    project: www
    app: java-demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080 

ingress.yaml

apiVersion: networking.k8s.io/v1 
kind: Ingress
metadata: 
  name: java-demo
spec:
  rules:
  - host: example.ctnrs.com 
    http:
      paths:
      - path: / 
        pathType: Prefix 
        backend: 
          service:
            name: java-demo
            port: 
              number: 80

查看部署的服务

访问地址:http://example.ctnrs.com/

第四步:增加公网负载均衡器

安装 nginx , 配置 nginx.conf

yum install epel-release -y
yum install nginx  -y
systemctl start nginx

vim /etc/nginx/nginx.conf
#在server 的上面插入以下代码
    upstream webservers {
        server 192.168.2.118:80;
        server 192.168.2.210:80;
   }
    server{
        listen 80;
        server_name example.ctnrs.com; 
        location / {
          proxy_pass http://java-demo; proxy_set_header Host $Host;
        }
   }
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;  
.....

nginx -s reload

成功访问:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/485674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gradle 模块

目录 ​settings.gradle文件的作用 SourceSet类的作用 Plugin 插件 Java 对 Plugin 的扩展 settings.gradle文件的作用 settings用于配置哪些工程是要被gradle集成的,gradle 通过 Settings.java 类来处理 settings.gradle 文件。 gradle的初始化阶段&#xff0c…

【音视频处理】RTMP、HLS、HTTP-FLV、WebRTC、RTSP的区别?直播协议详解

大家好,欢迎来到停止重构的频道。 本期我们详细讨论直播的相关协议,包括:HTTP-FLV、HLS、RTMP、Web-RTC、RTSP等等。 我们将会详细介绍这些协议的工作原理、应用场景、及延迟的原因。 我们按这样的顺序讨论​ 1、 RTMP、HTTP-FLV 2、 …

【五一创作】红黑树数据结构

现在JAVASE中HashMap中底层源码是由数组链表红黑树进行设计的,然后很多地方也是用到红黑树,这里单独对红黑树数据结构进行简单的介绍。 目录 红黑树概念 红黑树的性质 自平衡规则 代码 红黑树概念 红黑树,是一种二叉搜索树,…

flink-on-yarn两种提交模式及其区别

一、session模式 在yarn上启动一个flink集群,并重复使用该集群,后续提交的任务都是提交给该集群,资源会一直被占用,除非手动关闭。 特点:需要事先申请资源,启动JobManager和TaskManager。 优点&#xff1a…

网卡丢失导致集群异常

假期晚上有个电话,说集群故障,应用无法连接,节点一可以ssh登录,节点二已无法正常登录了,在节点一上需要ssh 私网ip地址才可以登录节点二,虽不是重点客户,有问题还是需要积极处理。 首先看集群状…

LeetCode - 239 滑动窗口最大值

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 239. 滑动窗口最大值 - 力扣(LeetCode) 题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k…

AutoCAD介绍——带你了解最强的CAD软件

AutoCAD介绍——带你了解最强的CAD软件 什么是AutoCAD应用领域功能特点版本发展总结 什么是AutoCAD Autodesk的AutoCAD是一款世界著名的CAD软件,其全称为“Auto Computer-Aided Design”,是一种计算机辅助设计工具,用于帮助用户创建和编辑二…

k8s之审计日志

一、为什么要有审计 Kube-Apiserver 的负载突然变高,大量访问失败,集群中到底发生了什么? 当集群发生问题时,这是Metric一般会失效,为了排查以上问题,k8s 提供了两种原生的日志形式——审计(A…

PID整定二:基于Ziegler-Nichols的频域响应

PID整定二:基于Ziegler-Nichols的频域响应 1参考2连续Ziegler-Nichols方法的PID整定2.1整定方法2.2仿真示例 1参考 1.1根轨迹图的绘制及分析 1.2计算机控制技术01-3.4离散系统的根轨迹分析法 1.3PID控制算法学习笔记 2连续Ziegler-Nichols方法的PID整定 2.1整定…

2023软考中级《软件设计师》(备考冲刺版) | 知识产权与标准化

1.知识产权 1.1 保护对象和范围 1.2 保护期限 注意:注册商标续注可延长 1.3 知识产权人确定 1.3.1 职务作品(区分个人和公司单位:大部分都是公司单位) 1.3.2 委托开发、合作开发与同时申请 1.4 侵权判定 1.第二十五条对下列各…

操作系统——线程调度

0.关注博主有更多知识 操作系统入门知识合集 目录 6.1线程调度概念 思考题: 6.2典型调度算法 思考题: 6.3Linux线程调度 6.1线程调度概念 在第四章曾经介绍过,线程是操作系统调度的基本单位,那么本篇就不再以进程的视角去…

【操作系统OS】学习笔记第二章 进程与线程(下)【哈工大李治军老师】

基于本人观看学习 哈工大李治军老师主讲的操作系统课程 所做的笔记&#xff0c;仅进行交流分享。 特此鸣谢李治军老师&#xff0c;操作系统的神作&#xff01; 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0…

基于rke部署的k8s集群如何配置kube-proxy工作在ipvs模式

kube-proxy默认工作在iptables模式下&#xff0c;在集群配置文件cluster.yml中添加如下配置项即可开启ipvs模式。然后执行 rke up 命令使配置生效。

软件测试的ABC

文章目录 一. 衡量软件测试结果的依据—需求1. 什么是需求2. 案例 - 平台支持邮箱注册3. 从测试人员角度看需求 二. 测试用例1. 测试用例的概念2. 案例3. 为什么要有测试用例 三. 软件错误 (BUG)1. 什么是bug2. 如何描述一个bug3. bug的级别4. bug的生命周期5. 如果因为bug和开…

Java面试题总结 | Java面试题总结8- Redis模块(持续更新)

Redis 文章目录 Redisredis的线程模型Redis的Mysql的区别Redis和传统的关系型数据库有什么不同&#xff1f;Redis常见的数据结构zset数据结构Redis中rehash过程redis为什么不考虑线程安全的问题呢Redis单线程为什么还能这么快&#xff1f;为什么Redis是单线程的&#xff1f;red…

【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析

MVC目录 一. &#x1f981; MVC模型二. &#x1f981; SpringMVC1. SpringMVC执行流程&#xff08;重点&#xff09;Ⅰ. SpringMVC四大组件Ⅱ. 执行流程 2. RequestMapping3. RequestParam4. ReuqestHeader & CookieValue5. RESTful风格支持Ⅰ. 传统 vs restfulⅡ. PathVar…

5. Docker——先快速入门

本章讲解知识点 Docker 是什么为什么要使用 DockerDocker 引擎Docker 常用命令Docker 生命周期详解虽然我们上一章教大家搭建好了 Kubernetes + Docker 环境,但是我们本章是先从 Docker 讲起,为后面学习 Kubernetes 打好基础。 1. Docker 是什么 Docker 是一种开源的容器化…

spring5源码篇(9)——mybatis-spring整合原理

spring-framework 版本&#xff1a;v5.3.19 spring和mybatis的整合无非主要就是以下几个方面&#xff1a; 1、SqlSessionFactory怎么注入&#xff1f; 2、Mapper代理怎么注入&#xff1f; 3、为什么要接管mybatis事务&#xff1f; 文章目录 一、SqlSessionFactory怎么注入SqlSe…

离散数学_九章:关系(4)

9.4 关系的闭包 1、闭包(closure)的定义2、不同类型的闭包1. 自反闭包(reflexive closure)2. 对称闭包(symmetric closure)3. 传递闭包(transitive closure) 3、闭包的几个定理定理1定理2定理3 - R1∪R2定理4定理5&#x1f4d8;例题&#xff1a; 4、有向图中的路径5、传递闭包1…

2000-2019年30省研发资本存量(含计算过程和原始数据)

2000-2019年30省份研发资本存量&#xff08;含计算过程和原始数据&#xff09;/2000-2019年30个省市R&D资本存量或研发资本存量数据 1、时间&#xff1a;2000-2019年 2、范围&#xff1a;包括30个省市不含西藏 3、指标&#xff1a;省研发资本存量 4、参考文献&#xff…