kubernets学习笔记二
Kubernetes部署“容器化应用”
Kubernetes整体架构
何为“容器化应用”?
通俗点来说,就是你把一个程序放在docker里部署,这个docker应用就是容器化应用。比如,在docker里面部署一个springboot,这个docker+springboot一起就是一个容器化应用
在k8s里面部署一个应用
SpringBoot程序-->打包jar包或war包-->通过Dockerfile文件生成docker镜像-->通过k8s部署这个镜像-->部署完毕;
总结一下Kubernetes部署容器化应用的步骤:
1、制作镜像;(自己编写Dockerfile文件制作,或者 从仓库pull镜像)
2、通过控制器管理pod(其实就是把镜像启动得到一个容器,容器在pod里)
3、暴露应用,以便外界可以访问;
在Kubernetes集群中部署一个Nginx:
1、制作镜像 //第二步包含第一步了,所以不需要docker search nginx;docker build 或 docker pull 镜像名
2、kubectl create deployment nginx --image=nginx:latest //拉取镜像,同时启动
3、kubectl expose deployment nginx --port=80 --type=NodePort //暴露nginx
4、访问应用
查看一下,相关命令:
netstat -ntlp //查看端口
kubectl get node(s)
//查看节点(虚拟主机)
kubectl get deployment (deploy) //查看控制器
kubectl get pod(s)
//查看pod
kubectl get service(s) //查看service服务 暴露控制器之后才能看到
kubectl delete deployment nginx //删除nginx的控制器 底下pod也会被删掉
kubectl get namespace #查看命名空间
kubectl get deployment -n kube-system #查看系统创建的控制器
kubectl get deployment -n kube-default #查看用户创建的控制器
kubectl get deployment -n kube-public
kubectl delete pod nginx-6799fc88d8-zc48m(pod名字) //删除pod
kubectl delete service nginx //删除service
kubectl describe pods //查看详情
kubectl --help //kubectl命令帮助
访问地址:http://NodeIP:Port
1 [root@k8smaster ~]# kubectl get service
2 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
3 kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21h
4 nginx NodePort 10.106.26.48 <none> 80:30412/TCP 9m22s
Docker镜像加速器:
/etc/docker/daemon.json
{
"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]
}
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
sudo systemctl daemon-reload
sudo systemctl restart docker
检验加速器是否成功:
$ docker info
Registry Mirrors:
https://reg-mirror.qiniu.com
在Kubernetes集群中部署一个Tomcat:
1、kubectl create deployment tomcat --image=tomcat //docker images查看是否下载下来镜像,kubectl get pods/deploy查看下载进度
2、kubectl expose deployment tomcat --port=8080 --type=NodePort //kubectl get service查看服务是否开启
访问地址:http://NodeIP:Port
K8s部署微服务(springboot程序)
1、项目打包(jar、war)-->可以采用一些工具git、maven、jenkins
2、制作Dockerfile文件,生成镜像;
3、kubectl create deployment nginx --image= 你的镜像
4、你的springboot就部署好了,是以docker容器的方式运行在pod里面的;
Master控制Node --> service --> deployment(控制器) --> pod --> docker
自定义JDK镜像
FROM centos:latest
MAINTAINER wxp
ADD jdk-8u281-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java -versionjava
构建镜像:docker build -f /mydocker/Dockerfile3 -t jdk1.8.0_281 .
运行镜像:docker run -d ac84bde53958 (镜像id)
构建项目镜像
FROM jdk1.8.0_281
MAINTAINER wxp
ADD spring-boot-cli-1.4.0.BUILD-20160728.175440-591.jar /opt
RUN chmod +x /opt/spring-boot-cli-1.4.0.BUILD-20160728.175440-591.jar
CMD java -jar /opt/spring-boot-cli-1.4.0.BUILD-20160728.175440-591.jar
构建镜
空运行测试
kubectl create deployment springboot-k8s --image=springboot-k8s-1.0.0-jar --dry-run -o yaml
kubectl create deployment springboot-k8s --image=springboot-k8s-1.0.0-jar --dry-run -o json
kubectl create deployment springboot-k8s --image=springboot-k8s-1.0.0-jar --dry-run -o yaml > deploy.yaml
kubectl create deployment springboot-k8s
--image=springboot-k8s-1.0.0-jar --dry-run -o json> deploy.json
XML, JSON和YAML都是文本格式的文件,都可以用来存储结构化的数据,都可以用来配置应用程序。yaml和YAML使用空格缩进,yaml是json的超集
- 开发人员喜欢JSON,因为它是JavaScript的子集,并且可以在JavaScript内部直接解释和编写,还可以使用简写方式声明JSON,在使用不带空格的典型变量名时,键中不需要双引号。在许多情况下,YAML的格式看起来更直观,不需要这么些括号{}和"". 如果您在编辑器中没有可见的空格或缩进线指示符,则YAML的空格虽然更紧凑且更易于查看,但看起来很难手动编辑。
- 与YAML相比,JSON的功能要少得多,因此JSON的序列化和反序列化速度要快得多,这使得更小更轻的代码可以处理JSON, json对于平台兼容,尤其是消息传递这块更好.。
- python中模型的配置文件都是yaml格式----脱机处理,
- yaml利用空格缩进表示层级,只要具有相同的缩进就具有相同的层级,而且缩进只能用空格.yaml字符串可以不用引号标注; json的字符串对象必须使用双引号""
- 大小写敏感
Yml文件方式部署(也可以通过命令部署)
kubectl apply -f boot-deploy.yaml (yaml是资源清单)
等价于:
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar
部署后查看一下:kubectl get pods
注意:boot-deploy.yaml文件里面镜像从本地拉取;
containers:
- image: 38-springboot-k8s-1.0.0-jar
name: 38-springboot-k8s-1-0-0-jar-8ntrx
imagePullPolicy: Never
把镜像拉取策略改为:Never
查看pod详细信息:kubectl describe pods 38-springboot-k8s-5c5c46d65f-4s52c(pod名称)
检查是否创建了deployments任务:kubectl get deployments
查看pod日志:kubectl logs 38-springboot-k8s-575778f6bf-drmbm(pod名称)
暴露服务端口:kubectl expose deployment springboot-k8s --port=8080 --type=NodePort
命令方式部署
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar
kubernets学习笔记二的更多相关文章
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Redis学习笔记二 (BitMap算法分析与BitCount语法)
Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...
随机推荐
- JAVA并发编程学习笔记之Unsafe类
java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操作,主要提供了以下功能: 1.通过Unsafe类可以分配内存,可以释放内存: 类中提供的3个本地方法all ...
- offline RL · PbRL | LiRE:构造 A>B>C 的 RLT 列表,得到更多 preference 数据
论文标题:Listwise Reward Estimation for Offline Preference-based Reinforcement Learning,ICML 2024. arxiv ...
- H5 新增表单
1.提示占位 placeholder <input type="text" name="userName" placeholder="请输入用户 ...
- mysql 创建字段createtime 自动添加时间
1. 创建createtime字段 类型选为timestamp 2. 添加默认值 CURRENT_TIMESTAMP
- Linux NAS存储、文件共享
Linux NAS存储之CIFS CIFS是Windows和Unix系统之间共享文件的一种协议,客户端通常是Windwos等.支持多节点同时挂载以及并发写入 1.服务器端操作(存储端) 1.1.服务器 ...
- 2024年1月Java项目开发指南19:Vue动态页面渲染
以文章为例子,我们获取了文章列表. 现在想实现,点击文章列表里面的某一篇文章,跳转页面,这个页面显示文章的具体内容. 那么应该怎么实现. 首先,你要创建一个文章详情页的组件(article.vue) ...
- 【SpringMVC】框架搭建
pom.xml 注意,下面代码只是pom.xml中的dependencies部分 <dependencies> <!-- 萌狼蓝天 mllt.cc--> <!-- htt ...
- Android7以上https抓包
1. 问题描述 1.1 运行环境 1.2 问题描述 virtualXposed 不一定支持Android模拟器 无法抓包 https 请求 1.3 问题原因 Android7 以后,系统分了系统证书和 ...
- Qt音视频开发49-通用截图截屏
一.前言 采用了回调方式的视频通道,截图只需要对解析好的QImage对象直接保存即可,而对于句柄的形式,需要调用不同的处理策略,比如vlc需要用它自己提供的api接口函数libvlc_video_ta ...
- Qt音视频开发3-vlc录像存储
一.前言 录像功能是视频监控系统的常用功能,就是将打开的视频流或者视频文件重新保存成MP4文件,当然也可以保存成其他格式,一般默认用MP4比较好,比较标准一些,MP4格式的兼容性最好,基本上没有说那台 ...