1. k8s 1.24.x集群环境中 master节点需安装 docker环境
2. 在/opt/docker 目录下上传 springboot JAR包 。 编写Dockerfile文件
把springboot包 上传到/opt/docker 下

本人项目 端口 8081

Dockerfile暴露8081端口
vi Dockerfile
- FROM java:8
- MAINTAINER zq
- VOLUME /tmp
- ADD common-0.0.1-SNAPSHOT.jar demo.jar
- RUN bash -c 'touch /demo.jar'
- ENTRYPOINT ["java","-jar","/demo.jar"]
- EXPOSE 8081
上传完成与编写Dockerfile完成效果图:

3.在当前目录下 打包镜像
docker build -t demo:1.0 .
4.自己运行测试:
docker run -d -p 8081:8081 demo:1.0
看是否能运行成功。
5.登录自己的dockerHub
[root@master docker]# docker login

登录dockerhub ,打tag镜像,推送镜像到dockerhub
docker tag 镜像id 用户名/镜像名称:版本号
docker push 用户名/镜像名称:版本号
docker tag 0696d2e82f48 heidaodageshiwo/demo:1.0
docker push heidaodageshiwo/demo:1.0
6.登录自己docekerhub查看是否推送成功镜像:

7.查看当前k8s镜像仓库中并没有 刚才上传的镜像

8.进入dockerhub查看上传镜像:

拉取镜像:docker pull heidaodageshiwo/demo:1.0
k8s 1.24版本使用 crictl pull heidaodageshiwo/demo:1.0 拉取镜像(
把docker换成 crictl )

看到镜像已经在 当前命名空间下:
9.本机器命令:
-
- [root@master docker]# vi Dockerfile
- [root@master docker]# docker build -t demo:1.0 .
- Sending build context to Docker daemon 26.78MB
- Step 1/7 : FROM java:8
- 8: Pulling from library/java
- 5040bd298390: Pull complete
- fce5728aad85: Pull complete
- 76610ec20bf5: Pull complete
- 60170fec2151: Pull complete
- e98f73de8f0d: Pull complete
- 11f7af24ed9c: Pull complete
- 49e2d6393f32: Pull complete
- bb9cdec9c7f3: Pull complete
- Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
- Status: Downloaded newer image for java:8
- ---> d23bdf5b1b1b
- Step 2/7 : MAINTAINER zq
- ---> Running in 53a67a6f03b9
- Removing intermediate container 53a67a6f03b9
- ---> 3b18bb3da9e8
- Step 3/7 : VOLUME /tmp
- ---> Running in 342c0bc5f02e
- Removing intermediate container 342c0bc5f02e
- ---> a501a838d0a1
- Step 4/7 : ADD common-0.0.1-SNAPSHOT.jar demo.jar
- ---> 718be419cca3
- Step 5/7 : RUN bash -c 'touch /demo.jar'
- ---> Running in ed41bdb91fa4
- Removing intermediate container ed41bdb91fa4
- ---> 4c87a3541bfb
- Step 6/7 : ENTRYPOINT ["java","-jar","/demo.jar"]
- ---> Running in 1712e351f016
- Removing intermediate container 1712e351f016
- ---> 022cf13c85c9
- Step 7/7 : EXPOSE 8081
- ---> Running in 331249034e13
- Removing intermediate container 331249034e13
- ---> 0696d2e82f48
- Successfully built 0696d2e82f48
- Successfully tagged demo:1.0
- [root@master docker]# docker run -d -p 8081:8081 demo:1.0
- 02f5ea6548252d8ac6d25baed43fa27036f6e8f30446f5882f965391ba909028
- [root@master docker]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 02f5ea654825 demo:1.0 "java -jar /demo.jar" 4 seconds ago Up 2 seconds 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp serene_hopper
- [root@master docker]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- demo 1.0 0696d2e82f48 58 seconds ago 697MB
- java 8 d23bdf5b1b1b 5 years ago 643MB
- [root@master docker]# docker rm -f 02f5ea654825
- 02f5ea654825
- [root@master docker]# docker ps -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- [root@master docker]# docker iamges
- docker: 'iamges' is not a docker command.
- See 'docker --help'
- [root@master docker]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- demo 1.0 0696d2e82f48 About a minute ago 697MB
- java 8 d23bdf5b1b1b 5 years ago 643MB
- [root@master docker]# docker login
- Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
- Username: heidaodageshiwo
- Password:
- WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
- Configure a credential helper to remove this warning. See
- https://docs.docker.com/engine/reference/commandline/login/#credentials-store
- Login Succeeded
- [root@master docker]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- demo 1.0 0696d2e82f48 2 minutes ago 697MB
- java 8 d23bdf5b1b1b 5 years ago 643MB
- [root@master docker]# docker tag 0696d2e82f48 heidaodageshiwo/demo:1.0
- [root@master docker]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- heidaodageshiwo/demo 1.0 0696d2e82f48 4 minutes ago 697MB
- demo 1.0 0696d2e82f48 4 minutes ago 697MB
- java 8 d23bdf5b1b1b 5 years ago 643MB
- [root@master docker]# docker push heidaodageshiwo/demo:1.0
- The push refers to repository [docker.io/heidaodageshiwo/demo]
- 527bd9dadf74: Pushed
- f5b6bd9d054c: Pushed
- 35c20f26d188: Mounted from library/java
- c3fe59dd9556: Mounted from library/java
- 6ed1a81ba5b6: Mounted from library/java
- a3483ce177ce: Mounted from library/java
- ce6c8756685b: Mounted from library/java
- 30339f20ced0: Mounted from library/java
- 0eb22bfb707d: Mounted from library/java
- a2ae92ffcd29: Mounted from library/java
- 1.0: digest: sha256:006e9d9d6a34d99617d0d8e938fbd883cb42f84dd83c09ca9728fe13c4008fb9 size: 2424
- [root@master docker]# crictl iamges
- No help topic for 'iamges'
- [root@master docker]# crictl images
- IMAGE TAG IMAGE ID SIZE
- docker.io/calico/cni v3.23.2 a87d3f6f1b8fd 111MB
- docker.io/calico/node v3.23.2 a3447b26d32c7 77.8MB
- docker.io/library/nginx latest 670dcc86b69df 56.7MB
- registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7a 13.6MB
- registry.aliyuncs.com/google_containers/etcd 3.5.3-0 aebe758cef4cd 102MB
- registry.aliyuncs.com/google_containers/kube-apiserver v1.24.0 529072250ccc6 33.8MB
- registry.aliyuncs.com/google_containers/kube-controller-manager v1.24.0 88784fb4ac2f6 31MB
- registry.aliyuncs.com/google_containers/kube-proxy v1.24.0 77b49675beae1 39.5MB
- registry.aliyuncs.com/google_containers/kube-scheduler v1.24.0 e3ed7dee73e93 15.5MB
- registry.aliyuncs.com/google_containers/pause 3.7 221177c6082a8 311kB
- [root@master docker]# crictl pull heidaodageshiwo/demo:1.0
- Image is up to date for sha256:0696d2e82f48a36fb155691fe8c3a8bc35c52ce5c3236620e2e7fba13fa16aeb
- [root@master docker]# crictl images
- IMAGE TAG IMAGE ID SIZE
- docker.io/calico/cni v3.23.2 a87d3f6f1b8fd 111MB
- docker.io/calico/node v3.23.2 a3447b26d32c7 77.8MB
- docker.io/heidaodageshiwo/demo 1.0 0696d2e82f48a 292MB
- docker.io/library/nginx latest 670dcc86b69df 56.7MB
- registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7a 13.6MB
- registry.aliyuncs.com/google_containers/etcd 3.5.3-0 aebe758cef4cd 102MB
- registry.aliyuncs.com/google_containers/kube-apiserver v1.24.0 529072250ccc6 33.8MB
- registry.aliyuncs.com/google_containers/kube-controller-manager v1.24.0 88784fb4ac2f6 31MB
- registry.aliyuncs.com/google_containers/kube-proxy v1.24.0 77b49675beae1 39.5MB
- registry.aliyuncs.com/google_containers/kube-scheduler v1.24.0 e3ed7dee73e93 15.5MB
- registry.aliyuncs.com/google_containers/pause 3.7 221177c6082a8 311kB
- [root@master docker]# crictl pull java:8
- Image is up to date for sha256:d23bdf5b1b1b1afce5f1d0fd33e7ed8afbc084b594b9ccf742a5b27080d8a4a8
- [root@master docker]# crictl images
- IMAGE TAG IMAGE ID SIZE
- docker.io/calico/cni v3.23.2 a87d3f6f1b8fd 111MB
- docker.io/calico/node v3.23.2 a3447b26d32c7 77.8MB
- docker.io/heidaodageshiwo/demo 1.0 0696d2e82f48a 292MB
- docker.io/library/java 8 d23bdf5b1b1b1 243MB
- docker.io/library/nginx latest 670dcc86b69df 56.7MB
- registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7a 13.6MB
- registry.aliyuncs.com/google_containers/etcd 3.5.3-0 aebe758cef4cd 102MB
- registry.aliyuncs.com/google_containers/kube-apiserver v1.24.0 529072250ccc6 33.8MB
- registry.aliyuncs.com/google_containers/kube-controller-manager v1.24.0 88784fb4ac2f6 31MB
- registry.aliyuncs.com/google_containers/kube-proxy v1.24.0 77b49675beae1 39.5MB
- registry.aliyuncs.com/google_containers/kube-scheduler v1.24.0 e3ed7dee73e93 15.5MB
- registry.aliyuncs.com/google_containers/pause 3.7 221177c6082a8 311kB
- [root@master docker]#
10.空运行测试生成我们的yaml文件
1)命令:
kubectl create deployment deployment名称 --image=我们项目的镜像名称 --dry-run -o yaml > 要生成的yaml文件
注意:--dry-run表示空运行测试,不会真正的运行
-o 表示测试输出
2)执行命令生成我们的yaml模板
命令:kubectl create deployment springboot-k8s --image=docker.io/heidaodageshiwo/demo:1.0 --dry-run -o yaml > deploy.yaml

对上面生成的deploy.yaml文件进行修改,让它使用本地的镜像,因为它默认是去中心仓库拉取镜像的
加入:imagePullPolicy: "IfNotPresent"
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- creationTimestamp: null
- labels:
- app: springboot-k8s
- name: springboot-k8s
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: springboot-k8s
- strategy: {}
- template:
- metadata:
- creationTimestamp: null
- labels:
- app: springboot-k8s
- spec:
- containers:
- - image: docker.io/heidaodageshiwo/demo:1.0
- name: demo
- imagePullPolicy: "IfNotPresent"
- resources: {}
- status: {}
11.运行:
[root@master docker]# kubectl apply -f deploy.yaml
12.查看:


13.看到已经运行成功:
暴露3万端口也可以写service.yml文件方式:
kubectl expose deployment springboot-k8s --port=8081 --type=NodePort
- [root@master docker]# kubectl expose deployment springboot-k8s --port=8081 --type=NodePort
- service/springboot-k8s exposed
- [root@master docker]# kubectl get svc
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes ClusterIP 10.96.0.1
443/TCP 11d - springboot-k8s NodePort 10.109.223.141
8081:30395/TCP 5s - [root@master docker]#
14.访问:
我的springboot 访问接口

界面访问:暴露的30395端口
springboot-k8s NodePort 10.109.223.141


15.本机命令:
-
- [root@master docker]# ll
- 总用量 26152
- -rw-r--r-- 1 root root 26775474 7月 29 16:23 common-0.0.1-SNAPSHOT.jar
- -rw-r--r-- 1 root root 168 7月 29 16:22 Dockerfile
- [root@master docker]# kubectl create deployment springboot-k8s --image=docker.io/heidaodageshiwo/demo:1.0 --dry-run -o yaml > deploy.yaml
- W0729 16:46:32.594741 18750 helpers.go:636] --dry-run is deprecated and can be replaced with --dry-run=client.
- [root@master docker]# ls
- common-0.0.1-SNAPSHOT.jar deploy.yaml Dockerfile
- [root@master docker]# kubectl apply -f deploy.yaml
- deployment.apps/springboot-k8s created
- [root@master docker]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 6s
- [root@master docker]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 10s
- [root@master docker]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 11s
- [root@master docker]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 12s
- [root@master docker]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 13s
- [root@master docker]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 31s
- [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 35s
node2 - [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 95s
node2 - [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 98s
node2 - [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 99s
node2 - [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 2m15s
node2 - [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 1/1 Running 0 2m46s 10.244.104.3 node2
- [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 1/1 Running 0 2m48s 10.244.104.3 node2
- [root@master docker]# kubectl get po -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- springboot-k8s-645899cbc4-8dqvm 1/1 Running 0 2m49s 10.244.104.3 node2
- [root@master docker]# kubectl expose deployment springboot-k8s --port=8081 --type=NodePort
- service/springboot-k8s exposed
- [root@master docker]# kubectl get svc
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes ClusterIP 10.96.0.1
443/TCP 11d - springboot-k8s NodePort 10.109.223.141
8081:30395/TCP 5s - [root@master docker]#
16.看到 本项目被调度到node2 节点:

查看node2节点镜像:可以看到 demo 与java8镜像都已经拉取到了本空间中
