部署好了k8s以后 部署参考https://www.cnblogs.com/minseo/p/12055731.html

   怎么在k8s部署应用

   项目迁移到k8s平台是怎样的流程

  1,制作镜像

  2,控制器管理Pod

  3,暴露应用

  4,对外发布应用

  5,日志/监控

  k8s基本概念  

Cluster 
Cluster 是计算、存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用。

Master 
Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行。Master 运行 Linux 操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个 Master。

Node 
Node 的职责是运行容器应用。Node 由 Master 管理,Node 负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。Node 运行在 Linux 操作系统,可以是物理机或者是虚拟机。

Pod 
Pod 是 Kubernetes 的最小工作单元。每个 Pod 包含一个或多个容器。Pod 中的容器会作为一个整体被 Master 调度到一个 Node 上运行,一个Pod里的所有容器共用一个namespaces

Controller

管理Pod的工具,kubernetes通过它来管理集群中的Pod

Deployment 

Deployment 是最常用的 Controller,比如前面在线教程中就是通过创建 Deployment 来部署应用的。Deployment 可以管理 Pod 的多个副本,并确保 Pod 按照期望的状态运行。

ReplicaSet 

ReplicaSet 实现了 Pod 的多副本管理。使用 Deployment 时会自动创建 ReplicaSet,也就是说 Deployment 是通过 ReplicaSet 来管理 Pod 的多个副本,我们通常不需要直接使用 ReplicaSet。

DaemonSet

DaemonSet 用于每个 Node 最多只运行一个 Pod 副本的场景。正如其名称所揭示的,DaemonSet 通常用于运行 daemon。

StatefuleSet

StatefuleSet 能够保证 Pod 的每个副本在整个生命周期中名称是不变的。而其他 Controller 不提供这个功能,当某个 Pod 发生故障需要删除并重新启动时,Pod 的名称会发生变化。同时 StatefuleSet 会保证副本按照固定的顺序启动、更新或者删除。

Job

Job 用于运行结束就删除的应用。而其他 Controller 中的 Pod 通常是长期持续运行。

Service

Kubernetes Service 定义了外界访问一组特定 Pod 的方式。Service 有自己的 IP 和端口,并把这个IP和后端的Pod所跑的服务的关联起来。Service 为 Pod 提供了负载均衡。

namespace

Namespace 可以将一个物理的 Cluster 逻辑上划分成多个虚拟 Cluster,每个 Cluster 就是一个 Namespace。不同 Namespace 里的资源是完全隔离的。

Kubernetes 默认创建了两个 Namespace,default和kube-system

   在k8s中部署一个java应用

  下载demo

wget https://codeload.github.com/lizhenliang/tomcat-java-demo/zip/master

  解压

tomcat-java-demo-master.zip.zip

  目录db下有mysql初始sql  tables_ly_tomcat.sql新建一台主机192.168.1.14用作数据库安装mariadb

yum -y install mariadb
yum -y install mariadb-server

  创建数据库test导入表

 use test;
source /root/tables_ly_tomcat.sql

  查看导入的表

  授权保证master和node可以正常访问该数据库

grant all on test.* to 'test'@'%' identified by '123.com';

  其他主机使用test用户可以正常访问即可

mysql -utest -p123.com -h 192.168.1.14

  安装jdk和maven

yum -y install maven java-1.8.0-openjdk.x86_64

  修改数据库链接地址

src/main/resources/application.yml

  编译构建

 mvn clean install -Dmaven.test.skip=true

  第一次构建时间稍长

 会在文件夹target下面生成一下文件

  查看解压文件夹下的Dockerfile

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

  引用tomcat  删除默认的根目录,增加刚刚构建的war包至根目录

  使用Dockerfile构建镜像 需要使用docker hub的注册用户名yueming33990否则推送会失败提示为requested access to the resource is denied

docker build -t yueming33990/java-demo .

  注意最后有.符号

  推送到镜像仓库其他节点也可以访问

  登录

docker login

  需要输入用户名和密码可以去网站https://hub.docker.com注册或者是搭建私有镜像仓库

  推送至docker hub

docker push yueming33990/java-demo

  推送成功在hub.docker.com会生成一个公共的镜像

  已经推送至公共的镜像仓库了其他主机可以直接下载

docker pull yueming33990/java-demo

  k8s使用镜像

kubectl create deployment java-demo --image=yueming33990/java-demo --dry-run -o yaml

  --dry-run测试不在k8s运行

  -o yaml 生成yaml格式

  执行输出yaml格式

  输出重定向至deploy.yaml

kubectl create deployment java-demo --image=yueming33990/java-demo --dry-run -o yaml > deploy.yaml

  修改

  运行

kubectl apply -f deploy.yaml

  查看启动的pods

kubectl get pods

  通过日志查看tomcat是否启动

kubectl  logs java-demo-b76fc7876-5qjgn

  暴露应用

  创建一个service

kubectl expose deployment java-demo --port=80 --target-port=8080 --type=Nodeport -o yaml --dry-run

  java-demo指定名称

  --port指定集群内部访问的端口

  --target-port指定容器内跑服务的端口

  --type=NodePort 指定类型 集群外部访问

重定向到文件

kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run > svc.yaml

  运行

kubectl apply -f svc.yaml

  查看pods和svc

kubectl get pods,svc

  web页面访问

http://192.168.1.12:30457/

  查看pods分布的节点

kubectl get pods -o wide

  

  使用k8s部署java应用完成

Kubernetes之在k8s中部署Java应用的更多相关文章

  1. k8s中部署springcloud

    安装和配置数据存储仓库MySQL 1.MySQL简介 2.MySQL特点 3.安装和配置MySQL 4.在MySQL数据库导入数据 5.对MySQL数据库进行授权 1.MySQL简介 MySQL 是一 ...

  2. Prometheus K8S中部署Alertmanager

    Prometheus K8S中部署Alertmanager 设置告警和通知的主要步骤如下:一.部署Alertmanager二.配置Prometheus与Alertmanager通信三.配置告警 1. ...

  3. Docker & k8s 系列三:在k8s中部署单个服务实例

    本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...

  4. 【转】Tomcat中部署java web应用程序

    http://www.blogjava.net/jiafang83/archive/2009/06/02/279644.html 转载:今天给大家介绍怎样在Tomcat5.5.9中部署Java Web ...

  5. 在Tomcat中部署Java Web应用程序

    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署      静态部署指的是我们在服务器启动之前部 ...

  6. CentOS6.5中部署java web环境

    原来在linux中部署java web环境,没有做好总结,这次在部署的过程中,将部署的过程做了记录,希望对大家有帮助.主要内容包括CentOS安装以后的网络设置,系统自带jdk的卸载,新版本jdk的安 ...

  7. Tomcat中部署Java Web应用程序的方式

    Tomcat中部署Java Web应用程序的几种方式: #PetWeb是工程名 1.在TOMCAT_HOME\conf\server.xml文件的HOST节点中加入 <Context docBa ...

  8. 在Tomcat中部署Java Web应用程序几种方式

    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署      静态部署指的是我们在服务器启动之前部 ...

  9. 不使用pvc的方式在K8S中部署apisix-gateway

    不使用pvc的方式在K8S中部署apisix-gateway 简介 我的apisix使用etcd作为数据存储服务器,官方的使用pvc方式或者docker-compose的方式,对于新手不太友好,本篇是 ...

随机推荐

  1. Redis Cluster数据分片机制

    复制粘贴自: https://www.e-learn.cn/content/redis/2344485, 点击链接访问原文 仅供个人学习参考之用, 如有侵权, 请联系删除! 高级开发不得不懂的Redi ...

  2. 通过jar包名称,获取maven的依赖信息GAV

    烦恼:当我们手上有一堆三方件jar包,想要转成maven管理时,需要一个一个配置进pom文件中,而且GAV信息还得去收集. 为了快速生成如下信息,我们可以这样.... GAV:groupId + ar ...

  3. 珠峰培训node正式课--【笔记】|全局对象 | process | util | fs | stream 流

    全局对象: console  : __filename     ; __dirname     ; setTimeOut     ; setImmediate(把参数函数放在下一个环节执行) proc ...

  4. 学习:多字节编码(ANSI)和UNICODE编码的关系

    Windows 既可以使用 Unicode 字符集又可以使用传统的字符集(如多字节编码)来实现对多种语言的支持,以适应国际市场的要求.与传统的字符集编码相比,Unicode 是世界通用的字符编码标准, ...

  5. Vue 实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀 $,以便与代理的 data 属性区分

    var data = { a: 1 } var vm = new Vue({ el: '#example', data: data }) vm.$data === data // -> true ...

  6. (13)使用python+flask实现树莓派的WEB控制

    https://blog.csdn.net/qq_34803821/article/details/86240096 如果你想在网页上点击按钮,并且让树莓派接收到响应,并做响应的处理,实现网页上与树莓 ...

  7. 指针*和取地址&函数输入使用

    函数输入问题: 1 带&和不带& (参数本身还是拷贝一份参数) 2 函数输入指针 #include <iostream> using namespace std; int ...

  8. 常见WinDbg问题及解决方案

    当你调试一个程序时,你最不想处理的是调试器不能正常工作.当你试图集中精力跟踪一个bug时,总是会因为次要的问题而被忽略,尤其是当调试器的问题导致你失去一个重新编程或者浪费了大量的时间等待调试器完成它, ...

  9. SpringMVC相关试题

    1.下列相关Spring自动装配的说法中,错误的是( ). (选择一项) A:在Spring配置文件中,可以通过<bean>元素的autowire属性指定自动装配方式B: autowire ...

  10. 【CSP膜你赛】ATM

    题目描述 小沈阳在小品里说过:“人生最痛苦的事情是人死了,钱还没花掉”. 于是小宋(80 岁)决定要将所有的储蓄从 ATM 机中取出花光. 小宋忘记 了她有多少存款(银行卡密码她是记得的 2333), ...