一起探讨学习
每天给大家提供技术干货
博主技术笔记 https://notes.xiyankt.com
博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star https://gitee.com/bright-boy/xiyan-blog
上篇文章介绍了如果安装Kubernetes
何为“容器化应用”?
通俗点来说,就是你把一个程序放在docker里部署,这个docker应用就是容器化应用;
比如:在docker里面部署一个springboot,这个docker+springboot一起就是一个容器化应用;
在Docker里面部署一个nginx,这个docker+nginx一起就是一个容器化应用;
在Docker里面部署一个应用怎么部?
简单来说就是 镜像 -> 启动镜像得到一个Docker容器;
在k8s里面部署一个应用怎么部?
SpringBoot程序–>打包jar包或war包–>通过Dockerfile文件生成docker镜像–>通过k8s部署这个镜像–>部署完毕;
1.在Kubernetes集群中部署一个Nginx:
# pod
kubectl create deployment nginx --image=nginx
#暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort
#获取pod
kubectl get pod
访问地址:http://NodeIP:Port
2.在Kubernetes集群中部署一个Tomcat:
1、项目打包(jar、war)-->可以采用一些工具git、maven、jenkins
2、制作Dockerfile文件,生成镜像;
3、kubectl create deployment nginx --image= 你的镜像
4、你的springboot就部署好了,是以docker容器的方式运行在pod里面的;
3.K8s部署微服务(springboot程序)
3.1Dockerfile脚本
###指定java8环境镜像
FROM java:8
###复制文件到容器app-springboot
ADD docker-springboot-0.0.1.jar /test.jar
###声明启动端口号
EXPOSE 8080
###配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/test.jar"]
3.2构建镜像:docker build -t test .
3.3空运行测试(可以输出为yml或者是jsob)
kubectl create deployment test --dry-run -o yaml > deploy.yaml
kubectl create deployment test --dry-run -o json> deploy.json
3.4Yml文件方式部署(也可以通过命令部署)
kubectl apply -f deploy.yaml (yaml是资源清单)
等价于:
kubectl create deployment springboot-k8s --image=test
部署后查看一下:
kubectl get pods
注意:boot-deploy.yaml文件里面镜像从本地拉取(Always 总是远程拉取,IfNotPresent 默认值,本地有则使用本地镜像,不拉取,Never 只使用本地镜像,从不拉取);
containers:
- image: 38-springboot-k8s-1.0.0-jar
name: 38-springboot-k8s-1-0-0-jar-8ntrx
imagePullPolicy: Never
把镜像拉取策略改为Never;
3.5暴露服务端口:
kubectl expose deployment springboot-k8s --port=8080 --type=NodePort
3.6命令方式部署
kubectl create deployment springboot-k8s --image=test
4.基本命令
查看一下,相关命令:
kubectl get node(s)
kubectl get service(s)
kubectl get deployment (deploy)
kubectl get pod(s)//生成yml文件kubectl create deployment web --image=nginx -o yaml --dry-run > web.yml
//删除service
kubectl delete service nginx
//删除nginx的控制器
kubectl delete deployment nginx
//删除pod
kubectl delete pod nginx-6799fc88d8-zc48m(pod名字)
kubectl get ing(ress) --查规则
kubectl get service -n ingress-nginx
kubectl get deploy -n ingress-nginx
kubectl get pods -n ingress-nginx
看pod详情:
kubectl describe pods spring-cloud-alibaba-consumer-5d557f4765-d27d9
看pod运行日志:
kubectl logs -f spring-cloud-alibaba-consumer-8697896544-g6rsf
//kubectl命令帮助
kubectl --help