栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kubernetes (四) --------- K8s 部署容器化应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kubernetes (四) --------- K8s 部署容器化应用

目录
  • 一、什么是容器化应用 ?
  • 二、在 K8s 集群中部署 Nginx
  • 三、在 K8s 集群中部署一个 Tomcat
  • 四、在 K8s 集群中部署 SpringBoot 应用


一、什么是容器化应用 ?

何为容器化应用?

通俗点来说,就是你把一个程序放在 docker 里部署,这个 docker 应用就是容器化应用。

比如:

  • 在 Docker 里面部署一个 SpringBoot,这个Docker + SpringBoot 一起就是一个容器化应用。

  • 在 Docker 里面部署一个 Nginx,这个Docker + Nginx 一起就是一个容器化应用。

在 Docker 里面部署一个应用怎么部?

简单来说就是

镜像 -----> 启动镜像得到一个Docker容器;

在 K8s 里面部署一个应用怎么部?

SpringBoot程序 --> 打包 jar 包或 war 包 --> 通过 Dockerfile 文件生成 docker 镜像--> 通过K8s部署这个镜像 --> 部署完毕;

总结一下 Kubernetes 部署容器化应用的步骤:

1、制作镜像 (自己编写 Dockerfile 文件制作,或者 从仓库 pull 镜像)

2、通过控制器管理 pod (其实就是把镜像启动得到一个容器,容器在 pod 里)

3、暴露应用,以便外界可以访问

二、在 K8s 集群中部署 Nginx

1、制作镜像(有现成的,从官方仓库 pull 即可,不需要制作)

2、kubectl create deployment nginx --image=nginx

3、kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort

4、访问应用;

查看一下,相关命令:

kubectl get node(s)
kubectl get service(s)
kubectl get deployment (deploy)
kubectl get pod(s)
//删除service
kubectl delete service nginx
//删除nginx的控制器
kubectl delete deployment nginx
//删除pod
kubectl delete pod nginx-6799fc88d8-zc48m(pod名字)
//kubectl命令帮助
kubectl --help

访问地址:http://NodeIP:Port

Docker镜像加速器:

/etc/docker/daemon.json 
{
"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]
}
三、在 K8s 集群中部署一个 Tomcat
kubectl create deployment tomcat --image=tomcat
kubectl expose deployment tomcat --port=8080 --type=NodePort

访问地址:http://NodeIP:Port

四、在 K8s 集群中部署 SpringBoot 应用

1、项目打包 (jar、war) --> 可以采用一些工具 git、maven、jenkins;

2、制作 Dockerfile 文件,生成镜像;

3、kubectl create deployment your-springboot --image=你的镜像;

4、你的 SpringBoot 就部署好了,是以 docker 容器的方式运行在 pod 里面的;

Master 控制 Node --> service --> deployment(控制器) --> pod --> docker

自定义JDK镜像

FROM centos:latest
MAINTAINER fancy
ADD jdk-8u251-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 -version

构建镜像:docker build -t jdk1.8.0_251 .
运行镜像:docker run -d ac84bde53958 (镜像id)

构建项目镜像

FROM jdk1.8.0_251
MAINTAINER fancy
ADD 38-springboot-k8s-1.0.0.jar /opt
RUN chmod +x /opt/38-springboot-k8s-1.0.0.jar
CMD java -jar /opt/38-springboot-k8s-1.0.0.jar

构建镜像:docker build -t 38-springboot-k8s-1.0.0-jar.

空运行测试

kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o yaml

kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o json

kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o yaml > deploy.yaml

kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o json> deploy.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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号