Skip to main content

moregeek program

springboot服务迁移至kubernetes_梨花海棠的博客-多极客编程

1.准备Docker编译工作
1.1基础准备之安装java环境

1.java
[root@kn-server-master01-13 springboot]# yum install java -y
1.2安装maven

2.Maven使Maven
maven: https://maven.apache.org/download.cgi
3..gz
[root@kn-server-master01-13 springboot]# tar -xvf apache-maven-3.8.6-bin.tar.gz
4.
vim /etc/profile
export M2_HOME=/usr/local/apache-maven-3.8.6
export PATH=${M2_HOME}/bin:$PATH
5.
# source /etc/profile
6.mavenaliyun
https://maven.aliyun.com/repository/public

7.centos
[root@kn-server-master01-13 springboot]# yum install maven -y
1.3对Springboot应用进行编译并运行

1.tar
[root@kn-server-master01-13 springboot]# tar -xvf springboot-helloworld-jar.tar.gz
2.
[root@kn-server-master01-13 springboot-helloworld]# mvn clean package
[INFO] Scanning for projects...
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/com/google/guava/guava/11.0.2/guava-11.0.2.jar
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/vafer/jdependency/0.7/jdependency-0.7.jar (12 kB at 4.4 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar (88 kB at 32 kB/s)
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/asm/asm-util/3.2/asm-util-3.2.jar (37 kB at 13 kB/s)
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar (33 kB at 11 kB/s)
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/asm/asm-analysis/3.2/asm-analysis-3.2.jar (18 kB at 5.8 kB/s)
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/com/google/guava/guava/11.0.2/guava-11.0.2.jar (1.6 MB at 495 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:26 min
[INFO] Finished at: 2022-09-20T14:28:33+08:00
[INFO] ------------------------------------------------------------------------


3.jar
root@ks-master01-10:/cloud-Native/springboot/springboot-helloworld/target# ll
total 12460
drwxr-xr-x 6 root root 4096 Sep 20 14:28 ./
drwxr-xr-x 4 root root 4096 Sep 20 14:27 ../
drwxr-xr-x 3 root root 4096 Sep 20 14:27 classes/
-rw-r--r-- 1 root root 12726619 Sep 20 14:28 demo-service-1.0.jar
-rw-r--r-- 1 root root 3556 Sep 20 14:28 demo-service-1.0.jar.original
drwxr-xr-x 3 root root 4096 Sep 20 14:27 generated-sources/
drwxr-xr-x 2 root root 4096 Sep 20 14:28 maven-archiver/
drwxr-xr-x 3 root root 4096 Sep 20 14:27 maven-status/


4.jar
[root@kn-server-master01-13 target]# java -jar demo-service-1.0.jar
seconds (JVM running for 2.974)
2022-09-20 15:32:30.399 INFO 2344 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2022-09-20 15:32:30.399 INFO 2344 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2022-09-20 15:32:30.413 INFO 2344 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 14 ms

1.4访问测试;

1.8080
root@kn-server-master01-13 ~]# netstat -tnlp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 13518/java
2.curl访
[root@kn-server-master01-13 ~]# curl 10.0.0.13:8080/
Hello Knative

SpringBoot服务迁移至kubernetes_kubernetes

2.准备Spring应用迁移至kubernetes
2.1准备Deployment配置片段;

[root@kn-server-master01-13 ~]# cat springboot-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot
spec:
replicas: 3
selector:
matchLabels:
app: spring
template:
metadata:
labels:
app: spring
spec:
containers:
- name: springboot
image: registry.cn-hangzhou.aliyuncs.com/lengyuye/springboot:v1.0
ports:
- name: http
containerPort: 8080
env: # 传递初始堆内存和最大堆内存占用
- name: XMS_OPTS
valueFrom:
resourceFieldRef:
resource: requests.memory
- name: XMX_OPTS
valueFrom:
resourceFieldRef:
resource: limits.memory
resources:
requests:
memory: 150Mi
limits:
memory: 300Mi
readinessProbe: # 就绪探针;如果端口不存活,则从负载均衡中移除
tcpSocket:
port: http # http是一个名字;它会获取这个名字对应的端口;
initialDelaySeconds: 10
failureThreshold: 3

livenessProbe: # 存活探针;获取url,状态码不对那么则触发重启操作
httpGet:
path: /
port: http
initialDelaySeconds: 10
failureThreshold: 3
[root@kn-server-master01-13 ~]# kubectl apply -f springboot-deploy.yaml
deployment.apps/springboot created

查看Pod是否运行

[root@kn-server-master01-13 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
springboot-bd6f67ff-c6dtn 1/1 Running 0 107s
springboot-bd6f67ff-jcjst 1/1 Running 0 107s
springboot-bd6f67ff-pk8gz 1/1 Running 0 107s
2.2准备Service配置文件

[root@kn-server-master01-13 ~]# cat springboot-svc.yaml 
apiVersion: v1
kind: Service
metadata:
name: spring-svc
spec:
type: NodePort
clusterIP:
selector:
app: spring
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080 # 后端Pod监听什么端口就写什么端口。要不然到达Service的请求转发给Pod,Pod没有那个端口也没用。一定真正转发到后端程序监听的端口。如果没有特殊情况的话,ServicePort和TargetPort保持一致。NodePort可以不用指定。
nodePort: # 正常情况下应由系统自己分配,除非事先能够明确知道它不会与某个现存的Service资源产生冲突,没有特别需求,留给系统自动配置总是好的选择。
[root@kn-server-master01-13 ~]# kubectl apply -f springboot-svc.yaml
service/spring-svc created

查看Serivces资源是否关联Pod;

SVCNodePort
[root@kn-server-master01-13 ~]# kubectl get svc
spring-svc NodePort 10.96.14.100 <none> 8080:32629/TCP 100m

Pod
[root@kn-server-master01-13 ~]# kubectl describe svc spring-svc
Name: spring-svc
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=spring
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.96.14.100
IPs: 10.96.14.100
Port: http 8080/TCP
TargetPort: 8080/TCP
NodePort: http 32629/TCP
Endpoints: 192.168.2.46:8080,192.168.2.47:8080,192.168.2.48:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>

NodePort访
[root@kn-server-master01-13 springboot-helloworld]# curl 10.96.14.100:8080/
Hello Knative
2.3集群外测试访问;

SpringBoot服务迁移至kubernetes_SpringCloud_02

©著作权归作者所有:来自51CTO博客作者潇湘海棠的原创作品,请联系作者获取转载授权,否则将追究法律责任

在windows电脑上配置kubectl远程操作kubernetes_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 Kubernetes集群经常部署在Linux环境,而本机环境经常是Windows,除了ssh登录到kubernetes所在机器进行操作,也可以在本机配置kubectl,来远程操作服务器上的kubernetes。 环境信息 kubern

laxcus分布式操作系统6.0 rp2版本发布_赵大奇的博客-多极客编程

在Laxcus分布式操作系统6.0版本发布5个月之后,6.0 RP2版本也在近日正式发布。RP是“Release Package”的意思,6.0 RP2是Laxcus 6.0分布式操作系统第二个修正释放版。它在之前6.0系列版本的基础上,对用户使用中出现的一些问题,进行了优化和调整,同时根据用户反馈,改善了数据库、云存储、图形界面的一些功能。这些修正大致包括以下内容。​正式放弃32位版本,全力打造

基于 coredns 和 k8s 构建云原生场景下的企业级 dns_mb6220302e2eb41的博客-多极客编程

容器作为近些年最火热的后端技术,加快了很多企业的数字化转型进程。目前的企业,不是在使用云原生技术,就是在转向云原生技术的过程中。在容器化进程中,如何保持业务的平稳迁移,如何将现有的一些服务设施一并进行容器化迁移,也是众多企业较为关注的点。以 DNS 为例,如何构建一个云原生的企业 DNS 系统?CoreDNS 简介CoreDNS 是一个 Go 语言编写的灵活可扩展的 DNS 服务器,在 Kuber

个人超级计算机_赵大奇的博客-多极客编程

这篇文章是回答一位用户的问题。​问:站长,我是一个在读研究生,正在学习分布式计算、高性能集群计算方面的知识,Laxcus分布式操作系统也是我的学习模板之一,但是我发现,无论是编程开发还是使用操作,Laxcus和Slurm、HTCondor都非常不一样,请问站长,Laxcus的产品定位是什么,我应该怎么理解Laxcus分布式操作系统?​答:你这个问题很大!以前大家都在问各种技术,现在有人开始探讨La

本地服务调用k8s环境中的springcloud微服务实战_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 下图是典型的微服务在Kubernetes环境的部署情况(简化版): 在开发阶段,如果服务B还在开发中,部署情况如下图所示: 此时的服务B如何才能访问到注册中心和服务A呢? 常规手段:通过service访问对应的pod 通常情况

k8s故障案例:calico无限重启_kiroct的博客-多极客编程

环境;高可用k8s集群连带N个work node节点。在以下命令的时候 kubectl get pod --all-namespaces -o wide | grep cal 发现pod重启达上百次。且状态是imagepullbackoff 下面使用以下命令可以看到readness、liveness探针失败,容器创建成功 kubectl describe pod -n (空间) (pod名称)

在windows电脑上配置kubectl远程操作kubernetes_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 Kubernetes集群经常部署在Linux环境,而本机环境经常是Windows,除了ssh登录到kubernetes所在机器进行操作,也可以在本机配置kubectl,来远程操作服务器上的kubernetes。 环境信息 kubern

基于 coredns 和 k8s 构建云原生场景下的企业级 dns_mb6220302e2eb41的博客-多极客编程

容器作为近些年最火热的后端技术,加快了很多企业的数字化转型进程。目前的企业,不是在使用云原生技术,就是在转向云原生技术的过程中。在容器化进程中,如何保持业务的平稳迁移,如何将现有的一些服务设施一并进行容器化迁移,也是众多企业较为关注的点。以 DNS 为例,如何构建一个云原生的企业 DNS 系统?CoreDNS 简介CoreDNS 是一个 Go 语言编写的灵活可扩展的 DNS 服务器,在 Kuber

干货分享|使用 istio 实现灰度发布_rainbond的博客-多极客编程

Kubernetes 作为基础平台,提供了强大的容器编排能力。但是在其上部署业务和服务治理上,仍然会面对一些复杂性和局限性。在服务治理上,已经有许多成熟的 ServiceMesh 框架用于扩充其能力,如 Istio、Linkerd、Dapr 等。本文将主要介绍如何使用 Istio 扩充 Kubernetes 灰度发布的能力。 而在部署上,则会利用开源项目 Rainbond 作为基础平台来进行实践。

本地服务调用k8s环境中的springcloud微服务实战_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 下图是典型的微服务在Kubernetes环境的部署情况(简化版): 在开发阶段,如果服务B还在开发中,部署情况如下图所示: 此时的服务B如何才能访问到注册中心和服务A呢? 常规手段:通过service访问对应的pod 通常情况

k8s故障案例:calico无限重启_kiroct的博客-多极客编程

环境;高可用k8s集群连带N个work node节点。在以下命令的时候 kubectl get pod --all-namespaces -o wide | grep cal 发现pod重启达上百次。且状态是imagepullbackoff 下面使用以下命令可以看到readness、liveness探针失败,容器创建成功 kubectl describe pod -n (空间) (pod名称)

linux安装minikube指南_github.com/zq2599的博客-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 在linux安装minikube时遇到两个问题,在此记录整个安装过程,希望能够给遇见同样问题的读者一些参考; 前提 本次部署实战需要先解决谷歌镜像的下载问题,请确保您的网络可以正常访问和下载这些资源; 环境信息 操作系统:CentOS Li