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本身会极大的节省 ...
随机推荐
- 淘宝长仁:JVM性能指标的理论极限和衡量方法(TaobaoJVM)
在2013年阿里巴巴集团主办的ADC•阿里技术嘉年华,这是一场专属于<互联网工程师>的"技术盛宴",倡导<干货分享>的大会上,51CTO记者有幸采访到了阿里 ...
- 六、FreeRTOS学习笔记-任务挂起和恢复
任务的挂起与恢复的API函数介绍 API函数 描述 vTaskSuspend() 挂起任务 vTaskResume() 恢复被挂起的任务 xTaskResumeFromISR() 在中断中恢复被挂起的 ...
- PHP扩展之Yaconf
这个是继鸟哥出品的yaf,yar 之后的又一个好用的工具. Yaconf配置管理工具 具体可以看鸟哥的文档: https://www.laruence.com/2015/06/12/3051.htm ...
- vagrant搭建开发环境
一:我们为什么需要用这玩意 我们在开发中经常会面临的问题:环境不一致,有人用Mac有人用Windos还有几个用linux的,而我们的服务器都是linux. 在我本地是可以的啊,我测了都,没有问题啊,然 ...
- 论文解读《Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks》
发表时间:2019 期刊会议:IEEE Symposium on Security and Privacy (S&P) 论文单位:UC Santa Barbara 论文作者:Bolun Wan ...
- C# 企业微信消息推送对接,实现天气预报推送
C# 企业微信消息推送对接,实现天气预报推送 迷恋自留地 准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最 ...
- bluetooth_stack开源蓝牙协议栈源码分析与漏洞挖掘
文章首发地址 https://xz.aliyun.com/t/9205 前言 网上闲逛的时候,发现github有个开源的蓝牙协议栈项目 https://github.com/sj15712795029 ...
- django目录结构、app概念和三板斧的初步介绍
目录 一.django app(应用)的概念 概念 命令行创建应用 pycharm创建应用 创建应用注意事项 二.django主要目录结构 三.django小白必会三板斧 一.django app(应 ...
- kubectl按pod创建时间排序获取列表 _
按时间排序,可以更快地找到最近更新的pod 基于当前ns 1 kubectl get pods --sort-by=.metadata.creationTimestamp BASH 基于整个集群 1 ...
- @Builder 注解的简单使用
1.导语(可跳过) Java小白一枚,研读公司代码.发现实体类上加了@Builder.@NoArgsConstructor和@AllArgsConstructor.话不多说,上代码 2.实体类代码@D ...