kubernetes基本概念

Pod:

1.最小的部署单元,
2.一组容器的集合
3.一个pod中的容器共享网络命名空间
4.生命周期是短暂的

Controllers:

1.Deployment:部署无状态应用
2.Statefulset:部署有状态应用
3.Replicaset:确保预期的Pod副本数量
4.Daemonset: 确保node运行同一个pod
5.Job:一次性任务
6.Cronjob:定时任务
更高级层次对象,部署和管理pod

Service:

防止Pod失联,找到你需要Pod
定义一组Pod的负载均衡访问策略

Label:标签,附加到某个资源上,用于关联对象,查询和筛选
Namespaces:命名空间,将对象进行逻辑上隔离或者资源隔离
项目迁移到k8s平台是怎么样的流程?

基础镜像(一个空白的镜像)---------------运行环境镜像(py/php/go/java)---------------项目镜像(项目打包)
实战项目开始

1.0将java源码程序项目包导入到master服务器上,如图所示

1将db目录下数据文件导入mysql中(node01)

#192.168.106.103数据库执行
source  /root/tables_ly_tomcat.sql
grant all on test.* to   'test'@'%'  identified by "Zhangfan@123";   #增加一个授权用户,在master登录能正常登录

修改连接数据库的配置文件,改成刚才数据授权的用户和ip

vim src/main/resources/application.yml


2开始制作镜像java镜像(master)
我在之前的博文中讲了如何构建java镜像 https://blog.csdn.net/weixin_43546282/article/details/112210164

cat  Dockerfile
FROM centos:7
MAINTAINER zhangfan
ENV VERSION=8.5.61
RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \yum clean all && \rm -rf /var/cache/yum/*
RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \tar zxf apache-tomcat-${VERSION}.tar.gz && \mv apache-tomcat-${VERSION} /usr/local/tomcat && \rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \mkdir /usr/local/tomcat/webapps/test && \echo "ok" > /usr/local/tomcat/webapps/test/status.html && \sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/tomcat/bin
WORKDIR /usr/local/tomcat
EXPOSE 8080
CMD ["catalina.sh", "run"]

安装编译环境

yum -y install  java-1.8.0-openjdk    maven
cd      /root/tomcat-java-demo-master
vim src/main/resources/application.yml   #修改配置文件指定刚才创建用户的数据库
mvn   clean  package  -Dmaven.test.skip=true

编译完成如图所示,生成一个war包

制作新Dockerfile

cat  Dockerfile
FROM tomcat:v1
LABEL test  www.zhangsan.com
RUN rm -rf     /usr/local/tomcat/webapps/*
ADD target/*.war   /usr/local/tomcat/webapps/ROOT.war#注意这里命名  ` zhangfan5391621/java-demo`  zhangfan5391621表示docker hub仓库登录名/java-demo为项目名docker build -t   zhangfan5391621/java-demo  .


构建完成如图所示,新项目镜像构建完成
3将镜像推入docker hub仓库中
https://hub.docker.com/repository/docker/zhangfan5391621/zf_test

docker push zhangfan5391621/java-demo   #上传到docker hub仓库中去


4生成k8s-Pod

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

在本地生成一个yaml标准文件

cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: java-demoname: java-demo
spec:replicas: 3   #三个副本selector:matchLabels:app: java-demotemplate:metadata:labels:app: java-demospec:containers:- image: zhangfan5391621/java-demoname: java-demo
kubectl apply -f  deploy.yaml   #构建podkubectl  get pods   #全部状态running说明构建成功


检查pod日志,无错误说明成功,如果报错状态不对用下面命令检查

`kubectl describe nodes  k8s-node01   #检查node`
`kubectl  logs java-demo-876cf6688-57jzf`

5 暴露应用svc

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

java-demo :刚才创建deployment时的名称, --port=80:容器内部访问端口 --target-port=8080 :指定pod内部端口 --type=NodePort: 指定外部访问的端口为随机生成端口

kubectl apply  -f     svc.yaml   #创建svckubectl  get  pods,svc


http://192.168.106.102:30187/ #任意节点ip:30187都能正常访问

至此项目部署完成
整个完成顺序是
构建环境镜像----------构建项目镜像----------推送到hub仓库----------构建Pod----------暴露应用svc

参考链接 :
K8S实战之部署java应用 :https://mp.weixin.qq.com/s/BaRj3AiPTLAf63-Dr_44eg

K8S实战之部署java应用相关推荐

  1. k8s实战之部署PHP/Java网站

    微信公众号:运维开发故事,作者:double冬 对k8s刚入门的朋友而言,光搭建k8s集群是不够的,我们需要更多的理论加实战,才能更好的掌握k8s的好处,当我们成功部署一个k8s集群之后,我们需要在实 ...

  2. k8s之简单部署java应用

    原项目启动模式supervisor,java -jar environment.jar,端口是:8098 我已经用mvn 打包成docker镜像上传到我的harbor仓库:192.168.2.251/ ...

  3. k8s实战之部署Prometheus+Grafana可视化监控告警平台

    写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...

  4. K8S实战基础篇:一文带你深入了解K8S实战部署SpringBoot项目

    K8S实战基础篇:一文带你深入了解K8S实战部署SpringBoot项目 1.前言 2.简介 2.1.为什么写这篇文章 2.2.需求描述 2.3.需求分析 3. 部署实战 3.1 环境准备 3.2 i ...

  5. K8S实战之环境部署1.18(一)

    安装要求,准备环境 #系统centos7.6 #硬件:2个CPU,2G内存 #可以访问外网,禁用swap #提前安装docker环境 准备三台服务器 初始化系统环境,以下命令三台服务器全部执行 1.1 ...

  6. 【云原生之kubernetes实战】在k8s环境下部署Snipe-IT固定资产管理平台

    [云原生之kubernetes实战]在k8s环境下部署Snipe-IT固定资产管理平台 一.Snipe-IT介绍 二.检查本地k8s环境 1.检查工作节点状态 2.检查系统pod状态 3.检查kube ...

  7. K8S实战集训第一课 Ansible自动化部署k8s、弹性伸缩、Helm包管理、k8s网络模型介绍

    Ansible自动化部署K8S集群 一.Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部 ...

  8. 【云原生之kubernetes实战】在k8s环境下部署OneNav个人书签工具

    [云原生之kubernetes实战]在k8s环境下部署OneNav个人书签工具 一.OneNav介绍 1.OneNav简介 2.OneNav特点 二.检查本地k8s环境 1.检查工作节点状态 2.检查 ...

  9. k8s部署java项目

    k8s部署java项目 拉取halo镜像 [root@master ~]# docker pull halohub/halo:1.4.16 1.4.16: Pulling from halohub/h ...

最新文章

  1. asp.net c#截取指定字符串函数
  2. linux保存输出结果到txt
  3. 开源!mathAI 手写拍照自动能解高数题,还不快试试?
  4. k8s组件说明:api server
  5. 从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)
  6. 查询linux kafka安装目录,Kafka 1.0.0安装和配置--Linux篇
  7. C#:泛型(Generic)
  8. PIE SDK波谱运算
  9. xamarin android 设备,【Xamarin.Android】在Visual Studio中增强设备日志记录
  10. python时间控件readonly属性_Selenium2+python自动化25-js处理日历控件(修改readonly属性)转自-上海悠悠...
  11. 百度云库计算机网页制作说课PPT,网页制作说课PPT.doc
  12. 与iPhone5国行A1429的故事:越狱、降级刷机、完美电信3G、不完美电信4G、撸油管
  13. Error:Undefined symbol DMA_Cmd (referred from dac.o)
  14. 真的是没有底线了,重新认识Java
  15. 【转载】优雅抒情的浪漫小提琴曲
  16. 《Linux学习一》交叉编译工具链的构建工具Crosstool-ng
  17. 转到计算机科学与技术专业的申请书,转专业的申请书范文(精选5篇)
  18. java mp3 处理_Java处理MP3资料
  19. css竖向箭头符号_用css打造一个三角形箭头
  20. CentOS下MySQL数据库常用命令总结 (资源)

热门文章

  1. 【Python数据分析】数据挖掘建模——分类与预测——人工神经网络
  2. efficientdet-pytorch训练自己的数据集
  3. linux ifort编译命令,[转载][Linux] icc与ifort编译器
  4. php 低级语句,低级语言是什么?
  5. html 字体图标转换工具,字体图标的制作方式
  6. gui设置可编辑文本框的回调函数_用Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少60M(77.5%)(实例63)...
  7. CentOS 6.9下KVM虚拟机通过virt-clone克隆虚拟机(转)
  8. 贝格数据携手清华大学“勘探”大数据富矿
  9. 第一次写博,好激动啊!
  10. 蒙特卡罗算法与拉斯维加斯算法