欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > kubernetes(K8s)学习(一)

kubernetes(K8s)学习(一)

2024/10/24 1:58:23 来源:https://blog.csdn.net/qq_15897815/article/details/142720603  浏览:    关键词:kubernetes(K8s)学习(一)

本文主要是搭建一个k8s平台,并部署一个springboot的jar包,后续以此作为学习k8s的环境。

1. 搭建k8s集群

        网上有很多指导,大家可以在网上搜索一下,比如这个:K8s搭建集群-CSDN博客,本人通过VMware安装3台虚拟机,部署了3个节点,最终的效果如下,master节点的ip是192.168.102.10,node1节点的ip是192.168.102.11,node2节点的ip是192.168.102.12:

2. 编写java代码

        本文实现一个springboot访问接口,在外部可通过80端口访问,关键代码如下:

package com.kingyal.test.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@RestController
public class HelloWorldController {private static int count = 0;@RequestMapping("/hello")public String hello(String name){count++;String time = getCurrenttime();String printLog = "hello String boot, current time is :"+time +" ,count = " + String.valueOf(count);System.out.println(printLog);return printLog;}private String getCurrenttime() {LocalDateTime currentDateTime = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");String timestamp = currentDateTime.format(formatter);return timestamp;}
}

3. 编写Dockerfile文件

        dockerfile文件的目的是编译出对应的docker镜像,该文件必须命名为Dockerfile:

#基础镜像 java打包需要依赖jdk
FROM openjdk:8-jre-alpine
#将日志打印到/var/log目录下
VOLUME /var/log
#将虚拟机的war包,cp到docker容器内部
COPY springboot_demo-1.0-SNAPSHOT.jar springboot_demo-1.0-SNAPSHOT.jar
#指定docker容器时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Beijing' >/etc/timezone
# 脚本启动
ENTRYPOINT ["sh","-c","java -server -Dfile.encoding=utf-8 -Xms1024m -Xms1536m -jar -Dserver.port=80  -Dspring.profiles.active=prod springboot_demo-1.0-SNAPSHOT.jar"]

4. 编写yaml文件

        编写yaml文件是k8s的关键文件,通过该文件,可以指定pod的相关参数,,该文件的命名必须以.yaml后缀结果,比如可取名为deployment.yaml,详情后续再说:

apiVersion: apps/v1
kind: Deployment
metadata:name: demo-server
spec:replicas: 1selector:matchLabels:app: demo-servertemplate:metadata:labels:app: demo-serverspec:containers:- name: demo-serverimage: an/demo_server:v1.0.0ports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: demo-server
spec:selector:app: demo-serverports:- protocol: TCPport: 80targetPort: 80nodePort: 31001type: NodePort

5. 部署到k8s,查看结果

将Dockerfile,yaml文件deployment.yaml,以及jar包上传到master节点的某个目录下:

将Dockerfile,以及jar包分别上传到node1,node2节点的某个目录下:

由于没有做镜像仓库,因此,需要在3个节点都编译镜像,在3个节点都执行此命令:docker image build -t an/demo_server:v1.0.0 .

执行docker images命令可看到镜像已经编译完成:

在master节点执行yaml文件,即执行此命令 kubectl apply -f deployment.yaml:

执行此命令 kubectl get pod -A -owide 查看pod运行状态,此时可以看到jar包对应的镜像在node2节点上生成了一个pod,并且正在运行中:

在mster节点执行此命令 curl http://192.168.102.12:31001/hello ,可以访问到pod中的tomcat返回的数据:

也可以在浏览器中输入 http://192.168.102.12:31001/hello,访问到数据:

至此,已经实现在k8s中部署jar包并成功访问,后续基于此环境继续深入学习k8s。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com