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 开发人员的 Scala 指南: 构建计算器,第 1 部分
Scala 的 case 类和模式匹配 Ted Neward, 主管, Neward & Associates 简介: 特定于领域的语言已经成为一个热门话题:很多函数性语言之所以受欢迎,主要是 ...
- MySQL之批量更新多条记录不同值
之前文章:https://www.cnblogs.com/xingxia/p/mysql_basic.html mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytab ...
- 逆向WeChat(八)
上一篇逆向WeChat(七)是逆向微信客户端本地数据库相关事宜. 本篇逆向微信客户端本地日志xlog相关的事宜. 本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18 ...
- kettle 使用 CARTE 执行
在执行KETTLE 任务的时候,可以使用本地执行,或者使用carte server执行. 1.启动carte server .\Carte.bat localhost 8080 2.配置子服务器 这里 ...
- 【论文系列】PPO知识点梳理 (尽我可能细致通俗理解!)
零.题记 这篇博客一方面为了记录当前的知识点,另一方面PPO算法实在是太重要了,不但要从理论上理解它到底是怎样实现的,还需要从代码方面进行学习和记录,这里我就通俗的将这个知识点进行简单的记录,用来日后 ...
- 使用OpenSSL创建生成CA证书、服务器、客户端证书及密钥
说明: 对于SSL单向认证:服务器需要CA证书.server证书.server私钥,客户端需要CA证. 对于SSL双向认证:服务器需要CA证书.server证书.server私钥,客户端需要CA证书, ...
- NACOS MalformedInputException 无法读取中文配置问题
1. 问题描述 在windows平台中打包运行springboot jar包提示如下错误 在idea中运行正常 org.yaml.snakeyaml.error.YAMLException: java ...
- Java Function 接口用法
Java 8 中 Function 接口的介绍 Java 8 中提供了一个函数式接口 Function,这个接口表示对一个参数做一些操作然后返回操作之后的值.这个接口的有一个抽象方法 apply,这个 ...
- Qt编写音频播放示例(带音频曲线/振幅/传输/录制等)
一.功能特点 自动计算音频振幅,绘制音频振幅曲线和音频数据曲线. 支持音频录制,可选音频输入设备.采样频率.通道等参数,Qt5默认保存wav格式,Qt6默认保存mp3格式,Qt6可选wma.aac等格 ...
- Qt数据库应用3-数据打印到pdf
一.前言 自从数据可以导出到xls,又有客户提出了不同的需求,比如既然可以将数据导出到xls,那是否可以导出到pdf文件呢?因为xls打开以后用户可以修改数据造假之类的,而pdf默认是不可编辑的,除非 ...