kubernete运行简单的应用
k8s安装完成,需要来验证一下是否可以集群启动应用
环境准备
- 安装好k8s的集群
- docker
需要了解的知识
- docker构建镜像以及推送镜像到仓库
- 阿里云容器镜像服务(对应的需要去阿里云查询)
- k8s 服务文件编写
构建简单的应用
- 这里使用的是springBoot的应用,是eureka注册中心(这个大家可以自主新建项目以及打包成jar文件),文件比较大,大家自行构建
- 也可以自己新建其他类型或者语言的应用(例如vue/pythonFastApi项目,区别只在启动命令不同)
运行docker部分命令
新建Dockerfile
参考Dockerfile1
2
3
4
5
6
7
8
9
10
11
12
13
14// 需要依赖的环境, 也可以是nodejs或者python等,具体可以去docker的hub中心查找
FROM openjdk:11-jdk
// 新建文件夹
RUN mkdir /app
// 移动到app目录,将app作为工作目录
WORKDIR /app
// 将宿主机打包生成的jar文件 添加到镜像中,并且移动到app下,修改名称为app.jar
ADD ./eureka-0.0.1-SNAPSHOT.jar /app/app.jar
// 开放8200端口,这里要和程序里面的一致
EXPOSE 8200
// 具体启动程序命令
ENTRYPOINT ["java", "-jar", "app.jar"]进行构建docker镜像
1
2
3
4
5docker build -t hanbin/eureka:1.0 [-f DockerfileDir] .
-t 构建镜像的名称与版本
-f 如果Dockerfile不在当前目录,则需要指定,指定到Dockerfile目录级即可
. 固定带,指文件名称是 Dockerfile查看是否构建成功
一般在成功,会有对应输出,也可以使用命令查看本地镜像列表1
docker images
docker镜像进行提交到阿里云容器服务(可选,建议)
构建成功之后,一般是都提交到对应的镜像仓库,公共的有docker Hub的,也有阿里云或者腾讯云,或者自己私有化部署,都可以选择,这里以阿里云为例
阿里云容器镜像服务
可以根据需要开通,免费试用,申请个人服务即可1
2
3
4
5
6
7
8
9命令可以在镜像服务仓库列表,点击对应的仓库名称,进入对应的基本信息页面,可以看到
这个是docker登录命令,只有登录成功才可以成功推送或者拉取镜像,不管在打包服务器或者容器部署的服务器
docker login --username=xxxx registry-vpc.cn-shanghai.aliyuncs.com
imageId 可以使用docker images命令查看, 镜像版本号可以根据需求自行更改
docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/han-bin/koishi:[镜像版本号]
推送到容器镜像仓库,版本号要与上一个命令一致
docker push registry.cn-shanghai.aliyuncs.com/han-bin/koishi:[镜像版本号]编写k8s服务文件
新建对应的yaml文件,我这里叫selfServerEureka.yaml
参考selfServerEureka.yaml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55apiVersion: apps/v1
kind: Deployment #部署
metadata:
name: self-server-eureka # 服务名
spec:
replicas: 2 #2个副本
selector:
matchLabels:
app: self-server-eureka # 服务名
template:
metadata:
labels:
app: self-server-eureka # 服务名
spec:
containers:
- name: self-server-eureka # 服务名
image: registry-vpc.cn-shanghai.aliyuncs.com/hanbinsite-0/self-server:1.0.1 #刚刚push到阿里云上的镜像地址
ports:
- containerPort: 8200 #默认springboot端口
---
apiVersion: v1
kind: Service
metadata:
name: self-server-eureka
spec:
selector:
app: self-server-eureka #选中上面的 Deployment
ports:
- port: 8200 #对外7003端口
targetPort: 8200
---
#Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myingress
labels:
name: myingress
spec:
IngressClass: nginx
rules:
- host: eureka.xxx.com #所有的host这个域名请求 转发到上面的 Service= self-server-eureka, 如果没有公网解析或者公网IP,则可以修改本机hosts文件
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: self-server-eureka # 转发到 这个Service
port:
number: 8200启动命令,可以使用命令进行查看,或者在 dashboard查看所有已经启动的服务
1
kubectl apply -f selfServerEureka.yaml
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 翰林院!
评论