• k8s1.24 部署springboot项目


    1. k8s 1.24.x集群环境中   master节点需安装 docker环境

    2. 在/opt/docker 目录下上传 springboot  JAR包 。 编写Dockerfile文件

    把springboot包 上传到/opt/docker  下

     

     本人项目 端口 8081

    Dockerfile暴露8081端口

    vi Dockerfile

    1. FROM java:8
    2. MAINTAINER zq  
    3. VOLUME /tmp    
    4. ADD common-0.0.1-SNAPSHOT.jar demo.jar   
    5. RUN bash -c 'touch /demo.jar'
    6. ENTRYPOINT ["java","-jar","/demo.jar"]
    7. 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.本机器命令:

    1. [root@master docker]# vi Dockerfile
    2. [root@master docker]# docker build -t demo:1.0 .
    3. Sending build context to Docker daemon 26.78MB
    4. Step 1/7 : FROM java:8
    5. 8: Pulling from library/java
    6. 5040bd298390: Pull complete
    7. fce5728aad85: Pull complete
    8. 76610ec20bf5: Pull complete
    9. 60170fec2151: Pull complete
    10. e98f73de8f0d: Pull complete
    11. 11f7af24ed9c: Pull complete
    12. 49e2d6393f32: Pull complete
    13. bb9cdec9c7f3: Pull complete
    14. Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
    15. Status: Downloaded newer image for java:8
    16. ---> d23bdf5b1b1b
    17. Step 2/7 : MAINTAINER zq
    18. ---> Running in 53a67a6f03b9
    19. Removing intermediate container 53a67a6f03b9
    20. ---> 3b18bb3da9e8
    21. Step 3/7 : VOLUME /tmp
    22. ---> Running in 342c0bc5f02e
    23. Removing intermediate container 342c0bc5f02e
    24. ---> a501a838d0a1
    25. Step 4/7 : ADD common-0.0.1-SNAPSHOT.jar demo.jar
    26. ---> 718be419cca3
    27. Step 5/7 : RUN bash -c 'touch /demo.jar'
    28. ---> Running in ed41bdb91fa4
    29. Removing intermediate container ed41bdb91fa4
    30. ---> 4c87a3541bfb
    31. Step 6/7 : ENTRYPOINT ["java","-jar","/demo.jar"]
    32. ---> Running in 1712e351f016
    33. Removing intermediate container 1712e351f016
    34. ---> 022cf13c85c9
    35. Step 7/7 : EXPOSE 8081
    36. ---> Running in 331249034e13
    37. Removing intermediate container 331249034e13
    38. ---> 0696d2e82f48
    39. Successfully built 0696d2e82f48
    40. Successfully tagged demo:1.0
    41. [root@master docker]# docker run -d -p 8081:8081 demo:1.0
    42. 02f5ea6548252d8ac6d25baed43fa27036f6e8f30446f5882f965391ba909028
    43. [root@master docker]# docker ps
    44. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    45. 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
    46. [root@master docker]# docker images
    47. REPOSITORY TAG IMAGE ID CREATED SIZE
    48. demo 1.0 0696d2e82f48 58 seconds ago 697MB
    49. java 8 d23bdf5b1b1b 5 years ago 643MB
    50. [root@master docker]# docker rm -f 02f5ea654825
    51. 02f5ea654825
    52. [root@master docker]# docker ps -a
    53. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    54. [root@master docker]# docker iamges
    55. docker: 'iamges' is not a docker command.
    56. See 'docker --help'
    57. [root@master docker]# docker images
    58. REPOSITORY TAG IMAGE ID CREATED SIZE
    59. demo 1.0 0696d2e82f48 About a minute ago 697MB
    60. java 8 d23bdf5b1b1b 5 years ago 643MB
    61. [root@master docker]# docker login
    62. 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.
    63. Username: heidaodageshiwo
    64. Password:
    65. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    66. Configure a credential helper to remove this warning. See
    67. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    68. Login Succeeded
    69. [root@master docker]# docker images
    70. REPOSITORY TAG IMAGE ID CREATED SIZE
    71. demo 1.0 0696d2e82f48 2 minutes ago 697MB
    72. java 8 d23bdf5b1b1b 5 years ago 643MB
    73. [root@master docker]# docker tag 0696d2e82f48 heidaodageshiwo/demo:1.0
    74. [root@master docker]# docker images
    75. REPOSITORY TAG IMAGE ID CREATED SIZE
    76. heidaodageshiwo/demo 1.0 0696d2e82f48 4 minutes ago 697MB
    77. demo 1.0 0696d2e82f48 4 minutes ago 697MB
    78. java 8 d23bdf5b1b1b 5 years ago 643MB
    79. [root@master docker]# docker push heidaodageshiwo/demo:1.0
    80. The push refers to repository [docker.io/heidaodageshiwo/demo]
    81. 527bd9dadf74: Pushed
    82. f5b6bd9d054c: Pushed
    83. 35c20f26d188: Mounted from library/java
    84. c3fe59dd9556: Mounted from library/java
    85. 6ed1a81ba5b6: Mounted from library/java
    86. a3483ce177ce: Mounted from library/java
    87. ce6c8756685b: Mounted from library/java
    88. 30339f20ced0: Mounted from library/java
    89. 0eb22bfb707d: Mounted from library/java
    90. a2ae92ffcd29: Mounted from library/java
    91. 1.0: digest: sha256:006e9d9d6a34d99617d0d8e938fbd883cb42f84dd83c09ca9728fe13c4008fb9 size: 2424
    92. [root@master docker]# crictl iamges
    93. No help topic for 'iamges'
    94. [root@master docker]# crictl images
    95. IMAGE TAG IMAGE ID SIZE
    96. docker.io/calico/cni v3.23.2 a87d3f6f1b8fd 111MB
    97. docker.io/calico/node v3.23.2 a3447b26d32c7 77.8MB
    98. docker.io/library/nginx latest 670dcc86b69df 56.7MB
    99. registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7a 13.6MB
    100. registry.aliyuncs.com/google_containers/etcd 3.5.3-0 aebe758cef4cd 102MB
    101. registry.aliyuncs.com/google_containers/kube-apiserver v1.24.0 529072250ccc6 33.8MB
    102. registry.aliyuncs.com/google_containers/kube-controller-manager v1.24.0 88784fb4ac2f6 31MB
    103. registry.aliyuncs.com/google_containers/kube-proxy v1.24.0 77b49675beae1 39.5MB
    104. registry.aliyuncs.com/google_containers/kube-scheduler v1.24.0 e3ed7dee73e93 15.5MB
    105. registry.aliyuncs.com/google_containers/pause 3.7 221177c6082a8 311kB
    106. [root@master docker]# crictl pull heidaodageshiwo/demo:1.0
    107. Image is up to date for sha256:0696d2e82f48a36fb155691fe8c3a8bc35c52ce5c3236620e2e7fba13fa16aeb
    108. [root@master docker]# crictl images
    109. IMAGE TAG IMAGE ID SIZE
    110. docker.io/calico/cni v3.23.2 a87d3f6f1b8fd 111MB
    111. docker.io/calico/node v3.23.2 a3447b26d32c7 77.8MB
    112. docker.io/heidaodageshiwo/demo 1.0 0696d2e82f48a 292MB
    113. docker.io/library/nginx latest 670dcc86b69df 56.7MB
    114. registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7a 13.6MB
    115. registry.aliyuncs.com/google_containers/etcd 3.5.3-0 aebe758cef4cd 102MB
    116. registry.aliyuncs.com/google_containers/kube-apiserver v1.24.0 529072250ccc6 33.8MB
    117. registry.aliyuncs.com/google_containers/kube-controller-manager v1.24.0 88784fb4ac2f6 31MB
    118. registry.aliyuncs.com/google_containers/kube-proxy v1.24.0 77b49675beae1 39.5MB
    119. registry.aliyuncs.com/google_containers/kube-scheduler v1.24.0 e3ed7dee73e93 15.5MB
    120. registry.aliyuncs.com/google_containers/pause 3.7 221177c6082a8 311kB
    121. [root@master docker]# crictl pull java:8
    122. Image is up to date for sha256:d23bdf5b1b1b1afce5f1d0fd33e7ed8afbc084b594b9ccf742a5b27080d8a4a8
    123. [root@master docker]# crictl images
    124. IMAGE TAG IMAGE ID SIZE
    125. docker.io/calico/cni v3.23.2 a87d3f6f1b8fd 111MB
    126. docker.io/calico/node v3.23.2 a3447b26d32c7 77.8MB
    127. docker.io/heidaodageshiwo/demo 1.0 0696d2e82f48a 292MB
    128. docker.io/library/java 8 d23bdf5b1b1b1 243MB
    129. docker.io/library/nginx latest 670dcc86b69df 56.7MB
    130. registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7a 13.6MB
    131. registry.aliyuncs.com/google_containers/etcd 3.5.3-0 aebe758cef4cd 102MB
    132. registry.aliyuncs.com/google_containers/kube-apiserver v1.24.0 529072250ccc6 33.8MB
    133. registry.aliyuncs.com/google_containers/kube-controller-manager v1.24.0 88784fb4ac2f6 31MB
    134. registry.aliyuncs.com/google_containers/kube-proxy v1.24.0 77b49675beae1 39.5MB
    135. registry.aliyuncs.com/google_containers/kube-scheduler v1.24.0 e3ed7dee73e93 15.5MB
    136. registry.aliyuncs.com/google_containers/pause 3.7 221177c6082a8 311kB
    137. [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"

    1. apiVersion: apps/v1
    2. kind: Deployment
    3. metadata:
    4. creationTimestamp: null
    5. labels:
    6. app: springboot-k8s
    7. name: springboot-k8s
    8. spec:
    9. replicas: 1
    10. selector:
    11. matchLabels:
    12. app: springboot-k8s
    13. strategy: {}
    14. template:
    15. metadata:
    16. creationTimestamp: null
    17. labels:
    18. app: springboot-k8s
    19. spec:
    20. containers:
    21. - image: docker.io/heidaodageshiwo/demo:1.0
    22. name: demo
    23. imagePullPolicy: "IfNotPresent"
    24. resources: {}
    25. status: {}

    11.运行:

    [root@master docker]# kubectl apply -f deploy.yaml
    

    12.查看:

    13.看到已经运行成功:

    暴露3万端口也可以写service.yml文件方式:

    kubectl expose deployment springboot-k8s --port=8081 --type=NodePort
    

    1. [root@master docker]# kubectl expose deployment springboot-k8s --port=8081 --type=NodePort
    2. service/springboot-k8s exposed
    3. [root@master docker]# kubectl get svc
    4. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    5. kubernetes ClusterIP 10.96.0.1 443/TCP 11d
    6. springboot-k8s NodePort 10.109.223.141 8081:30395/TCP 5s
    7. [root@master docker]#

    14.访问:

    我的springboot 访问接口

    界面访问:暴露的30395端口

    springboot-k8s   NodePort    10.109.223.141          8081:30395/TCP   5s
     

     15.本机命令:

    1. [root@master docker]# ll
    2. 总用量 26152
    3. -rw-r--r-- 1 root root 26775474 7月 29 16:23 common-0.0.1-SNAPSHOT.jar
    4. -rw-r--r-- 1 root root 168 7月 29 16:22 Dockerfile
    5. [root@master docker]# kubectl create deployment springboot-k8s --image=docker.io/heidaodageshiwo/demo:1.0 --dry-run -o yaml > deploy.yaml
    6. W0729 16:46:32.594741 18750 helpers.go:636] --dry-run is deprecated and can be replaced with --dry-run=client.
    7. [root@master docker]# ls
    8. common-0.0.1-SNAPSHOT.jar deploy.yaml Dockerfile
    9. [root@master docker]# kubectl apply -f deploy.yaml
    10. deployment.apps/springboot-k8s created
    11. [root@master docker]# kubectl get po
    12. NAME READY STATUS RESTARTS AGE
    13. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 6s
    14. [root@master docker]# kubectl get po
    15. NAME READY STATUS RESTARTS AGE
    16. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 10s
    17. [root@master docker]# kubectl get po
    18. NAME READY STATUS RESTARTS AGE
    19. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 11s
    20. [root@master docker]# kubectl get po
    21. NAME READY STATUS RESTARTS AGE
    22. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 12s
    23. [root@master docker]# kubectl get po
    24. NAME READY STATUS RESTARTS AGE
    25. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 13s
    26. [root@master docker]# kubectl get po
    27. NAME READY STATUS RESTARTS AGE
    28. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 31s
    29. [root@master docker]# kubectl get po -o wide
    30. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    31. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 35s node2
    32. [root@master docker]# kubectl get po -o wide
    33. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    34. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 95s node2
    35. [root@master docker]# kubectl get po -o wide
    36. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    37. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 98s node2
    38. [root@master docker]# kubectl get po -o wide
    39. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    40. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 99s node2
    41. [root@master docker]# kubectl get po -o wide
    42. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    43. springboot-k8s-645899cbc4-8dqvm 0/1 ContainerCreating 0 2m15s node2
    44. [root@master docker]# kubectl get po -o wide
    45. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    46. springboot-k8s-645899cbc4-8dqvm 1/1 Running 0 2m46s 10.244.104.3 node2
    47. [root@master docker]# kubectl get po -o wide
    48. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    49. springboot-k8s-645899cbc4-8dqvm 1/1 Running 0 2m48s 10.244.104.3 node2
    50. [root@master docker]# kubectl get po -o wide
    51. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    52. springboot-k8s-645899cbc4-8dqvm 1/1 Running 0 2m49s 10.244.104.3 node2
    53. [root@master docker]# kubectl expose deployment springboot-k8s --port=8081 --type=NodePort
    54. service/springboot-k8s exposed
    55. [root@master docker]# kubectl get svc
    56. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    57. kubernetes ClusterIP 10.96.0.1 443/TCP 11d
    58. springboot-k8s NodePort 10.109.223.141 8081:30395/TCP 5s
    59. [root@master docker]#

    16.看到 本项目被调度到node2 节点:

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

    17.结束

  • 相关阅读:
    如何搭建代理镜像仓库
    HTTP协议
    AM@定积分的基本概念和性质
    2022年12月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
    pytest合集(10)— 兼容unittest框架
    为Ubuntu18.04云服务器创建sudo用户
    中国本土Tier1加速崛起,这家ADAS厂商如何在多赛道领跑?
    Linux高性能服务器编程——ch6笔记
    网络安全宣传周|这些网络安全知识赶紧get起来~
    下载运行ps软件提示因为计算机中丢失d3dcompiler_47.dll解决方法
  • 原文地址:https://blog.csdn.net/hunheidaode/article/details/126059715