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本身会极大的节省 ...
随机推荐
- 【C++】类的继承的深入探讨
继承是扩展现有类并为基类提供新功能的一种方式. 本文主要探讨一个问题:子类会包含父类所包含的一切吗? 起初,作者认为这个问题的答案是否定的,因为子类无法访问父类的private成员 但是,运行下述一个 ...
- python3(iJmeter-master)接口测试程序部署实践
记录学习性能测试过程遇到的问题,加油! 环境 安装环境如下: Windows 10 1803 VMWare Workstation 15 Pro Centos Linux release 7.9.20 ...
- 【Amadeus原创】idea实现java前后端代码自动化调试
代码结构: 1,meeting-server 后端 springBoot maven 2,metting-ui 前端 nodejs 3,两个文件夹都在early-meeting文件夹中 如何在 ...
- sed 指定行后或行前插入
sed 功能非常强大,这里主要列出一些工作中常用到的举例,以后再追加 示例文本 example.cfg Config = { a = 1, b = 1024, c = { ErrLevel = 4, ...
- zstd - 一种由Facebook使用的快速数据压缩算法
Zstandard (也被称为zstd )是一款免费的开源,快速实时数据压缩程序,具有更好的压缩比,由Facebook开发. 它是用C语言编写的无损压缩算法 (在Java中有一个重新实现) - 因此它 ...
- Qt编写物联网管理平台40-类型种类
一.前言 为了增强本系统的拓展性,做成通用的物联网管理平台,特意将控制器主设备类型.探测器子设备类型.对应种类符号等信息,全部做成表格可自定义添加和修改,这样在控制器信息表和探测器信息表管理的时候,可 ...
- Qt编写安防视频监控系统23-图片地图
一.前言 图片地图这个模块是后面新增加进去的,主要是安防领域还有很多应用场景是一个区域比如就一个学校,提供一个学校的平面图或者鸟瞰图,然后在该地图上放置对应的摄像机,双击该摄像机图标可以查看对应的实时 ...
- Qt编写安防视频监控系统48-视频参数
一.前言 视频参数之前在基本参数中,后面越来越多,直接独立了出来,甚至还拆分出来了视频参数1.视频参数2,参数越来越多分组也越来越多的时候,你会发现分组名称都不够用或者不方便命名,不能直观的表示该分组 ...
- FFmpeg中的色彩空间与像素格式2-RGB/YUV色彩空间
cnblogs 网站将文本J:a:b渲染成了J️b.是否可通过设置博客后台解决此问题?有知道的同学请留言指点一下,谢谢. FFmpeg 中的色彩与像素系列文章如下: [1]. FFmpeg中的色彩空间 ...
- 即时通讯技术文集(第11期):IM通信格式的选型及Protobuf专题 [共16篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第11 期. [- 1 -] 如何选择即时通讯应用的数据传输格式 [链接] http://www. ...